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转图片")
1454

被折叠的 条评论
为什么被折叠?



