Python开发多功能PDF工具箱

已打包成exe,需要可以下载直接免费运行:
链接:https://pan.quark.cn/s/aafb636310be

界面预览:

功能概览

PDF工具箱支持四种核心功能:PDF转图片、PDF拆分、PDF合并以及图片转PDF。所有功能均支持批量处理,并具备高DPI输出和多种格式支持。

技术实现

PyPDF2和PyMuPDF负责PDF操作和处理,Pillow库用于图像转换,Tkinter构建用户界面,logging系统记录操作日志。这种组合确保了高效稳定的PDF处理能力。

PDF转图片实现

使用PyMuPDF库打开PDF文件,通过矩阵转换实现高DPI渲染。将每页转换为PIL图像对象后保存为指定格式,支持PNG/JPEG/BMP三种输出格式。

def pdf_to_image(pdf_path, dpi=300, output_format='png'):
    doc = fitz.open(pdf_path)
    for page in doc:
        pix = page.get_pixmap(matrix=fitz.Matrix(dpi/72, dpi/72))
        img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
        img.save(f"page_{page.number}.{output_format}")

PDF拆分功能

提供三种拆分方式:单页拆分、指定范围拆分和固定页数分组。PyPDF2库用于读取PDF并创建新的PDF文件,确保拆分过程准确无误。

def split_pdf(input_path, method='single', ranges=None):
    reader = PdfReader(input_path)
    if method == 'single':
        for i, page in enumerate(reader.pages):
            writer = PdfWriter()
            writer.add_page(page)
            writer.write(f"page_{i+1}.pdf")

PDF合并功能

利用PyMuPDF的高性能PDF处理能力,将多个PDF文档按顺序合并为一个文件。支持文件列表管理和顺序调整。

def merge_pdfs(file_list, output_path):
    merged = fitz.open()
    for f in file_list:
        with fitz.open(f) as mfile:
            merged.insert_pdf(mfile)
    merged.save(output_path)

图片转PDF功能

通过Pillow库将多种格式的图片转换为RGB模式,并合并为单个PDF文件。支持调整图片顺序和页面大小。

def images_to_pdf(image_list, output_path):
    images = [Image.open(img).convert('RGB') for img in image_list]
    images[0].save(output_path, save_all=True, append_images=images[1:])

日志系统设计

采用TimedRotatingFileHandler实现日志轮换,保留最近7天的日志记录。日志格式包含时间戳、日志级别和详细信息,便于问题排查。

logger = logging.getLogger("PDFTool")
handler = logging.handlers.TimedRotatingFileHandler(
    'pdf_tool.log', when='midnight', backupCount=7)
logger.addHandler(handler)

用户界面特点

Tkinter构建的GUI界面采用选项卡式布局,每个功能模块独立显示。界面元素包括文件选择器、参数设置区和操作按钮,提供直观的操作体验。

root = tk.Tk()
notebook = ttk.Notebook(root)
tab1 = ttk.Frame(notebook)
notebook.add(tab1, text="PDF转图片")

更多推荐