adbird(広告鳥) 備忘録

python と pdftk でPDFを結合し、ページ番号をつけ、しおりをつけるスクリプト

linuxならshスクリプトにコマンド書けばいいだけなのだけど、windowsだとそのスクリプトが動かないので、苦肉の策。

pypdfライブラリをインストール

pip install pypdf

python スクリプト(make.py)。

import pypdf
import subprocess
import os

#pdf 結合
merger = pypdf.PdfMerger()
#結合するファイル
merger.append('入力1.pdf')
merger.append('入力2.pdf')
merger.append('入力3.pdf')
merger.append('入力4.pdf')

#結合後のファイル
merger.write('出力all.pdf')
merger.close()

#ページ番号付与。別途「ページ番号.pdf」が必要。
input_file = "出力all.pdf"
output_file = "出力all2.pdf"

command = ["pdftk"] + [input_file] + ["multistamp", "ページ番号.pdf", "output"] + [output_file]
subprocess.run(command)

#しおり(ブックマーク)をつける。別途「bookmarks.txt」などが必要。
input_file2 = "出力all2.pdf"
output_file2 = "ALL.pdf"

command = ["pdftk"] + [input_file2] + ["update_info_utf8", "bookmarks.txt", "output"] + [output_file2]
subprocess.run(command)

#中間ファイルを削除
os.remove("出力all.pdf")
os.remove("出力all2.pdf")

入力1.pdf~入力4.pdf が入っているディレクトリに、make.py を入れて、

python make.py

または(linuxの場合)

python3 make.py

PDFが結合されて、ALL.pdf が生成されているはず。

bookmarks.txt の書き方は

PDFに「しおり」(bookmarks)をつける:pdfデータ編集 - adbird(広告鳥) 備忘録

を参照のこと。