Python PDF批量转图片工具

Python PDF批量转图片工具

1.简介:

这是一个简单易用的PDF转图片工具,主要功能:

  1. 可以批量处理多个PDF文件
  2. 可以选择需要转换的具体页面
  3. 支持两种设置方式:
    • 统一设置:所有PDF使用相同的页码
    • 单独设置:每个PDF单独设置页码

使用方法:

  1. 点击"选择文件夹",选择PDF所在文件夹
  2. 选择设置方式并输入要转换的页码
    例如:1,2,3 或 1-5 或 1,3-5
  3. 点击"开始转换"即可

转换后的图片会自动保存在原PDF所在目录下的"文件名_images"文件夹中

2.运行效果:

在这里插入图片描述

在这里插入图片描述

3.相关源码:

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批量转图片工具")
        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<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创客白泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值