pdf2pptx.py ドキュメント

概要

PDFファイルの各ページを画像化し、PowerPoint (PPTX) のスライドとして貼り付けるための変換プログラムです。コマンドラインツールとしての単独実行と、他のPythonスクリプトからのモジュールとしてのインポートの両方に対応しています。

動作原理

本プログラムは画像処理およびファイル形式の変換を行うユーティリティツールであり、複雑な数学的計算や物理シミュレーションは含まれていません。処理の大まかな流れは以下の通りです。

  • 指定されたPDFファイルを読み込みます。

  • 各ページを指定された解像度 (DPI) で画像としてメモリ上に展開します。

  • コマンドライン引数や関数引数の指定に応じて、ページをそのまま使用するか、上下に2分割して個別の画像とします。

  • 指定されたスライドサイズに設定されたPowerPointプレゼンテーションオブジェクトを作成します。

  • 生成した画像を、指定された余白を保ちつつアスペクト比を維持してスライドの中央に配置し、PPTXファイルとして保存します。

依存関係

コードの import 文から、以下の非標準ライブラリに依存していることが確認できます。

  • pymupdf (コード内では fitz としてインポートされています)

  • python-pptx (コード内では pptx としてインポートされています)

入出力仕様

コードベースで確認できる入出力の仕様は以下の通りです。

  • 入力

    • 有効なPDFファイル (拡張子が .pdf のもの)。

  • 出力

    • 変換後のPowerPointファイル (拡張子が .pptx のもの)。

    • 出力パスを省略した場合、入力ファイルと同じディレクトリに同じベース名で拡張子を変更して作成されます。

  • 主なオプションパラメータ

    • --dpi : PDFを画像化する際の解像度を指定します(デフォルト値は 200 )。

    • --slide-size : 出力するPPTXのスライドサイズを指定します。 pdf (PDFのページサイズに合わせる)、 wide (16:9)、 standard (4:3)のいずれかから選択可能です。

    • --margin : スライド内に設ける余白のサイズをインチ単位で指定します(デフォルト値は 0.0 )。

    • --split-vertical-half : 縦長のPDFページを上下半分に分割し、2枚の独立したスライドとして出力するフラグです。

    • --quiet : 変換中の進捗メッセージ出力を抑制するフラグです。

    • --pause : 処理終了前にターミナルを一時停止させるフラグです。

実行例

コマンドラインからツールとして実行する場合の例を以下に示します。

# 基本的な実行方法(出力ファイル名は自動的に入力ファイルと同名になります)
python pdf2pptx.py input.pdf

# 出力ファイル名とDPIを明示的に指定して実行
python pdf2pptx.py input.pdf output.pptx --dpi 250

# スライドサイズを 16:9 のワイドに設定し、余白を設ける
python pdf2pptx.py input.pdf output.pptx --slide-size wide --margin 0.5

# 縦長のPDFを上下に分割してスライド化し、進捗メッセージを非表示にする
python pdf2pptx.py input.pdf output.pptx --split-vertical-half --quiet

他のPythonスクリプトからモジュールとしてインポートし、関数として呼び出す場合の例を以下に示します。

from pdf2pptx import convert

# ラッパー関数を利用して変換を実行
convert(
    input_path="input.pdf",
    output_path="output.pptx",
    pdf_dpi=300,
    pdf_slide_size="standard",
    pdf_split_vertical_half=True
)