Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python】PythonでPdfWriterを使ってPDFファイルを分割する方法

 

複数ページのPDFファイルを分割していくつかのファイルに分けたいような要望はかなり頻繁に発生します。

今回は、PythonのPdfWriterを使ってPDFファイルを簡単に分割する方法を紹介します。

 

必要なライブラリのインストール


まず、PyPDF2ライブラリをインストールします。このライブラリはPDFの読み書きやマージに役立ちます。

 

コマンドプロンプトにて以下を実行します。

 

pip install pypdf2

 

 

簡単なマージ例

 

簡単なマージ例として、実行するPythonファイルと同じフォルダ内にPDFファイルを入れておいてフォルダ内にある全PDFファイルの中でページ数が4のファイルだけを分割するような場合のコードは以下のようになります。

 

import PyPDF2
import glob
from pypdf import PdfWriter

merger = PdfWriter()

for pdf in glob.glob('*.pdf'):
    # f = 'merged2.pdf' #分割したいPDF
    page_sep = 2 #何ページごとに分割したいか

    #pdfのページ数を把握する
    reader = PyPDF2.PdfReader(pdf)
    page_num = len(reader.pages)

    # 4ページのファイルだけ実行
    if page_num == 4:
        #ページの抽出とファイル名に使う数字を派生させforで回す
        for page in range(0, page_num, page_sep):
            merger = PyPDF2.PdfMerger()
            start = page
            end = start + page_sep
            merger.append(pdf, pages=(start,end))
            file_name = str(start) + '.pdf'
            merger.write(file_name)
          merger.close

 

5行目のfor文で同じフォルダ内のすべてのPDFファイルを洗い出しています。

分割数を2として、ページ数が4のファイルだけを抜き出して分割しています。

 

分割した先頭ページ番号をファイル名としていますので、たとえば、0,1ページ目のファイルには「0.pdf」というファイル名がついて保存されます。

 

以上が、PythonでdfWriterを使ってPDFファイルをマージする方法になります。