概要
このブログでは、Pythonを用いてPDFファイルをページごとに分割し、それぞれ別のファイルとして保存する方法を紹介します。GUIを使用してファイルを選択するため、コードの利用がより便利になっています。この方法は、大量のPDFデータを扱う際に特に有用です。
使用例
このプログラムは、PDFファイルが多数のページから構成されており、特定のページだけを別のファイルとして保存したい場合に便利です。例えば、契約書やレポートの特定のページだけを抽出して共有する場合などに役立ちます。
必要なPythonライブラリとインストール方法
このスクリプトを実行するには、PyPDF2
というライブラリが必要です。以下のコマンドを実行してインストールしてください:pip install PyPDF2
また、このスクリプトはPythonの標準GUIライブラリtkinter
も使用していますが、このライブラリはほとんどのPython環境にデフォルトでインストールされています。
使用手順
- 上記のコマンドを使用して
PyPDF2
をインストールします。 - 下記のプログラムをコピーし、任意のテキストエディタに貼り付けて
.py
ファイルを作成します。 - Pythonスクリプトを実行すると、ファイル選択ダイアログが表示されるので、分割したいPDFファイルを選択します。
- 次に、出力先のフォルダをダイアログから選択します。
- 処理が完了すると、選択したフォルダに各ページが分割されたPDFファイルが保存されます。
注意点
- このスクリプトは、PDFファイルが読み込み可能な状態であることを前提としています。パスワードで保護されているPDFファイルや、破損しているファイルでは動作しない可能性があります。
- 出力されるファイル名は自動で生成されますが、既に同名のファイルが存在する場合は上書きされるため注意が必要です。
プログラム
下記のコードをメモ帳などに丸々コピーしてpythonファイル(split_pdf.py
)にしてください。
import tkinter as tk
from tkinter import filedialog
import PyPDF2
import os
def split_pdf(input_path, output_folder):
base_filename = os.path.splitext(os.path.basename(input_path))[0]
input_pdf = PyPDF2.PdfReader(input_path)
for page_number in range(len(input_pdf.pages)):
output_pdf = PyPDF2.PdfWriter()
output_pdf.add_page(input_pdf.pages[page_number])
output_filename = f"{base_filename}-page{page_number + 1:04d}.pdf"
output_path = os.path.join(output_folder, output_filename)
with open(output_path, 'wb') as output_file:
output_pdf.write(output_file)
print(f"ページ {page_number + 1} が {output_path} として保存されました。")
def choose_file_and_split():
root = tk.Tk()
root.withdraw()
input_file_path = filedialog.askopenfilename(
title="開くPDFファイルを選択してください",
filetypes=[("PDF files", "*.pdf")]
)
if not input_file_path:
print("ファイルが選択されませんでした。")
return
output_folder_path = filedialog.askdirectory(title="出力先フォルダを選択してください")
if not output_folder_path:
print("出力先フォルダが選択されませんでした。")
return
split_pdf(input_file_path, output_folder_path)
choose_file_and_split()
あるいは、下のテキストファイルをダウンロードし、「.txt」を「.py」に変えることでそのまま使えます。
まとめ
この記事では、Pythonを使用してPDFファイルを簡単にページごとに分割する方法を説明しました。GUIを利用してファイルの選択と保存先を簡単に設定できるため、非プログラマーにも扱いやすいツールです。大量のPDFデータを効率的に処理するための有効な方法として活用してください。