Pythonでは外部ライブラリを使用することで、複数のPDFファイルの結合、ページを抽出して結合、PDFファイルをページごとに複数のファイルに分割することができます。
ここでは業務効率化・自動化の事例として、Pythonで複数のPDFを結合する方法を解説します。
使用ライブラリ
PythonでPDFファイルを操作するライブラリはPyMuPDF
,PyPDF2
,PDFminer
などがあります。
それぞれのライブラリで得意とする操作が異なるため使い分けていきます。
ライブラリ使い分けをまとめると以下のようになります。
今回はPyPDF2
を使用します。
インストール:必要
ライブラリを利用するには、pip
コマンドでPyPDF2
ライブラリをインストールします。
・関連記事:Pythonライブラリのインストール(pipの使い方)
Successfully installed ・・・・と表示されればインストールは成功です。(依存関係のある他のライブラリも同時にインストールされます。)
複数のPDFファイルを結合する
フォルダ内の複数のPDFファイルを結合する方法を解説します。
以下のようなディレクトリ構成を例にします。
Pythonスクリプトファイルと同じディレクトリに、複数のPDFファイルが保存されているフォルダが配置されているものとします。
1つのファイルは以下のように1ページのみのファイルになっています。
これらの複数PDFファイルを結合して、Pythonスクリプトと同じディレクトリに、結合したPDFファイルを保存します。
結合したファイルの中身です。
以下が複数のPDFファイルを結合して一つのPDFファイルとして保存するプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 1: ライブラリ設定 import PyPDF2 import glob import os # 2: フォルダ内のPDFファイルを取得 path = os.getcwd() filelist = glob.glob(path + '/経費精算書/*.pdf') # 3: PDF結合オブジェクトの生成 merger = PyPDF2.PdfFileMerger() # 4: PDFを1ファイルずつ結合 for file in filelist: merger.append(file) # 5: オブジェクトを書き出し merger.write(os.path.join(path, '経費精算書_結合.pdf')) merger.close() |
プログラムのポイントを解説します。
1:ライブラリ設定
1 2 3 4 | # 1: ライブラリ設定 import PyPDF2 import glob import os |
PyPDF2ライブラリを使用するためにインポートします。
またファイル一覧の取得を取得するためにglobモジュール, パスを取得・生成するためにosモジュールを呼び出します。
・関連記事:Pythonでディレクトリ名・ファイル名の一覧取得(os, globモジュール)
2:フォルダ内のPDFファイルを取得
1 2 3 | # 2: フォルダ内のPDFファイルを取得 path = os.getcwd() filelist = glob.glob(path + '/経費精算書/*.pdf') |
ポイントを解説します。
Pythonスクリプトを実行しているディレクトリをos.getcwd()
で取得してpath
に格納します。getcwd()
については以下の記事を参考にしてください。
・参考記事:Pythonでカレントディレクトリを取得・変更
glob.glob()
で、ディレクトリ内のPDFファイルを全て取得して filelist
にリストとして格納します。
・関連記事:Pythonでディレクトリ名・ファイル名の一覧取得(os, glob)
3:PDF結合オブジェクトの生成
1 2 | # 3: PDF結合オブジェクトの生成 merger = PyPDF2.PdfFileMerger() |
PyPDF2の PdfFileManager
クラスで結合オブジェクトを呼び出し merger
に格納します。
4:PDFを1ファイルずつ結合
1 2 3 | # 4: PDFを1ファイルずつ結合 for file in filelist: merger.append(file) |
PDFファイル一覧のリストからfor
文で一つずつ取り出して file
に格納します。
・関連記事:繰り返し処理(for文)
PdfFileMerger
クラスのappend()
メソッドでリストから取り出した file
を結合していきます。
5:オブジェクトを書き出し
1 2 3 | # 5: オブジェクトを書き出し merger.write(os.path.join(path, '経費精算書_結合.pdf')) merger.close() |
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)