PythonでPowerpointファイル(pptx)をPDFに変換する

PythonでPowerpointファイルをPDFに変換する
スポンサーリンク
スポンサーリンク

業務効率化・自動化の事例として、Powerpoint(パワーポイント)ファイルをPDFに変換する方法を解説します。Pythonスクリプトを動作させるPCにPowerpointアプリケーションがインストールされている必要があります。

スポンサーリンク

使用ライブラリ・モジュール

PythonでWindowsアプリケーションを扱うにはWindowsAPIへアクセスするためのライブラリpywin32を使用します。またpywin32ではファイルパスをWindowsPath型で指定する必要があるため、pathlibモジュールを使用します。
Powerpointファイルのページ削除などの操作を行うためにpython-pptx使用します。

ライブラリ :pywin32(公式ドキュメント
インストール:必要
ライブラリ :pathlib (公式ドキュメント
インストール:不要
モジュール :python-pptx(公式ドキュメント
インストール:必要(一部ページのみをPDF変換する場合)

インストール

pipコマンドで pywin32python-pptxライブラリをインストールします。
・関連記事:Pythonライブラリのインストール(pipの使い方)

python -m pip install pywin32 python-pptx

Successfully installed ・・・・と表示されればインストールは成功です。(依存関係のある他のライブラリも同時にインストールされます。)
Python-pptx, pywin32は Python3.9.*以下でしか動作しないようです。(2022年1月1日時点)

PowerpointファイルをPDFに変換する

Powerpointファイル全てのページをPDFに変換する方法を解説します。
PythonでPowerpointファイルを扱うためのライブラリPython-pptxは、PDFを出力する機能を持っていないため、pywin32でPowerpointアプリケーションを操作することで実現します。


以下のコードはsample.pptx をsample.pdfに変換するサンプルです。

SaveAs()の第二引数で指定するfiletypeは定数で32=ppSaveAsPDFを意味しています。
filetypeの詳細はMicrosoft公式ドキュメント(PpSaveAsFileType 列挙 (PowerPoint))のページを参照してください。

ファイルパス指定で使用しているpathlibモジュールの使い方については、以下の記事を参考にしてください。
参考記事:【Python入門】pathlibの使い方(パス操作)

Powerpointの1ページのみをPDFに変換する

スライドの1ページ目のみを抽出してPDFに変換する方法を解説します。以下のようなファイルを例とします。

sample.pptx
 ├── p1
 ├── p2 –>削除
 ├── p3 –>削除
 └── p4 –>削除

1ページ目のみを変換したい場合は、1ページ以外のページを削除してPDFとして保存します。ページを削除する際にPythonでPowerpointファイルの操作をするためのライブラリpython-pptxを使用します。
スライドのページを指定するインデックス番号は0から始まるため、スライド1ページ目がインデックス番号0となります。

フォルダ内の全てのPowerpointファイルをPDFに変換する

以下のディレクトリ構成を例として、特定のディレクトリ内の全てのPowerpointファイルをPDFに変換する方法を解説します。

C:\test
 ├── sample1.pptx
 ├── sample2.pptx
 └── sample3.pptx

glob.glob関数を使用し指定ディレクトリ内の対象ファイルリストを取得して、そのリストをfor文でループして1ページ目のみを変換する処理を繰り返します。
・関連記事:Pythonでディレクトリ名(フォルダ名)・ファイル名の一覧取得(os, glob)

PythonでPowerpointファイルをPDFに変換する方法を解説しました。

PDFファイルの操作については以下の記事も参考にしてみてください。

・関連記事:PythonでPowerpointファイル(pptx)を画像に変換する
・関連記事:PythonでPDFファイルを結合する(PyPDF2)
・関連記事:PythonでPDFファイルを分割する(PyPDF2)
・関連記事:PythonでPDFのページサイズを取得(PyPDF2)