PythonでPDFを結合する(PyPDF2)

PythonでPDFを結合する(PyPDF2)
スポンサーリンク
スポンサーリンク

Pythonでは外部ライブラリを使用することで、複数のPDFファイルの結合、ページを抽出して結合、PDFファイルをページごとに複数のファイルに分割することができます。

ここでは業務効率化・自動化の事例として、Pythonで複数のPDFを結合する方法を解説します。

スポンサーリンク

使用ライブラリ

PythonでPDFファイルを操作するライブラリはPyMuPDF,PyPDF2,PDFminerなどがあります。
それぞれのライブラリで得意とする操作が異なるため使い分けていきます。
ライブラリ使い分けをまとめると以下のようになります。

PDFライブラリ比較

今回はPyPDF2を使用します。

ライブラリ :PyPDF2(公式ドキュメント
インストール:必要

ライブラリを利用するには、pipコマンドでPyPDF2ライブラリをインストールします。
・関連記事:Pythonライブラリのインストール(pipの使い方)

python -m pip install PyPDF2

Successfully installed ・・・・と表示されればインストールは成功です。(依存関係のある他のライブラリも同時にインストールされます。)

複数のPDFファイルを結合する

フォルダ内の複数のPDFファイルを結合する方法を解説します。

以下のようなディレクトリ構成を例にします。
Pythonスクリプトファイルと同じディレクトリに、複数のPDFファイルが保存されているフォルダが配置されているものとします。

ディレクトリ構成

1つのファイルは以下のように1ページのみのファイルになっています。

PDFファイル

これらの複数PDFファイルを結合して、Pythonスクリプトと同じディレクトリに、結合したPDFファイルを保存します。

結合したファイルの中身です。

結合結果


以下が複数のPDFファイルを結合して一つのPDFファイルとして保存するプログラムです。

プログラムのポイントを解説します。

1:ライブラリ設定

PyPDF2ライブラリを使用するためにインポートします。
またファイル一覧の取得を取得するためにglobモジュール, パスを取得・生成するためにosモジュールを呼び出します。
・関連記事:Pythonでディレクトリ名・ファイル名の一覧取得(os, globモジュール)

2:フォルダ内のPDFファイルを取得

ポイントを解説します。

path = os.getcwd() 

Pythonスクリプトを実行しているディレクトリをos.getcwd()で取得してpathに格納します。
getcwd() については以下の記事を参考にしてください。
・参考記事:Pythonでカレントディレクトリを取得・変更

filelist = glob.glob(path + ‘/経費精算書/*.pdf’)

glob.glob() で、ディレクトリ内のPDFファイルを全て取得して filelist にリストとして格納します。
・関連記事:Pythonでディレクトリ名・ファイル名の一覧取得(os, glob)

3:PDF結合オブジェクトの生成

PyPDF2の PdfFileManager クラスで結合オブジェクトを呼び出し merger に格納します。

4:PDFを1ファイルずつ結合

for file in filelist:

PDFファイル一覧のリストからfor文で一つずつ取り出して file に格納します。
・関連記事:繰り返し処理(for文)

merger.append(file)

PdfFileMergerクラスのappend()メソッドでリストから取り出した file を結合していきます。

5:オブジェクトを書き出し

merger.write() で、結合したPDFを指定したパス名で保存します。

最後に、merger.close() でオブジェクトを閉じます。


以上で、PythonでPDFファイルを結合する方法の解説は終了です

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

・関連記事:PythonでPDFを読み込む(PyMuPDF, PyPDF2, PDFminer)
・関連記事:PythonでPDFファイルを分割する(PyPDF2)
・関連記事:PythonでPDFのページサイズを取得(PyPDF2)
・関連記事:PythonでPDFのテキストを抽出する(PyMuPDF)
・関連記事:PythonでPDFファイルの画像を抽出する(PyMuPDF)