PDFファイルをPythonで扱いたい【最終:複数のPDFファイルを結合する】

スポンサーリンク

Pythonで複数のPDFファイルを結合する方法

pythonで複数のPDFファイルを結合するには、すべてのPDFファイルを取得したあと、PDFファイルのリストをfor文で回してPDFファイルを読み込みます。読み込んだPDFファイルは1ページずつwriterオブジェクトに追加していきます。PDFオブジェクトの流れに関しては以下の記事を参考にしてください↓

スポンサーリンク

PyPDF2を使って複数のPDFファイルを結合するコード

結合と書いてますが、実際にはpdfファイルをwriterオブジェクトに格納してそれを新しいpdfファイルとして保存しているだけです。以下のコードは指定のディレクトリに含まれる全てのpdfファイルを取得したあとそれを結合して新たなpdfファイルとして保存するコードです。

import PyPDF2, os

# カレントディレクトリを設定(必要に応じてコメントを解除して適切なディレクトリに設定してください)
# os.chdir('/path/to/your/directory')

pdf_files = []
pdf_writer = PyPDF2.PdfFileWriter()

# カレントディレクトリ内のすべてのPDFファイルをリストに追加する
for filename in os.listdir():
    if filename.endswith('.pdf'):
        pdf_files.append(filename)

# 全てのPDFファイルをループで回す
for filename in pdf_files:
    pdf_file_obj = open(filename, 'rb')
    pdf_reader = PyPDF2.PdfFileReader(pdf_file_obj)

    # ページを追加する
    for page_num in range(1, pdf_reader.numPages):
        page_obj = pdf_reader.getPage(page_num)
        pdf_writer.addPage(page_obj)
 
# 結合したPDFファイルの保存
pdf_output = open('mixpdf.pdf', 'wb')
pdf_writer.write(pdf_output)
pdf_output.close()

コードの解説

  • pdf_files リストは、カレントディレクトリ内のすべてのPDFファイル名を格納するための空のリストです。
  • pdf_writer は、結合したPDFファイルを書き込むための PdfFileWriter オブジェクトです。
  • os.listdir() は、カレントディレクトリ内のすべてのファイル名を含むリストを返します。
  • 最初のループでは、カレントディレクトリ内のファイルをループし、.pdf で終わるファイルを pdf_files リストに追加します。
  • 2つ目のループでは、pdf_files リストに含まれる各PDFファイルを開き、2ページ目から最後のページまでを pdf_writer に追加します。
  • 最後の部分では、pdf_output という名前の新しいPDFファイルを作成し、pdf_writer の内容を書き込んで保存しています。

まとめ

今回紹介したコードは、あんまり現場では使わないと思いますが、全てのPDFファイルを結合して1つのPDFファイルとして保存する方法は知っておいても損はないかと思います。

コメント

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