当前位置: 首页 > news >正文

python处理批量有序png图片生成pdf文件

在我上一篇的需求中,有编写程序,截取屏幕指定区域,批量生成有序png图像的需求,为了便于阅读,最终需求是将所有有序序列的图像按照顺序,合成为一个pdf文件,最好能够顺便压缩一下清晰图。

本篇应用接上一篇的功能扩展,主要需求是,从当前目录下找出所有 PNG 格式的序列图片,并将它们合并生成一个 PDF 文件。从个人需求出发,本应用还是非常实用的,比如整理截图、图片序列等场景。毕竟商用软件能实现这个功能的软件也不少,使用起来有利有弊,而使用该程序,既能跨平台用,还灵活方便。以下是相应软件的简单对比整理。

本篇内容主要解决以下4点需求:

  1. 遍历当前目录,筛选出所有.png后缀的文件;
  2. 按文件名(数字序列)对 PNG 文件进行排序,保证生成 PDF 的顺序正确;
  3. 使用成熟的 Python 库(PIL/Pillow)处理图片,使用Pillow的 PDF 导出功能生成最终 PDF;
  4. 加入异常处理,确保程序健壮性。

完整代码

首先需要安装依赖库:

pip install pillow

以下是可直接运行的代码:

import os from PIL import Image from pathlib import Path def pngs_to_pdf(output_pdf_name="output.pdf", sort_by_name=True): """ 将当前目录下的所有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(key=sort_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_all=True, append_images=other_images, resolution=100.0, # PDF分辨率 quality=95 # 图片质量 ) 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_name="png_sequence.pdf")

代码关键部分解释

  1. 文件筛选:使用Path.cwd()获取当前目录,iterdir()遍历所有文件,通过suffix.lower() == ".png"筛选 PNG 文件(忽略大小写,如.PNG 也能识别);
  2. 文件排序:自定义sort_key函数,优先将文件名转为数字排序(适配 1.png、2.png 这类序列),非数字文件名按字符串排序;
  3. 图片处理:PNG 图片可能包含透明通道(RGBA 模式),PDF 不支持透明通道,因此转换为 RGB 模式;
  4. PDF 生成:使用PIL.Image.save()save_all=Trueappend_images参数,将多张图片合并为一个 PDF;
  5. 异常处理:捕获生成过程中的错误,友好提示用户。

使用说明

  1. 将代码保存为png2pdf.py,放在包含 PNG 序列图片的目录下;
  2. 打开终端 / 命令行,进入该目录,执行python png2pdf.py
  3. 程序会自动找到所有 PNG 文件,按顺序生成名为png_sequence.pdf的文件;
  4. 若想自定义输出 PDF 名称,可修改pngs_to_pdf(output_pdf_name="自定义名称.pdf")

测试示例

假设当前目录有文件:xxx_001.png、xxx_003.png、xxx_002.pngtest.png,运行程序后:

  • 输出:✅ 找到 4 个PNG文件,开始生成PDF...
  • 生成的 PDF 中图片顺序为:xxx_001.png → xxx_002.png → xxx_003.png → test.png
  • 最终在当前目录生成png_sequence.pdf

总结

  1. 核心依赖是Pillow库,需提前安装,程序仅处理当前目录下的 PNG 文件;
  2. 自动处理 PNG 透明通道问题,保证 PDF 生成成功率;
  3. 支持数字序列文件名排序,适配常见的图片序列场景;
  4. 包含完善的错误提示,新手也能快速定位问题;
  5. 生成pdf与所有原png对比,压缩率较高,看对比:

所有png图容量为754M,合成pdf后,pdf文件为102M,压缩率较高:

http://www.jsqmd.com/news/1263239/

相关文章:

  • 跨国AI与硬件融合:车载智能的技术突破与实践
  • 2026年7月最新实地考察:积家中国售后电话热线,多信源验证网点地址性 - 速递信息
  • 2026 年至今,绥棱有实力的马戏团表演出租联系方式公司哪家可靠,办活动想省心力?找到靠谱渠道的关键,就在这篇里藏着。 - 领域鉴赏官
  • 2026 年当下,开远专业的重型设备吊装正规商家哪家权威,这玩意儿怎么能让万吨构件稳稳落地?老工程师藏在吊装圈里的3个独门秘籍-全星起重装卸 - 企业推荐官【认证】
  • KMS智能激活脚本技术深度解析:从原理到企业级部署实践
  • 一键解决Windows软件兼容性问题:Visual C++运行库终极修复指南
  • PHP健康饮食推荐系统毕业设计:从部署到答辩的完整实践指南
  • Unity行为树插件Behavior Designer:从原理到实战构建高效AI
  • Agentic AI多智能体协同架构与产业应用解析
  • 抖音批量下载工具:免费无水印下载用户主页所有作品
  • 【CTF-MISC-日志分析】使用klogg分析日志内容
  • 工业AI落地关键技术:数据工程与模型轻量化实践
  • Video2X:开源AI视频超分辨率与帧率提升的终极解决方案
  • AI智能体记忆架构实战:从原理到LangChain集成与性能优化
  • 2026年7月帝舵售后多信源验证:从热线到网点地址,客户体验天差地别 - 速递信息
  • Dify实战指南:从零构建Agentic AI应用与可视化工作流
  • 2026年7月乐无忧镜片厂商推荐,渐进多焦点,满足多样视力需求 - 品牌推荐师
  • SSA-LSTM优化时间序列预测:原理与工程实践
  • 如何实现微信聊天记录的终极备份?三步完成完整导出与智能数据分析
  • C++编程避坑指南:从内存管理到多线程的常见陷阱与解决方案
  • 2026年屋顶稀土隔热行业深度评测:技术之争与头部服务商实力拆解
  • FastWan-QAD:1.8秒生成5秒视频的量化感知蒸馏技术解析
  • AI模型微调引发安全对齐崩溃的机制与应对
  • 154k Stars 开源神器 Firecrawl v2.11.0 全解|网页抓取 API 从源码、部署到 RAG 实战终极指南
  • 物理计算驱动AI:Un-0模型原理与模拟实现
  • 涂胶显影机(Track)技术岗初级工程师完整JD(12维度)+对外简化版JD
  • AI编程助手套餐选择指南:从额度倍率到弹性工作流构建
  • Krea2升级实战:RAW+Turbo模式解析与4K放大工作流优化
  • 2026最新款图吧工具箱下载+使用教程(附下载链接)
  • Agentic Workflow 四大模式代码实测:Reflection 比 Multi-agent 更省成本?在 Taotoken 平台的意外发现