一、强大功能:这是一款简单易用的 PDF 转图片工具,具备批量处理多个 PDF 文件的能力,还能让用户根据需求选择具体要转换的页面,并且支持两种灵活的设置方式,既可以统一为所有 PDF 设置相同页码,也可针对每个 PDF 单独进行页码设置。
二、便捷使用方法:操作极为简便,首先点击 “选择文件夹”,选定存有 PDF 的文件夹;接着选择合适的设置方式,按要求输入如 “1,2,3”“1 - 5”“1,3 - 5” 这类格式的要转换页码;最后点击 “开始转换” 即可启动转换流程。
三、自动保存无忧:转换完成后,生成的图片会自动保存在原 PDF 所在目录下以 “文件名_images” 命名的文件夹中,无需用户手动干预,轻松实现 PDF 到图片的转换。
import tkinter as tk
from tkinter import ttk, filedialog, messagebox
import os
import fitz
import threading
from queue import Queue
import gc
from typing import Dict, List
class PDFConverter:
def __init__(self):
self.root = tk.Tk()
self.root.title("PDF批量转图片工具_52破解_qzwsa")
self.root.geometry("900x700")
# 存储PDF文件和对应的页码设置
self.pdf_settings: Dict[str, List[int]] = {}
# 创建工作队列
self.work_queue = Queue()
self.setup_ui()
def setup_ui(self):
# 文件夹选择框
folder_frame = ttk.Frame(self.root)
folder_frame.pack(fill=tk.X, padx=5, pady=5)
self.folder_path = tk.StringVar()
ttk.Entry(folder_frame, textvariable=self.folder_path).pack(side=tk.LEFT, fill=tk.X, expand=True)
ttk.Button(folder_frame, text="选择文件夹", command=self.select_folder).pack(side=tk.RIGHT)
# 添加帮助按钮
help_frame = ttk.Frame(self.root)
help_frame.pack(fill=tk.X, padx=5)
ttk.Button(help_frame, text="使用帮助", command=self.show_help).pack(side=tk.RIGHT)
# 设置模式选择
self.mode_frame = ttk.LabelFrame(self.root, text="设置模式")
self.mode_frame.pack(fill=tk.X, padx=5, pady=5)
self.setting_mode = tk.StringVar(value="batch")
ttk.Radiobutton(self.mode_frame, text="统一设置", variable=self.setting_mode,
value="batch", command=self.toggle_setting_mode).pack(side=tk.LEFT, padx=10)
ttk.Radiobutton(self.mode_frame, text="单独设置", variable=self.setting_mode,
value="individual", command=self.toggle_setting_mode).pack(side=tk.LEFT, padx=10)
# 统一设置页码框架
self.batch_setting_frame = ttk.LabelFrame(self.root, text="统一页码设置")
self.batch_setting_frame.pack(fill=tk.X, padx=5, pady=5)
ttk.Label(self.batch_setting_frame, text="页码格式(例如: 1,2,3-5):").pack(side=tk.LEFT)
self.batch_pages = ttk.Entry(self.batch_setting_frame)
self.batch_pages.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=5)
ttk.Button(self.batch_setting_frame, text="应用", command=self.apply_batch_settings).pack(side=tk.RIGHT)
# 控制按钮面板(移到页码设置下面)
control_frame = ttk.Frame(self.root)
control_frame.pack(fill=tk.X, padx=5, pady=5)
# 转换按钮和进度条
ttk.Button(control_frame, text="开始转换", command=self.start_conversion).pack(side=tk.LEFT, padx=5)
self.progress = ttk.Progressbar(control_frame, mode='determinate')
self.progress.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=5)
# 添加清理内存按钮
ttk.Button(control_frame, text="清理内存", command=self.clean_memory).pack(side=tk.RIGHT, padx=5)
# 创建左右分栏
main_pane = ttk.PanedWindow(self.root, orient=tk.HORIZONTAL)
main_pane.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)
# 左侧面板(文件列表)
left_frame = ttk.Frame(main_pane)
main_pane.add(left_frame, weight=2)
#