【PDF操作】複数のPDFファイルを結合する・特定のページだけを抽出して保存する

pythonではPDFファイルを操作することも可能です。ここではどんな操作が可能か、コードと併せて紹介します。

 

目次
  1. PDF編集の仕組み
  2. PDFの結合
  3. PDFの分割
  4. 終わりに

 

1.PDF編集の仕組み

PDFを編集するうえで行っていることはザックリ言うと内容の抽出と白紙のPDFへの書き込みです。

この方法で抽出した内容を1ページごとに書き込む(結合)、抽出する範囲を指定して書き込む(分割)、抽出した内容を他の形式ファイルに書き込む(転記)ことをしています。

 

2.PDFの結合

ではさっそくPDFの結合をやってみましょう。まずはPDFを操作するのに必要なライブラリをインストールします。

pip install pypdf

無事にインストールが完了したら次のプログラムを実行します。

import pypdf
#抽出した内容を格納する変数作成
merger = pypdf.PdfWriter()
#merger.append(ファイル指定)で変数mergerに抽出内容の格納
merger.append('C:/Users/1/Desktop/python/PDF/ファイル①.pdf')
merger.append('C:/Users/1/Desktop/python/PDF/ファイル②.pdf')
#merger.write(保存するファイル名) でファイルに名前を付けて抽出データ書き込み
merger.write('C:/Users/1/Desktop/python/PDF/結合ファイル.pdf')
merger.close()

プログラムを実行してエラーが起こらなかったら意図通りにできているか確認してください。上記のプログラムだと「ファイル①」と「ファイル②」が結合した「結合ファイル」ができます。

3.PDFの分割

PDFの分割は複数ページあるPDFの指定のページ内容を抽出して白紙のPDFに書き出します。コードの書き方は先ほど内容を抽出する際に使った「merger.append」の最後に抽出範囲を加えるだけです。ただし、抽出範囲の書き方に注意してください。

import pypdf
#抽出した内容を格納する変数作成
merger1 = pypdf.PdfWriter()
merger2 = pypdf.PdfWriter()
#merger.appendの後ろに「抽出範囲-1」を追加
merger1.append('C:/Users/1/Desktop/python/PDF/分割用ファイル.pdf', pages=(0,1))
merger2.append('C:/Users/1/Desktop/python/PDF/分割用ファイル.pdf', pages=(1,2))
#merger.write(保存するファイル名) でファイルに名前を付けて抽出データ書き込み
merger1.write('C:/Users/1/Desktop/python/PDF/分割ファイル①.pdf')
merger2.write('C:/Users/1/Desktop/python/PDF/分割ファイル②.pdf')
merger1.close()
merger2.close()

このコードでは「分割用ファイル.pdf」をmerger1で1ページ目を、merger2で2ページ目を抽出しています。1ページ単位でなくても、pages=(1,4)で2,3,4ページ、pages=(2,4)で3,4ページと複数ページの抽出もできます。

ややこしいですが分割して抽出するには、pages=(“開始ページ -1 “, “終了ページ”)と指定する必要があります。

4.終わりに

PDFの結合・分割について紹介しました。今回はファイルの保存先までコード内に書いたのでファイルを選ぶために毎回書き換えが必要ですが、Tkinterなどでファイル選択をできるようにすると使い勝手が良くなるので、今後応用編として紹介しようと思います。

Comments

コメントを残す