はじめに
Pythonプログラムで即業務に役立つサンプルプログラムとして、PDFファイルを分割、結合、並び替えできるアプリを作成してみましたので、備忘録も兼ねて掲載します。
プログラムは、PDFファイルをドラッグ&ドロップしたり、並び替えが出来るなど、GUI画面で操作しやすくしてみました。
動作環境
Visual Studio Code
Python3.8.8
各種インストールライブラリー
PyPDF2 1.26.0
tkinterdnd2 0.3.0
画面イメージ:
PDFファイルをドラッグ&ドロップしたり並び替えたり、結合、分割するためのアプリ本体の画面イメージは以下のようになっています。
LISTBOXやボタンを使って、出来るだけ操作しやすいようにしています。
YouTubeでの解説:
プログラムの作り方や操作の概要をYoutubeで詳しく解説していますので、ぜひご覧ください!
サンプルソース(途中版):
プログラムソースは、上記YouTubeの動画
https://youtu.be/2-fSrPWxSIQ
の概要欄に、限定公開用のURLを掲載させて頂いています。
恐れ入りますが、YouTube動画経由でアクセスしてご覧ください。
pdf_cut_add.py
from tkinterdnd2 import *
from tkinter import *
import tkinter as tk
from tkinter import filedialog
import PyPDF2
from PyPDF2 import PdfFileReader
import os
def add_listbox(event):
if event.data.endswith(".pdf"):
listbox.insert("end", event.data)
def pdf_add(): # pdfファイルを結合
# アウトプットPDFファイル名を指定するポップアップ表示
filename = filedialog.asksaveasfilename(
title = "結合するPDFファイル名を指定してください",
filetypes = [("pdf", ".pdf") ], # ファイルフィルタ
initialdir = "./", # 自分自身のディレクトリ
defaultextension = "pdf")
if filename == '':
return
merger = PyPDF2.PdfFileMerger(strict=False)
for i in range(listbox.size()):
merger.append(listbox.get(i))
merger.write(filename)
merger.close()
def pdf_cut(): # pdfファイルを分割
cut_dir = filedialog.askdirectory(title = "分割したファイルを保存するフォルダを選択してください",
initialdir = './')
if cut_dir == '':
return
for i in range(listbox.size()):
reader = PdfFileReader(listbox.get(i))
for j in range(reader.getNumPages()):
merger = PyPDF2.PdfFileMerger(strict=False)
merger.append(listbox.get(i), pages=(j,j+1))
cut_file = cut_dir + '/' + os.path.splitext(os.path.basename(listbox.get(i)))[0]
merger.write(cut_file + '_' + str(j) + '.pdf')
merger.close()
def del_listbox(): # 選択したファイルをLISTBOXからクリア
indices = listbox.curselection()
if len(indices) == 1:
listbox.delete(indices)
def all_del_list(): # LISTBOXをクリア
listbox.delete(0,listbox.size())
'''
続きはYouTube動画の概要欄の限定共有URLに掲載していますので、そちらをご覧ください
'''
最後に:
今後も、業務に役立ちそうなプログラムを作成して掲載していきたいと思います。