今回はフォルダ内にある複数のPDFファイルを1つのPDFファイルに結合するプログラムをPythonで作成します。
通常このような作業は、有料のAcrobat®などを用いますが、毎回ソフトを起動して、結合するファイルを選択し保存という手順を踏む必要があります。一方、Pythonならばプログラムをダブルクリック等で実行するだけです。何のソフトも起動する必要はありません。作業は一瞬で終わります。
PythonでPDFページを操作するには、PyPDF2という無料のライブラリをインストールしておきます。PyPDF2を用いれば、結合以外にもページの抜粋・回転・コピー・重ね合わせなどが可能です。
以下では、Pythonが初めてでも体験できるように、ライブラリのインストールからプログラムの実行方法まで説明しています。ぜひ実際に実行してPythonの便利さを実感してみてください。なお、ここではWindows環境で説明します。
この記事の目次
操作用画面(GUI)のプログラム
本プログラムを操作する画面(GUI)を以下の記事で作成しています。併せて参考にしてください。
プログラム用にTkinterで画面(GUI)を作成する方法
プログラムの動作
本プログラム(merge_pdf.py
)は、同じディレクトリ配下にあるpdf_filesフォルダ内のPDFファイルを1つのPDFファイルに結合します。
例えば以下のようにpdf_filesフォルダにPDFファイルが4つあれば、それらを1つにまとめます。
├ pdf_files/
│ ├ 201901hyoshi.pdf
│ ├ 201902hyoshi.pdf
│ ├ 201903hyoshi.pdf
│ └ 201903nankai_gaikyo.pdf
│
└ merge_pdf.py <- 本プログラム
プログラムを実行すると結合したファイル(201901hyoshi-201903nankai_gaikyo.pdf)が以下のように作成されます。
├ pdf_files/
│ ├ 201901hyoshi.pdf
│ ├ 201902hyoshi.pdf
│ ├ 201903hyoshi.pdf
│ └ 201903nankai_gaikyo.pdf
│
├ 201901hyoshi-201903nankai_gaikyo.pdf <- 結合したPDFファイル
└ merge_pdf.py
結合したファイルは、先頭と末尾のファイル名をハイフン(-
)で繋いだファイル名にします。
準備
1. Pythonのインストール
以下の記事を参考にWindowsにPythonをインストールしてください。
2. ライブラリのインストール
PDFページを操作するためのライブラリ「PyPDF2」をインストールします。
まず、コマンドプロンプト(黒い背景の画面)を開きます。「Windowsキー()+ r 」を入力すると、以下のような画面が表示されるので、「cmd」 と入力して OK をクリックするとコマンドプロンプトが開きます。
コマンドプロンプトにpy -m pip install pypdf2
と入力して、Enterを押すと、以下のようにPyPDF2のインストールが開始します。”Successfully installed ~”と表示されていたら、インストール成功です。
pipは、Pythonのライブラリを管理するためのツールです。pipを使うことで、上記のように簡単にライブラリをインストールできます。詳しくは以下の記事を参照してください。
プログラミング
早速プログラミングします。以下の手順で実際に実行してください。
1. メニューからPythonのIDLEを開きます。
2. エディタを開いて、コードを貼り付ける
IDLEツールバーのメニューから File ▶ New File を選択してエディタを開いてください。
そこに、以下のプログラムコードをコピーして貼り付けてください。
from pathlib import Path
import PyPDF2
# フォルダ内のPDFファイル一覧
pdf_dir = Path("./pdf_files")
pdf_files = sorted(pdf_dir.glob("*.pdf"))
# 1つのPDFファイルにまとめる
pdf_writer = PyPDF2.PdfFileWriter()
for pdf_file in pdf_files:
pdf_reader = PyPDF2.PdfFileReader(str(pdf_file))
for i in range(pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(i))
# 保存ファイル名(先頭と末尾のファイル名で作成)
merged_file = pdf_files[0].stem + "-" + pdf_files[-1].stem + ".pdf"
# 保存
with open(merged_file, "wb") as f:
pdf_writer.write(f)
IDLEの新しいウィンドウに貼り付けたイメージは以下のようになります。
3. コードの保存
IDLEのツールバーのメニューから File ▶ Save を選択して、merge_pdf.py
という名前で、適当なフォルダに保存します。
サンプルファイルのダウンロード
プログラムをすぐ試せるように、サンプルのPDFファイルを用意しました。以下のリンクからダウンロードしたら解凍してください。
サンプルファイルのダウンロード(merge_pdf_files.zip)
解凍したサンプルは、4つのPDFファイルをpdf_filesフォルダに格納してあります。プログラムのmerge_pdf.py
と同じフォルダに以下のようにコピーしてください。
├ pdf_files/
│ ├ 201901hyoshi.pdf
│ ├ 201902hyoshi.pdf
│ ├ 201903hyoshi.pdf
│ └ 201903nankai_gaikyo.pdf
│
└ merge_pdf.py
これでプログラムを実行する準備が整いました。
サンプルファイルの出典
今回は以下の気象庁の地震・火山月報(防災)をサンプルに利用させていただきました。
プログラムの実行
WindowsにPythonをインストールすると、拡張子がpy
のPythonファイルはダブルクリックで実行できますので、merge_pdf.py
をダブルクリックしてください。
├ pdf_files/
│ ├ 201901hyoshi.pdf
│ ├ 201902hyoshi.pdf
│ ├ 201903hyoshi.pdf
│ └ 201903nankai_gaikyo.pdf
│
└ merge_pdf.py <- ダブルクリック
実行すると以下のように、201901hyoshi-201903nankai_gaikyo.pdfというファイルが出来上がります。
├ pdf_files/
│ ├ 201901hyoshi.pdf
│ ├ 201902hyoshi.pdf
│ ├ 201903hyoshi.pdf
│ └ 201903nankai_gaikyo.pdf
│
├ 201901hyoshi-201903nankai_gaikyo.pdf
└ merge_pdf.py
このPDFファイルを開くと、以下のように4つのPDFファイルが結合されているのが確認できます。
最後に
普段のPDF管理ソフトで実施している作業が、僅か20行足らずのPythonコードで自動化できました。このように、ライブラリを活用することで、予想外に簡単にプログラミングできるケースが多いのがPythonの魅力の一つです。
さらに、今回のPyPDF2を利用すれば、PDFを分割したり、透かしを重ね合わせることも可能ですので、ぜひチャレンジしてください。透かしを入れるプログラムは、弊社通信講座でも実習できます。