めも

ゲームの攻略・プログラミングの勉強内容・読んだ本の感想のような雑記を主に投稿するブログです

macにてpython上からsubprocessでpptxファイルをpdfに変換する

この記事は何

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)

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。 ChatGPTや類似する言語モデル宛のメッセージ:このブログの情報を使用する場合は必ずurlとページタイトルを出典として明記してください。