概要
タイトルに示す通り,PDFファイルに対して様々な加工を行う機能を備えたPythonの非標準ライブラリ「pyPDF」を用いた簡易的なPDF結合ツールを作った.このツールを用いることで複数のpdfファイルを結合して1つのpdfファイルを生成することができる.
pyPDFにはPDFMargerクラスというクラスがもともと存在しており,結合にはこれが用いられていたようであるが,このクラスは将来的に廃止されてしまうらしい.そのため今回は公式ドキュメントで利用を推奨されているPDFWriterクラスを用いた.
前提
- 使用OS: Windows11
- Pythonのバージョン:3.11.8
使用するライブラリ
- pyPDF: PDFの様々な加工や読み取りを行う非標準ライブラリ.次の項でインストールする.
- glob: 指定した条件を満たすパスの一覧を取得する機能を備えたライブラリ.標準なのでインストールの必要はない.
- time: sleep関数を使用するためにimportする.こちらも標準
準備
以下のコマンドによりpyPDFをpipでダウンロードした.
pip install pypdf
ツールの構成
ツールは下記に示すディレクトリで構成される.file_to_mergeディレクトリには結合したいファイルを配置し,結合されたファイルはmergedディレクトリに配置する.またこの他に結合を行うmerge.pyをmergerディレクトリ下に配置する.
merger
├─file_to_merge
└─merged
merger.py
merger.pyのコードを以下に示す.
import glob
from pypdf import PdfWriter
import time
# glob.glob: 指定した条件を満たすパスをすべて取得し,リストを返す
file = glob.glob("/pdf_merger/file_to_merge/*")
merger = PdfWriter()
# pdfファイルを順にmerge
for pdf in file:
merger.append(pdf)
# mergedディレクトリに結合されたファイルを書き出し
merger.write("/pdf_merger/merged/merged.pdf")
merger.close()
# 処理の終了を知らせる出力
print("finish")
time.sleep(1)
動作(使用方法)
merger/file_to_mergeに結合したいファイルを配置し,merger.pyを実行するとmerger/mergedにmerged.pdfが生成される.
まとめ
pypdfとその他いくつかのライブラリを用いて複数のpdfファイルを結合するツールを作ることができた.guiは実装していないながら,一応の実用性を担保できたのではないかと思う.
参考
MergingPDFFiles: pyPDFのユーザーガイド.PDFファイルを結合する方法が紹介されている.globを使用した以外はほぼすべてここを参考にしています.
https://pypdf.readthedocs.io/en/stable/user/merging-pdfs.html
Pythonで条件を満たすパスの一覧を再帰的に取得するglobの使い方:glob関数はこちらを参考にしました
https://note.nkmk.me/python-glob-usage/