Pythonを使ってPDFを結合する方法

更新:2018.10.9

目次

はじめに

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を実行してください。

Python関連記事






TurboGears Install
2008/04/09





これからブログなどのサイトを作りたいと思っている人は、お名前.comでのドメイン取得がオススメです。

■□━━ 急げ、ドメインは早い者勝ち! ━━□■
     ■お名前.com

アマゾンの2019年本屋大賞一覧

そして、バトンは渡された
ひと
ベルリンは晴れているか
熱帯
ある男

楽天市場のおすすめ商品一覧

お金2.0 新しい経済のルールと生き方 [ 佐藤航陽 ]
全部レンチン!やせるおかず 作りおき 時短、手間なし、失敗なし
「読む力」と「地頭力」がいっきに身につく 東大読書 [ 西岡 壱誠 ]