pdf2pptx プログラム仕様

概要:

PDFの各ページを画像としてPowerPointスライドに貼り込む変換モジュールです。

詳細説明:

convert.pyからインポートして使えるように、convert関数を公開しています。 必要ライブラリとして pymupdf と python-pptx が必要です。

主な機能:

単独実行例として python pdf2pptx.py input.pdf output.pptx や、 オプション付きで python pdf2pptx.py input.pdf output.pptx --dpi 250 のように実行可能です。

pdf2pptx.convert(input_path: str, output_path: str | None = None, **kwargs) → bool
概要:

外部スクリプトから呼ばれるためのラッパー関数です。

詳細説明:

キーワード引数 kwargs として、pdf_dpi や pdf_slide_size や pdf_margin や pdf_split_vertical_half などを受け付けます。

引数:
param input_path:

入力ファイルのパス

type input_path:

str

param output_path:

出力ファイルのパス

type output_path:

str または None

param kwargs:

オプション引数を格納する辞書

type kwargs:

dict

戻り値:
returns:

変換に成功した場合はTrue

rtype:

bool

pdf2pptx.convert_pdf_to_pptx(pdf_path: str | Path, pptx_path: str | Path, dpi: int = 200, slide_size: str = 'pdf', margin_inch: float = 0.0, split_vertical_half: bool = False, verbose: bool = True) → bool
概要:

PDFをPPTXへ変換する本体関数です。

引数:
param pdf_path:

入力PDFのファイルパス

type pdf_path:

str または pathlib.Path

param pptx_path:

出力PPTXのファイルパス

type pptx_path:

str または pathlib.Path

param dpi:

PDFを画像化するときの解像度

type dpi:

int

param slide_size:

PPTXのスライドサイズ指定文字列

type slide_size:

str

param margin_inch:

スライド内のインチ単位の余白

type margin_inch:

float

param split_vertical_half:

各PDFページを上半分と下半分に分けて2枚のスライドにする場合はTrue

type split_vertical_half:

bool

param verbose:

変換中の進捗メッセージを表示する場合はTrue

type verbose:

bool

戻り値:
returns:

変換に成功した場合はTrue

rtype:

bool

例外:
raises FileNotFoundError:

入力PDFファイルが見つからない場合に発生します。

raises ValueError:

入力ファイルがPDFでない場合やDPIが正の整数でない場合などに発生します。

pdf2pptx.fit_image_to_slide(img_w: int, img_h: int, slide_w: int, slide_h: int, margin: int = 0)
概要:

画像をスライド内にアスペクト比を保って収める位置とサイズを計算します。

詳細説明:

img_w と img_h はピクセル単位、slide_w と slide_h と margin は PowerPoint の EMU 単位として計算します。 戻り値の left と top と width と height も EMU 単位となります。

引数:
param img_w:

画像の幅

type img_w:

int

param img_h:

画像の高さ

type img_h:

int

param slide_w:

スライドの幅

type slide_w:

int

param slide_h:

スライドの高さ

type slide_h:

int

param margin:

スライドの余白

type margin:

int

戻り値:
returns:

left、top、width、heightのタプル

rtype:

tuple

例外:
raises ValueError:

選択されたスライドサイズに対してmarginが大きすぎる場合に発生します。

pdf2pptx.get_page_clips(page: Page, split_vertical_half: bool = False) → List[Tuple[Rect, str]]
概要:

1ページをそのまま使うか、上下2分割して使うかを決定して矩形のリストを返します。

詳細説明:

split_vertical_half が True の場合、戻り値は上半分と下半分の矩形およびそれぞれの名称のタプルになります。

引数:
param page:

対象のPDFページオブジェクト

type page:

fitz.Page

param split_vertical_half:

上下2分割するかどうかを指定するフラグ

type split_vertical_half:

bool

戻り値:
returns:

矩形オブジェクトと名称のタプルのリスト

rtype:

list

pdf2pptx.main() → int
概要:

コマンドラインからの実行時のメイン処理を行います。

戻り値:
returns:

終了コード

rtype:

int

pdf2pptx.parse_args()
概要:

コマンドライン引数をパースします。

戻り値:
returns:

パースされたコマンドライン引数を格納したオブジェクト

rtype:

argparse.Namespace

pdf2pptx.set_slide_size(prs: Presentation, pdf_doc: Document, slide_size: str = 'pdf', split_vertical_half: bool = False)
概要:

Presentationのスライドサイズを設定します。

詳細説明:

指定された slide_size に応じてサイズを設定し、縦長PDFを上下半分に分割する場合はスライド高さも半分に調整します。

引数:
param prs:

PowerPointのPresentationオブジェクト

type prs:

pptx.presentation.Presentation

param pdf_doc:

PyMuPDFのDocumentオブジェクト

type pdf_doc:

fitz.Document

param slide_size:

スライドサイズを指定する文字列

type slide_size:

str

param split_vertical_half:

縦長PDFを上下半分に分割する場合はTrue

type split_vertical_half:

bool

戻り値:
returns:

なし

rtype:

None

例外:
raises ValueError:

不明なslide_sizeが指定された場合に発生します。