converter.pptx2pdf のソースコード

"""
PowerPoint (.pptx) ファイルをPDF形式に変換するスクリプトです。

このスクリプトはWindows環境にインストールされたMicrosoft PowerPointアプリケーションと
comtypesライブラリを使用して、PowerPointプレゼンテーションをPDFファイルとして保存します。
スクリプトを直接実行する場合、コマンドライン引数として入力PowerPointファイルのパスを渡すことで、
そのファイルをPDFに変換します。出力パスが指定されない場合、入力ファイル名から自動的に決定されます。

:doc:`pptx2pdf_usage`
"""
import os

try:
    import comtypes.client
except Exception:
    print("\npptx2pdf.py: Import error: comtypes.client")
    input("Install: pip install comtypes\n")


[ドキュメント] def pptx_to_pdf(input_path, output_path=None): """ 指定されたPowerPointファイルをPDF形式に変換します。 この関数はMicrosoft PowerPointアプリケーションをCOMオートメーション経由で操作し、 指定されたPowerPointプレゼンテーションを開き、PDF形式で保存します。 変換が成功した場合は出力PDFファイルのパスを返し、失敗した場合はNoneを返します。 PowerPointアプリケーションは処理完了後、またはエラー発生時に終了されます。 出力パスが指定されない場合、入力ファイルと同じディレクトリに同じファイル名(拡張子のみ.pdf)で PDFファイルが作成されます。 :param input_path: 変換するPowerPointファイルのパス(例: "C:/path/to/document.pptx")。 :type input_path: str :param output_path: 出力するPDFファイルのパス(例: "C:/path/to/output.pdf")。 指定しない場合、入力パスの拡張子を.pdfに変更したパスが自動的に使用されます。 :type output_path: str, optional :returns: 変換が成功した場合、出力されたPDFファイルの絶対パス。失敗した場合はNone。 :rtype: str or None """ powerpoint = comtypes.client.CreateObject("PowerPoint.Application") powerpoint.Visible = 1 input_path = os.path.abspath(input_path) if output_path is None: output_path = os.path.splitext(input_path)[0] + ".pdf" else: output_path = os.path.abspath(output_path) print(f" Attempting to open PowerPoint file: '{input_path}'") presentation = None try: presentation = powerpoint.Presentations.Open(input_path, WithWindow=False) presentation.SaveAs(output_path, 32) presentation.Close() print(f" Successfully converted to PDF: '{output_path}'") return output_path except Exception as e: print(f" Error converting '{input_path}' to PDF: {e}") if presentation is not None: try: presentation.Close() except Exception: pass return None finally: powerpoint.Quit()
if __name__ == "__main__": import sys input_path = sys.argv[1] if len(sys.argv) > 1 else None output_path = sys.argv[2] if len(sys.argv) > 2 else None if not input_path: print("Usage: python pptx2pdf.py input.pptx [output.pdf]") input("\nPress ENTER to terminate>>\n") raise SystemExit(1) pptx_to_pdf(input_path, output_path) print("\nProgram execution completed.") input("\nPress ENTER to terminate>>\n")