今回は、PythonでPDFを結合する方法を紹介します。pypdf
ライブラリを使うことで、簡単にPDFを結合できます。
インストール
pypdf
は以下のコマンドでインストールできます。
pip install pypdf
以下のサンプルコードでは、pypdf
のバージョン3.7.1を使用しています。以前はPyPDF2
として知られていましたが、2023年にpypdf
に改名されました。
複数のPDFファイルの結合
基本的な結合
複数のPDFファイルを順番に結合するには、PdfMerger
クラスを使います。以下の手順でPDFを結合します。
PdfMerger
オブジェクトを作成append()
メソッドで結合するPDFを追加write()
メソッドで出力ファイルに保存close()
メソッドでリソースを解放
import pypdf
merger = pypdf.PdfMerger()
merger.append('sample1.pdf')
merger.append('sample2.pdf')
merger.append('sample3.pdf')
merger.write('merged_document.pdf')
merger.close()
特定の位置に挿入
PDFを特定の位置に挿入するには、merge()
メソッドを使用します。以下の例では、指定したページ位置にPDFを挿入しています。
merger = pypdf.PdfMerger()
merger.append('sample1.pdf')
merger.merge(3, 'sample2.pdf')
merger.merge(4, 'sample3.pdf')
merger.write('inserted_document.pdf')
merger.close()
ページを選択して結合
特定のページだけを結合するには、append()
やmerge()
メソッドのpages
引数を使います。ページ範囲はタプルやPageRange
オブジェクトで指定できます。
タプルでページ指定
merger = pypdf.PdfMerger()
merger.append('sample1.pdf', pages=(0, 1))
merger.append('sample2.pdf', pages=(2, 4))
merger.merge(2, 'sample3.pdf', pages=(0, 3, 2))
merger.write('selected_pages.pdf')
merger.close()
PageRangeオブジェクトでページ指定
merger = pypdf.PdfMerger()
merger.append('sample1.pdf', pages=pypdf.PageRange('-1'))
merger.append('sample2.pdf', pages=pypdf.PageRange('2:'))
merger.merge(2, 'sample3.pdf', pages=pypdf.PageRange('::-1'))
merger.write('pagerange_selected.pdf')
merger.close()
PdfReaderとPdfWriterを使用
単一ページの抽出と結合には、PdfReader
とPdfWriter
を使う方法もあります。
reader1 = pypdf.PdfReader('sample1.pdf')
reader2 = pypdf.PdfReader('sample2.pdf')
writer = pypdf.PdfWriter()
writer.add_page(reader1.pages[0])
writer.add_page(reader2.pages[2])
writer.write('combined_single_pages.pdf')
まとめ
pypdf
ライブラリを使えば、Pythonで簡単にPDFの結合やページの選択ができます。結合方法や挿入位置、特定のページのみを選択する方法など、用途に応じて柔軟に対応できるので、ぜひ活用してみてください。