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