この記事は何
pythonコード内部にてpptx(パワーポイント)をpdfに変換し、vscode上でpdfの内容を閲覧したい。方針はLibreOfficeでpdfを作成し、VSCodeの拡張を使ってpdfを閲覧することにして、 その際に調べたことをメモ。
VSCodeの拡張機能
「vscode-pdf」にて、pdfをVSCode内部で開けるようになる。ついでにMarkdownからpdfを作成する拡張「Markdown PDF」もインストールする
LibreOffice
上記からLibleOfficeをインストールして、以下のコマンドを実行する。
/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --nologo --nofirststartwizard --convert-to pdf --outdir {出力先ディレクトリ} {pdf} に変換するpptxファイルのパス}
例えばカレントディレクトリにsample.pptxをpdfにしたものを出力するときは /Applications/LibreOffice.app/Contents/MacOS/soffice --headless --nologo --nofirststartwizard --convert-to pdf --outdir ./ sample.pptx
などになる。各オプションの意味については /Applications/LibreOffice.app/Contents/MacOS/soffice --help
から参照できる。ドキュメントについては「ドキュメント | LibreOffice Documentation - Your documentation for LibreOffice」参照。
python subprocess
subprocess --- サブプロセス管理 — Python 3.9.2rc1 ドキュメント
subprocess モジュールは新しいプロセスの開始、入力/出力/エラーパイプの接続、リターンコードの取得を可能とします。
subprocessでコマンドを実行する。以下の例はpython3.8.5にて、パワーポイント保存先と同じ階層にパワーポイントと同じ名前のpdfを出力する。
import os import subprocess libre_path = "/Applications/LibreOffice.app/Contents/MacOS/soffice" pptx_save_path = "./output/sample.pptx" if os.path.exists(pptx_save_path): output_dir = os.path.dirname(pptx_save_path) command = f"{libre_path} --headless --nologo --nofirststartwizard --convert-to pdf --outdir {output_dir} {pptx_save_path}".split( " ") subprocess.run(command)