Pythonを使ってPDFを結合する方法
はじめに
Python を使って複数の PDF を 1 つの PDF にまとめる方法を紹介します。
PyPDF2 というライブラリを使用していますので、インストールしていない場合は、下記のコマンドでインストールしておいてください。
pip install PyPDF2
動作環境は、Windows を使用していますので、ディレクトリのセパレータが\\
になっています。Mac や Linux の環境であれば/
に変更してください。
設定ファイルを作成する
pdf_join.json というファイルを作成して下記を記述します。python コードに直接結合したいファイルを配列で記述してもいいですが、少しだけ汎用的にするため、json ファイルに設定を書くことにしました。
[
{
"outputfilename": "all.pdf",
"inputfiles": [
"join\\1-2.pdf",
"join\\5-6.pdf",
"join\\7-8.pdf",
"join\\9-10.pdf",
]
}
]
内容の説明です。
"outputfilename": "all.pdf",
outputfilename
に出力されるファイルの名前を指定しています。
"inputfiles": []
inputfiles
配列の中に結合したいファイル名をしてしています。相対パスでも絶対パスでも OK です。
python コード
pdf_join.py というファイルを作成して下記を記述します。
# -*- coding: utf-8 -*-
from PyPDF2 import PdfFileWriter, PdfFileReader
import json
# 設定ファイルの読み込み
f = open("pdf_join.json", 'r', encoding='utf-8')
conf = json.load(f)
f.close()
# 出力するPDFファイルのオブジェクト
output_pdf_obj = PdfFileWriter()
for pdffile in conf[0]['inputfiles']:
source_pdf = open(pdffile, "rb")
source_pdf_obj = PdfFileReader(source_pdf, strict=False)
for i in range(source_pdf_obj.getNumPages()):
output_pdf_obj.addPage(source_pdf_obj.getPage(i))
# 出力ファイルのオープン
output_pdf = open(conf[0]['outputfilename'], "wb")
# 結合したPDFを書き込み
output_pdf_obj.write(output_pdf)
# PDFオブジェクトのクローズ
output_pdf.close()
source_pdf.close()
コードの説明について、コードのコメントを参照してもらえたらと思います。pdf_join.py と pdf_join.json は同じパスに置いて、pdf_join.py を実行してください。