#そもそも
定期的にでる膨大なページのPDFをChromeで開き、上司の指示で2ページずつ(日ごとに分かれた統計資料で、2ページがワンセット)、日ごとに保存している同僚の涙ぐましい努力を見て、それPythonで自動化して昼飯に行こうぜということで、Pythonで作ってみる。
##PyPDF2
PDFの操作にはいろいろなモジュールがあるようだが、なんか簡単そうなので「PyPDF2」というモジュールを使った。
pip install PyPDF2
で、入る。あれこれ読むと、PDFを1ページずつに分割する手法はあるよう。任意のページごとに切り出すには…
- 全部一度分解し、2ページずつに再編する
- 1-2ページ、3-4ページ…といった具合に抽出する
という方法が考えられるが、1は面倒くさそうなので、2にしてみる。「test.pdf」を2ページずつに分け、「<スタートページ>.pdf」で保存する。
pdf_separate.py
import PyPDF2
f = 'test.pdf' #分割したいPDF
page_sep = 2 #何ページごとに分割したいか
#pdfのページ数を把握する
reader = PyPDF2.PdfFileReader(f)
page_num = reader.getNumPages()
#ページの抽出とファイル名に使う数字を派生させforで回す
for page in range(0, page_num, page_sep):
merger = PyPDF2.PdfFileMerger()
start = page
end = start + page_sep
merger.append(f, pages=(start,end))
file_name = str(start) + '.pdf'
merger.write(file_name)
merger.close
print('終わり')
ところで
page_sep = 2 #何ページごとに分割したいか
の「2」を例えば「3」にすれば3ページごとに分割されるが、pdfの総ページが3の倍数でなければ「おいおい、最後のファイルを書きだそうとしたらページが足りないやんか」と、最後のファイル生成の際にエラーが出る。
その場合、なんとかすることもできるが、特に今は必要ないのでまたこんどにし、ごはんを食べに行く。