💡效率神器!一键将PDF转JPG图片
🔹支持批量选择多个PDF文件
🔹自动创建以PDF命名的文件夹
🔹每页独立保存为JPG格式
🔹实时显示转换进度

🚀使用方式:
1. 运行PDF2JPG.exe
2. 点击「选择PDF文件」添加文件
3. 点击「开始转换」即可
📁输出路径:当前目录/文件名/
✨支持 Windows 系统,简单易用!

一、功能简介
本工具是一款基于 Python 的图形界面应用,用于将PDF 文件的每页转换为独立的 JPG 图片文件。
主要功能:
·支持批量选择多个 PDF 文件
·自动在当前目录创建以 PDF 文件命名的文件夹
·将 PDF 每页保存为独立的JPG 图片
·实时显示转换进度
·错误处理与提示
二、系统要求
·操作系统:Windows 10/11
·Python 版本:Python 3.6 及以上
·依赖库:PyMuPDF (fitz)
三、安装步骤
绿色免安装,下载运行PDF2JPG.exe即可
四、使用说明
步骤 1:选择PDF文件
·点击「选择PDF文件」按钮
·在弹出的文件选择对话框中选择一个或多个 PDF 文件
·已选择的文件名将显示在列表框中
步骤 2:开始转换
·确认选择的文件无误后,点击「开始转换」按钮
·进度条将显示当前转换进度
·状态栏显示正在转换的文件名和页码
步骤 3:查看结果
·转换完成后会弹出提示框
·图片保存在当前目录下以 PDF 文件命名的文件夹中
五、输出说明
输出路径:当前目录/PDF文件名/
文件命名规则:{PDF文件名}_page_{页码}.jpg
示例:
·输入文件:报告.pdf(共10页)
·输出目录:./报告/
·输出文件:报告_page_1.jpg, 报告_page_2.jpg, ..., 报告_page_10.jpg
六、常见问题
Q1:提示无法打开PDF文件?
·检查PDF文件是否损坏或被其他程序占用
·确保文件路径中没有特殊字符
Q2:转换过程中某些页面失败?
·这可能是由于PDF文件内部结构问题
·失败的页面信息会在转换完成后显示
Q3:进度条不动?
·大文件转换可能需要较长时间
·请耐心等待,不要关闭窗口
链接: https://pan.baidu.com/s/1rMCeo5FVoihJjDtlRdG14w
提取码: 49ct
import tkinter as tkfrom tkinter import filedialog, messagebox, ttkimport osimport fitz # PyMuPDFclass PDF2JPGConverter:def __init__(self, root):self.root = rootself.root.title("PDF2JPG - designed by Davis")self.root.geometry("500x300")self.pdf_files = []# 创建组件self.label = ttk.Label(root, text="已选择的PDF文件:")self.label.pack(pady=10)self.listbox = tk.Listbox(root, width=60, height=8)self.listbox.pack(pady=5)self.select_btn = ttk.Button(root, text="选择PDF文件", command=self.select_files)self.select_btn.pack(pady=5)self.convert_btn = ttk.Button(root, text="开始转换", command=self.convert_pdf_to_jpg)self.convert_btn.pack(pady=5)self.progress = ttk.Progressbar(root, orient="horizontal", length=400, mode="determinate")self.progress.pack(pady=10)self.status_label = ttk.Label(root, text="")self.status_label.pack(pady=5)def select_files(self): files = filedialog.askopenfilenames(title="选择PDF文件",filetypes=[("PDF文件", "*.pdf")],initialdir=os.getcwd() )if files:self.pdf_files = list(files)self.listbox.delete(0, tk.END)for file in self.pdf_files:self.listbox.insert(tk.END, os.path.basename(file))def convert_pdf_to_jpg(self):if not self.pdf_files: messagebox.showwarning("警告", "请先选择PDF文件")returntotal_pages = 0for pdf_file in self.pdf_files:try: doc = fitz.open(pdf_file) total_pages += doc.page_count doc.close()except Exception as e: messagebox.showerror("错误", f"无法打开PDF文件 {os.path.basename(pdf_file)}: {str(e)}")returncurrent_page = 0self.progress["maximum"] = total_pagesself.progress["value"] = 0error_pages = []for pdf_file in self.pdf_files: pdf_name = os.path.splitext(os.path.basename(pdf_file))[0] output_dir = os.path.join(os.getcwd(), pdf_name)# 创建输出目录if not os.path.exists(output_dir): os.makedirs(output_dir)# 打开PDF文件try: doc = fitz.open(pdf_file)except Exception as e: error_pages.append(f"{pdf_name}: 无法打开文件 - {str(e)}")continue for page_num in range(doc.page_count):try: page = doc.load_page(page_num) pix = page.get_pixmap()# 生成输出文件名output_filename = f"{pdf_name}_page_{page_num + 1}.jpg"output_path = os.path.join(output_dir, output_filename)# 保存为JPGpix.save(output_path)except Exception as e: error_pages.append(f"{pdf_name} 第 {page_num + 1} 页: {str(e)}") current_page += 1self.progress["value"] = current_pageself.status_label.config(text=f"正在转换: {pdf_name} 第 {page_num + 1}/{doc.page_count} 页")self.root.update_idletasks() doc.close()self.progress["value"] = total_pagesself.status_label.config(text="转换完成!")if error_pages: error_msg = "以下页面转换失败:\n" + "\n".join(error_pages) messagebox.showwarning("转换完成", error_msg)else: messagebox.showinfo("完成", "所有PDF文件已成功转换为JPG图片")if __name__ == "__main__": root = tk.Tk() app = PDF2JPGConverter(root) root.mainloop()
夜雨聆风