PDF Pythonツール tkinter ドラッグアンドドロップ(複数ファイル) ファイル指定

PythonでPDFファイルを結合してしおりを自動作成する方法・その2

概要

PythonとTkinterを使って、簡単にPDFファイルを結合できるプログラムを作成する方法を紹介します。このプログラムはドラッグ&ドロップ操作をサポートしており、PDFの結合プロセスをシンプルかつ効率的に行います。また、PyPDFライブラリを使用して、各元のPDFファイル名をしおりとして追加する機能も備えています。

使用例

このプログラムは、複数のPDFファイルを1つに結合したい場合に便利です。例えば、レポートやプレゼンテーション資料を一つにまとめたり、複数の契約書を一つのファイルに統合する際に使用できます。

必要なプログラム

  • Python 3.x
  • Tkinter (標準ライブラリ)
  • PyPDF 3.17.4
  • TkinterDnD2

インストール方法

必要なライブラリをインストールするために、以下のコマンドを実行します。

pip install pypdf tkinterdnd2

使用手順

  1. プログラムを作成する: 以下のコードを使用してPythonプログラムを作成します。
  2. プログラムを実行する: 作成したプログラムを実行します。
  3. PDFファイルをドラッグ&ドロップする: プログラムのウィンドウに結合したいPDFファイルをドラッグ&ドロップします。
  4. 結合を実行する: 「Merge PDFs」ボタンをクリックし、保存先を指定して結合されたPDFを保存します。

注意点

  • ドラッグ&ドロップするファイルはPDF形式である必要があります。
  • 結合するファイルの順序は、ドラッグ&ドロップした順序に従います。
  • PyPDFのバージョンに注意してください。本プログラムはPyPDF 3.17.4で動作確認されています。

プログラム

以下に、ドラッグ&ドロップ対応のPDF結合プログラムのコードを示します。

import tkinter as tk
from tkinterdnd2 import DND_FILES, TkinterDnD
from tkinter import filedialog
from pypdf import PdfWriter, PdfReader
import os

class PDFMergerApp:
def __init__(self, root):
self.root = root
self.root.title("PDF Merger")
self.root.geometry("400x300")
self.pdf_files = []

self.label = tk.Label(root, text="Drag and Drop PDF Files Here", relief="solid", height=10, width=50)
self.label.pack(pady=20)

self.button = tk.Button(root, text="Merge PDFs", command=self.merge_pdfs)
self.button.pack(pady=20)

self.label.drop_target_register(DND_FILES)
self.label.dnd_bind('<<Drop>>', self.drop)

def drop(self, event):
files = self.root.tk.splitlist(event.data)
for file in files:
if file.endswith(".pdf"):
self.pdf_files.append(file)
self.label.config(text="\n".join(self.pdf_files))

def merge_pdfs(self):
if not self.pdf_files:
return

merger = PdfWriter()

for pdf_file in self.pdf_files:
reader = PdfReader(pdf_file)
merger.add_outline_item(title=os.path.basename(pdf_file), page_number=len(merger.pages))
for page in reader.pages:
merger.add_page(page)

output_filename = filedialog.asksaveasfilename(defaultextension=".pdf", filetypes=[("PDF files", "*.pdf")])
if output_filename:
with open(output_filename, 'wb') as output_pdf:
merger.write(output_pdf)
self.label.config(text="PDFs merged successfully!")

if __name__ == "__main__":
root = TkinterDnD.Tk()
app = PDFMergerApp(root)
root.mainloop()

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

まとめ

このPythonプログラムを使用すると、複数のPDFファイルを簡単に一つに結合することができます。ドラッグ&ドロップ対応の直感的なインターフェースにより、操作も非常に簡単です。必要なライブラリをインストールして、上記のコードを実行するだけで、すぐにPDF結合作業を始められます。是非試してみてください!

-PDF, Pythonツール, tkinter, ドラッグアンドドロップ(複数ファイル), ファイル指定