Pythonで超簡単にPDFを連結

/ Python PDF

概要

PDF連結と検索するとたくさんのやり方が出てきますがそのやり方はだいたいフリーソフト使いましょう、というものだったりする。あとはPDFを連結できるwebサービスなど。実はそんなことしなくてもpythonという言葉を含めて検索すると超簡単にPDFを連結する方法が出てくる。

準備

python 3.x 系をインストールして使えるようにしておく。さらにpipでpypdf2パッケージをインストールする。

pip install pypdf2

準備は以上。

Pythonコード

PdfFileMergerというまんまなクラスがあるのでそれを使うだけ。

#!python3
# -*- coding:utf-8 -*-

from PyPDF2 import PdfFileMerger

filelist = [
    'filename1.pdf',
    'filename2.pdf',
    'filename3.pdf',
    'filename4.pdf',
    'filename5.pdf',
    'filename6.pdf',
    'filename7.pdf',
    'filename8.pdf'
    ]

merger = PdfFileMerger()

for file in filelist:
    merger.append(file)

merger.write('merged.pdf')
merger.close()

これだけ簡単だと毎回コード書いてもそこら辺のフリーソフトやwebサービス使うよりも効率がよい。一般的にどうなのか知らないが個人的にそもそもPDFを連結したいときっていうのは少量のファイルだけ結合する場合は少ないし、これならファイル名に規則性があるような大量のPDFを簡単に結合できる。ただ、ちょちょいPDFによってはエラーがでて柔軟に対応できていないぽいところが残念。今後の改善に期待。

そのまま使えるver

以下をコピペしてpyで保存すると引数で指定したPDFファイルを連結してmerged.pdfに保存する。見ての通りPDFじゃないファイルかどうかなどはチェックしていないのでその場合はエラーが出る。

#!python3
# -*- coding:utf-8 -*-

import sys
from PyPDF2 import PdfFileMerger

merger = PdfFileMerger()

for arg in sys.argv[1:]:
  merger.append(arg)

merger.write('merged.pdf')
merger.close()

Windowsの場合はpyを関連付けて置けばドラッグアンドドロップでコマンドラインいらずで結合できる。ただやっぱりちょいちょいエラーが出るのは難点。