PDF Pythonツール tkinter ファイル指定

Pythonを活用してPDFファイルを効率的に分割・再配置する方法

概要

このブログでは、Pythonを使用して横長A3サイズなどのPDFファイルを自動で左右に分割し、特定の順序で再配置する方法を詳しく説明します。手作業による時間の浪費を減らし、効率的な文書管理を実現するための技術的アプローチを提供します。

使用例

・A3の雑誌をスキャンしたpdfファイルを用意し、本プログラムを利用してA4サイズ2枚のpdfに分割、並べ替えを行う。

必要なPythonライブラリ

  • PyPDF2: PDF読み込み、編集、保存を行うためのライブラリ。
  • tkinter: ファイル選択ダイアログを表示するためのGUIライブラリ。

これらのライブラリをインストールするには、以下のコマンドを使用することができます。
pip install PyPDF2 openpyxl

使用手順

  1. PythonとPyPDF2ライブラリ、openpyxlライブラリをインストールします。
  2. 以下のプログラムを実行する前に、使用するPDFファイルを準備します。
  3. スクリプトを実行し、ファイル選択ダイアログから処理するPDFファイルを選択します。
  4. 処理後、ファイル保存ダイアログが表示されるので、新しいPDFファイルの保存場所とファイル名を指定します。
  5. プログラムがPDFファイルの分割と再配置を自動で行い、指定した場所に保存します。

プログラム

下記のコードをメモ帳などに丸々コピーしてpythonファイル(〇〇.py)にしてください。

import tkinter as tk
from tkinter import filedialog
import fitz # PyMuPDF

def split_pdf_pages(input_path, output_path):
with fitz.open(input_path) as doc:
output_pdf = fitz.open() # 新しいPDFを作成
for page_num in range(len(doc)):
page = doc.load_page(page_num) # ページを読み込む
# ページの左半分を取得
left_half = fitz.Rect(0, 0, page.rect.width / 2, page.rect.height)
# ページの右半分を取得
right_half = fitz.Rect(page.rect.width / 2, 0, page.rect.width, page.rect.height)

# 左半分を新しいPDFに追加
left_page = output_pdf.new_page(width=left_half.width, height=left_half.height)
left_page.show_pdf_page(left_page.rect, doc, page_num, clip=left_half)

# 右半分を新しいPDFに追加
right_page = output_pdf.new_page(width=right_half.width, height=right_half.height)
right_page.show_pdf_page(right_page.rect, doc, page_num, clip=right_half)

output_pdf.save(output_path)

def main():
root = tk.Tk()
root.withdraw() # Tkinterのルートウィンドウを表示しない

# 元のPDFファイルを選択
input_file_path = filedialog.askopenfilename(
title="PDFファイルを選択してください",
filetypes=[("PDF files", "*.pdf")]
)
if not input_file_path:
return

# 保存するファイル名を指定
output_file_path = filedialog.asksaveasfilename(
title="保存するファイル名を指定してください",
filetypes=[("PDF files", "*.pdf")],
defaultextension=".pdf"
)
if not output_file_path:
return

# PDFファイルを処理
split_pdf_pages(input_file_path, output_file_path)
print(f"PDFファイルが保存されました: {output_file_path}")

if __name__ == "__main__":
main()

あるいは下のテキストファイルをダウンロードし、「.txt」を「.py」に変えることでそのまま使えます。

まとめ

このブログを通じて、PythonとPyPDF2ライブラリを使ってPDFファイルの効率的な分割と再配置を行う方法を学びました。このスクリプトは、文書処理タスクを自動化し、効率を大幅に向上させることができます。カスタマイズや拡張も可能で、さまざまなニーズに対応するために調整することができます。

-PDF, Pythonツール, tkinter, ファイル指定