PythonでPDFを結合する方法

IT・プログラミング

今回は、PythonでPDFを結合する方法を紹介します。pypdfライブラリを使うことで、簡単にPDFを結合できます。

インストール

pypdfは以下のコマンドでインストールできます。

pip install pypdf

以下のサンプルコードでは、pypdfのバージョン3.7.1を使用しています。以前はPyPDF2として知られていましたが、2023年にpypdfに改名されました。

複数のPDFファイルの結合

基本的な結合

複数のPDFファイルを順番に結合するには、PdfMergerクラスを使います。以下の手順でPDFを結合します。

  1. PdfMergerオブジェクトを作成
  2. append()メソッドで結合するPDFを追加
  3. write()メソッドで出力ファイルに保存
  4. 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を使用

単一ページの抽出と結合には、PdfReaderPdfWriterを使う方法もあります。

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の結合やページの選択ができます。結合方法や挿入位置、特定のページのみを選択する方法など、用途に応じて柔軟に対応できるので、ぜひ活用してみてください。

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