4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PDFを任意のページごとに分割する

Last updated at Posted at 2020-02-01

#そもそも
定期的にでる膨大なページのPDFをChromeで開き、上司の指示で2ページずつ(日ごとに分かれた統計資料で、2ページがワンセット)、日ごとに保存している同僚の涙ぐましい努力を見て、それPythonで自動化して昼飯に行こうぜということで、Pythonで作ってみる。

##PyPDF2
PDFの操作にはいろいろなモジュールがあるようだが、なんか簡単そうなので「PyPDF2」というモジュールを使った。

pip install PyPDF2

で、入る。あれこれ読むと、PDFを1ページずつに分割する手法はあるよう。任意のページごとに切り出すには…

  1. 全部一度分解し、2ページずつに再編する
  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の倍数でなければ「おいおい、最後のファイルを書きだそうとしたらページが足りないやんか」と、最後のファイル生成の際にエラーが出る。

その場合、なんとかすることもできるが、特に今は必要ないのでまたこんどにし、ごはんを食べに行く。

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?