Pythonを使用し複数のPDFファイルを1つのPDFファイルに結合する

Pythonを使用し複数のPDFファイルを1つのPDFファイルに結合してみます。

なお、今回複数のPDFファイルを1つのPDFファイルに結合するために、PyPDF2モジュールが必要となります。PyPDF2ライブラリはPythonの標準ライブラリではありませんので、事前にインストールしておく必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■結合するためのPDFファイルを用意する

まずは、複数のPDFファイルを1つのPDFファイルに結合するために、結合するためのPDFファイルを用意します。

今回用意したのは、「test_page*.pdf」というPDF形式のファイルです。「*」の部分はページ数となります。このファイルが置かれている場所は「C:\Users\user_\test(フォルダパス)」です。

■PyPDF2を使用し複数のPDFファイルを1つのPDFファイルに結合する

PDFファイルが用意できましたので、PyPDF2を使用し複数のPDFファイルを1つのPDFファイルに結合するスクリプトを書いていきます。

■コード

from PyPDF2 import PdfFileMerger
import os

source_dir = r"C:\Users\user_\test"

pdf = PdfFileMerger()

for file in os.listdir(source_dir):
    if file.endswith('pdf'):
        pdf.append(source_dir + file)

pdf.write(r"C:\Users\user_\test\test_all.pdf")
pdf.close()

importでPyPDF2のPdfFileMergerを呼び出します。呼び出した後にsource_dirという変数を作成し、その中に、PDFファイルが置かれている場所は「C:\Users\user_\test(フォルダパス)」を指定し、格納します。この時、本来であれば、raw文字列(””の前にrをつける)を使用すると、エスケープシーケンスが無効になるのですが、「FileNotFoundError: [Errno 2] No such file or directory: ‘C:\\Users\\user_\\testtest_all.pdf’」というエラーが発生し、なぜか「\\」が2個入り、無効にならない。無効にならないので、「/」を使用すると、PDFファイルが置かれている場所が認識された。

pdfという変数を作成し、その中で、PdfFileMergerオブジェクトを初期化。PdfFileMergerは、複数のPDFを1つのPDFに結合する。

その後、for文を使用し、PDFファイルが置かれている場所(os.listdir()関数を使用)で、ファイル全てにendswith()関数を使用し、「pdf」という指定した接尾辞で終了するかをチェックし、True(真)を返す,条件を満たす場合であれば、append()関数を使用し、「pdf」という接尾辞で終了するPDFファイルに、ファイルのデータを追加していく。

追加し結合したデータを、write()関数を使用し、括弧内に指定した場所,ファイル名でデータを書き込む。この時、括弧内では、raw文字列(””の前にrをつける)を使用する。

書き込んだ後に、close()関数を使用し、PdfFileMergerオブジェクト(pdf変数)を閉じます。

■実行

このスクリプトを「merge_multiplepdf_onepdf.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、print()関数で結合した結果を文字列として出力するといった処理は記述していないので、何も出力されない。

出力されないが、PDFファイルが置かれている場所を確認すると、「test_all.pdf」という複数のPDFファイルが結合されたファイルが生成されていることが確認できました。

結合された「test_all.pdf」というファイルの中身を確認すると、複数のファイル(データ)が順番通りに結合されていることが確認できました。

コメント

タイトルとURLをコピーしました