【Python】複数ファイルのPDFを1つに結合する方法|PyPDF2の使い方

【Python】複数ファイルのPDFを1つに結合する方法|PyPDF2の使い方 Python

複数のPDFファイルを1つにまとめたいという場面は、日報や請求書、契約書などの業務でよく発生します。Pythonのライブラリ「PyPDF2」を使えば、手軽にPDFを結合することが可能です。

この記事では、PyPDF2を用いて複数のPDFファイルを1つにまとめるスクリプトの作成方法を解説します。

事前準備

まずはPyPDF2をインストールします。最新版を使う場合は以下のコマンドを実行してください。

pip install PyPDF2

基本スクリプト:複数のPDFを1つに結合

from PyPDF2 import PdfMerger
import os

# PDFファイルを結合する関数
def merge_pdfs(pdf_list, output_path):
    merger = PdfMerger()
    for pdf in pdf_list:
        merger.append(pdf)
    merger.write(output_path)
    merger.close()

# 対象のPDFファイルリスト(順番に注意)
pdf_files = [
    "invoice_01.pdf",
    "invoice_02.pdf",
    "invoice_03.pdf"
]

# 出力ファイル名
output_file = "merged_invoices.pdf"

merge_pdfs(pdf_files, output_file)
print("PDFを結合しました:", output_file)

フォルダ内のPDFを自動的に取得して結合する

def get_pdf_files(folder):
    return sorted([
        os.path.join(folder, f)
        for f in os.listdir(folder)
        if f.endswith(".pdf")
    ])

folder_path = "./pdfs"
pdf_list = get_pdf_files(folder_path)
merge_pdfs(pdf_list, "all_merged.pdf")

ファイル名でソートしておくことで、結合順を安定させることができます。

注意点と補足

  • PyPDF2は暗号化されたPDFの結合には非対応です(パスワード解除が必要)
  • 元PDFに注釈やフォームが含まれている場合、形式が一部失われることがあります
  • 新しいPyPDF2(v3.0以降)では PdfFileMergerPdfMerger に名称変更されているため注意

応用:GUI対応やドラッグ&ドロップ

複数ファイルを選択して結合したい場合、TkinterやPyQtを使ったGUI化も可能です。また、PDFを結合後、自動で開く処理やファイル名にタイムスタンプを付けるなどの拡張もできます。

まとめ

PyPDF2を使えば、PythonでPDFファイルを簡単に結合できます。定型レポートの一括処理や、スキャン書類の整理など、日常業務の自動化に役立つシーンは多くあります。

ファイル名の命名ルールや処理順序を工夫することで、より正確で効率的なPDF管理が実現できます。ぜひ業務に取り入れてみてください。