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ファイルとして保存する方法は知っておいても損はないかと思います。



コメント