前回Pythonを使ってPDFの結合を行いました。PDFの結合よりも需要が少ないかもしれませんが、Pythonを利用すればPDF分割も簡単に行うことができます。作成するPythonコードはたったの12行です。入門者でもわかるように1行、1行説明を行っています。

PyPDF2パッケージのインストール

Windows10を動作確認を行っています。

PythonでPDFの分割や結合を行うためには、Pythonの標準ライブラリには含まれていないPyPDF2パッケージをインストールする必要があります。インストールはパッケージ管理のpipを利用して行います。


>pip install pypdf2
Collecting pypdf2
  Downloading https://files.pythonhosted.org/packages/b4/01/68fcc0d43daf4c6bdbc6b33cc3f77bda531c86b174cac56ef0ffdb96faab/PyPDF2-1.26.0.tar.gz (77kB)
    100% |████████████████████████████████| 81kB 1.3MB/s
Installing collected packages: pypdf2
  Running setup.py install for pypdf2 ... done
Successfully installed pypdf2-1.26.0

pip listコマンドを利用するとインストールが正常に行われているか確認することができます。


$pip list
Package    Version
---------- -------
....
PyPDF2     1.26.0
....

複数のPDFを1ページ毎に分割

pythonのプログラムファイルが保存されているフォルダの中に分割を行いたいPDFファイルが1つ(test.pdf)入っている状況でそのPDFファイルを分割し、test-1.pdf, test-2.pdf…というようにページ毎にPDFファイルを作成します。

コードは下記の通りです。


import glob,os #(1)

from PyPDF2 import PdfFileWriter, PdfFileReader #(2)

for file_name in glob.glob('*.pdf'): #(3)

	(name, extention) = os.path.splitext(file_name) #(4)

	pdf_file_reader = PdfFileReader(file_name) #(5)

	page_nums = pdf_file_reader.getNumPages() #(6)

for num in range(page_nums): #(7)

	file_object = pdf_file_reader.getPage(num) #(7)

	pdf_file_name = name + '-' + str(num+1) + '.pdf' #(8)

	pdf_file_writer = PdfFileWriter() #(9)

	with open(pdf_file_name,'wb') as f: #(10)

		pdf_file_writer.addPage(file_object) #(11)

		pdf_file_writer.write(f) #(12)

1行毎に説明を行っていきます。

  • #(1)では、PDFのファイル名を取得するためにglob、取得したファイル名をファイルの名前と拡張子にわけるためにosをimportしています。
  • #(2)PDFを読み込むためにPdfFileReader、分割したPDFファイルを作成するためにPdfFileWriterを利用するため、importしています。
  • #(3)でglobを使ってファイル名を取得していてます。
  • #(4)os.path.splitextでファイル名と名前と拡張子を個別に取り出しています。
  • #(5)PdfFileReaderを使ってファイルの中身を取得しています。
  • #(6)PdfFileReaderのgetNumPagesメソッドでPDFファイルに含まれるPDFのページ数を取得しています。
  • #(7)getPageメソッドにページ数を指定することでそのページのPDFの内容を取り出しています。
  • #(8)分割する際に作成されるファイル名のルールを決めています。ファイル名-ページ番号.pdfで作成されます。test.pdfで分割するとtest-1.pdfが作成されます。
  • #(9)PdfFileWriterをインスタンス化して変数pdf_file_writerに入れています
  • #(10)openメソッドのwbモード(write,binary)でファイルをオープンしています。ファイル名は#(8)で設定されたものです。
  • #(11)PdfFileWriterのaddPageメソッドを使用して、pdf_file_writerに#(7)で取り出したPDFの中身を追加しています。
  • #(12)openしたファイルに#(11)で追加したPDFの中身を書き込んでいます。

test.pdfというファイルが存在し、2枚のページで構成されている場合は、pyファイルが存在するフォルダに保存して、実行するとtest-1.pdfとtest-2.pdfファイルが作成されます。

Pythonランチャーを使う

WindowsではpyファイルがPythonランチャーに関連付けられていればファイル名をダブルクリックするだけでプログラムを実行することができます。

ファイルを右クリックするとpyファイルに関連付いているアプリケーションがわかるので確認を行ってください。ロケットのアイコンが特徴です。

Pythonランチャー
Pythonランチャー

関連付けられていればダブルクリックするだけで結合のプログラムが実行されます。