python处理批量有序png图片生成pdf文件
在我上一篇的需求中有编写程序截取屏幕指定区域批量生成有序png图像的需求为了便于阅读最终需求是将所有有序序列的图像按照顺序合成为一个pdf文件最好能够顺便压缩一下清晰图。本篇应用接上一篇的功能扩展主要需求是从当前目录下找出所有 PNG 格式的序列图片并将它们合并生成一个 PDF 文件。从个人需求出发本应用还是非常实用的比如整理截图、图片序列等场景。毕竟商用软件能实现这个功能的软件也不少使用起来有利有弊而使用该程序既能跨平台用还灵活方便。以下是相应软件的简单对比整理。本篇内容主要解决以下4点需求遍历当前目录筛选出所有.png后缀的文件按文件名数字序列对 PNG 文件进行排序保证生成 PDF 的顺序正确使用成熟的 Python 库PIL/Pillow处理图片使用Pillow的 PDF 导出功能生成最终 PDF加入异常处理确保程序健壮性。完整代码首先需要安装依赖库pip install pillow以下是可直接运行的代码import os from PIL import Image from pathlib import Path def pngs_to_pdf(output_pdf_nameoutput.pdf, sort_by_nameTrue): 将当前目录下的所有PNG图片合并为一个PDF文件 Args: output_pdf_name (str): 生成的PDF文件名默认output.pdf sort_by_name (bool): 是否按文件名排序保证序列图片顺序默认True # 获取当前目录路径 current_dir Path.cwd() # 筛选当前目录下所有PNG文件 png_files [] for file in current_dir.iterdir(): # 只处理文件且后缀为.png忽略大小写 if file.is_file() and file.suffix.lower() .png: png_files.append(file) # 检查是否找到PNG文件 if not png_files: print(❌ 当前目录下未找到任何PNG图片文件) return # 按文件名排序保证序列图片顺序如1.png、2.png、3.png if sort_by_name: # 提取文件名不含后缀尝试转为数字排序失败则按字符串排序 def sort_key(file_path): try: # 提取文件名无后缀并转为数字 return int(file_path.stem) except ValueError: # 非数字文件名按字符串排序 return file_path.name png_files.sort(keysort_key) print(f✅ 找到 {len(png_files)} 个PNG文件开始生成PDF...) print(f 文件列表{[f.name for f in png_files]}) try: # 打开第一张图片作为PDF的基础 first_image Image.open(png_files[0]) # 转换为RGB模式PNG可能带透明通道PDF不支持需转换 if first_image.mode in (RGBA, P): first_image first_image.convert(RGB) # 准备其他图片 other_images [] for png_file in png_files[1:]: img Image.open(png_file) if img.mode in (RGBA, P): img img.convert(RGB) other_images.append(img) # 保存为PDF first_image.save( output_pdf_name, save_allTrue, append_imagesother_images, resolution100.0, # PDF分辨率 quality95 # 图片质量 ) print(f PDF生成成功文件保存为{os.path.abspath(output_pdf_name)}) except Exception as e: print(f❌ 生成PDF失败{str(e)}) if __name__ __main__: # 调用函数可自定义输出PDF名称 pngs_to_pdf(output_pdf_namepng_sequence.pdf)代码关键部分解释文件筛选使用Path.cwd()获取当前目录iterdir()遍历所有文件通过suffix.lower() .png筛选 PNG 文件忽略大小写如.PNG 也能识别文件排序自定义sort_key函数优先将文件名转为数字排序适配 1.png、2.png 这类序列非数字文件名按字符串排序图片处理PNG 图片可能包含透明通道RGBA 模式PDF 不支持透明通道因此转换为 RGB 模式PDF 生成使用PIL.Image.save()的save_allTrue和append_images参数将多张图片合并为一个 PDF异常处理捕获生成过程中的错误友好提示用户。使用说明将代码保存为png2pdf.py放在包含 PNG 序列图片的目录下打开终端 / 命令行进入该目录执行python png2pdf.py程序会自动找到所有 PNG 文件按顺序生成名为png_sequence.pdf的文件若想自定义输出 PDF 名称可修改pngs_to_pdf(output_pdf_name自定义名称.pdf)。测试示例假设当前目录有文件xxx_001.png、xxx_003.png、xxx_002.png、test.png运行程序后输出✅ 找到 4 个PNG文件开始生成PDF...生成的 PDF 中图片顺序为xxx_001.png → xxx_002.png → xxx_003.png → test.png最终在当前目录生成png_sequence.pdf。总结核心依赖是Pillow库需提前安装程序仅处理当前目录下的 PNG 文件自动处理 PNG 透明通道问题保证 PDF 生成成功率支持数字序列文件名排序适配常见的图片序列场景包含完善的错误提示新手也能快速定位问题生成pdf与所有原png对比压缩率较高看对比所有png图容量为754M合成pdf后pdf文件为102M压缩率较高

相关新闻

WordPress外贸B2B独立站搭建全流程:从环境部署到询盘优化

WordPress外贸B2B独立站搭建全流程:从环境部署到询盘优化

很多外贸企业在数字化转型过程中面临一个关键选择:如何快速搭建一个专业、稳定且能持续获取海外询盘的B2B独立站。传统SAAS建站虽然上手快,但长期受限于功能定制性和数据自主权。本文将手把手带你从零开始,用WordPress搭建一个完整的外贸B2B询…

2026/11/6 18:00:20 阅读更多 →
Claude Code 终端 AI 助手:配置 DeepSeek API 实现高效编程对话

Claude Code 终端 AI 助手:配置 DeepSeek API 实现高效编程对话

如果你已经习惯了在 IDE 里用 Copilot 或者 Cursor 的“Cmd+K”来写代码,那么今天这个工具可能会让你换一种思路: 把 AI 编程助手从编辑器里“请”出来,放到一个独立的、专注的终端窗口里。 我说的就是 Claude Code。它不是一个插件,而是一个运行在终端里的独立应用。你…

2026/11/6 18:00:20 阅读更多 →
在centos9系统上配置zerotier实现不同网段互联

在centos9系统上配置zerotier实现不同网段互联

分享一个案例,适用于单位之间或者,单位与家庭,也或者家庭与家庭之间异地组网。从多年来的使用经历来看,使用zerotier组网网速快,延迟小,使用方便可靠。 为什么在centos9系统上配置,原因是之前使…

2026/10/25 2:37:00 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/6 15:21:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/6 9:29:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/5 12:28:01 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/5 12:28:02 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/6 8:08:42 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/5 19:38:59 阅读更多 →

日新闻

周新闻

月新闻