乐于分享
好东西不私藏

效率神器!一键将PDF转JPG图片

效率神器!一键将PDF转JPG图片

💡效率神器!一键将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()

相关学习资料