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.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が指定された場合に発生します。