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

持中文的 TXT 合并 PDF 工具 —— GUI + ReportLab 实战

在日常办公或文档整理中,我们常常需要将多个 TXT 文件合并成一个 PDF 文档,尤其是中文内容的处理更是令人头疼。今天,我将分享一个基于 Python 的桌面应用程序,它不仅支持多文件合并,还完美兼容中文字体显示,界面友好,操作简单。

C:\pythoncode\new\multitxtfilemegerintopdf.py

🧠 技术栈概览

  • wxPython:用于构建跨平台 GUI 界面
  • ReportLab:用于生成 PDF 文件
  • TTFont + SimSun.ttf:解决中文字体渲染问题

🖼️ 应用界面功能

该工具采用 wxPython 构建图形界面,主要包含以下控件:

  • 📂 文件列表框:展示已选择的 TXT 文件
  • 🔘 按钮组:
    • “选择TXT文件”:支持多选
    • “全选”:快速选中所有文件
    • “合并为PDF”:执行合并操作并保存输出

用户可以通过文件对话框选择多个 TXT 文件,点击“合并为PDF”后,程序将自动将内容整合并输出为一个 PDF 文件。


🧩 中文字体支持的关键点

ReportLab 默认不支持中文字体,因此我们需要手动注册一个中文 TTF 字体文件:

pdfmetrics.registerFont(TTFont("SimSun", "simsun.ttf"))

这一步确保了 PDF 中的中文内容不会出现乱码或方框。程序还会在启动时检查字体文件是否存在,避免运行时错误。


📄 PDF 生成逻辑解析

核心函数 create_pdf() 负责将多个 TXT 文件内容写入 PDF:

  • 设置页面尺寸为 A4,定义边距和行高
  • 每个文件内容前添加文件名作为标题
  • 自动分页处理,避免内容溢出
  • 使用 drawString() 方法逐行写入文本
if y < margin:c.showPage()y = height - marginc.setFont("SimSun", 12)

这段逻辑确保每页内容不会超出边界,并在新页继续写入。


🧪 使用体验与扩展建议

该工具适合快速整理会议记录、日志文件、文本资料等,尤其在中文环境下表现稳定。未来可以考虑:

  • ✅ 支持 TXT 编码自动识别(如 GBK)
  • ✅ 添加字体选择功能
  • ✅ 支持 PDF 样式自定义(如页眉、页脚、分页符)

📦 项目部署建议

  • simsun.ttf 放入程序目录
  • 使用 PyInstaller 打包为 EXE,方便分发
  • 可集成到文档管理系统或自动化流程中

http://www.xdnf.cn/news/17234.html

相关文章:

  • Emacs 折腾日记(二十九)—— 打造C++ IDE
  • 使用 Grunt 替换 XML 文件中的属性值
  • 亚马逊跨类目铺货广告运营:从粗放投放to智能提效的省力法则
  • iOS混淆工具有哪些?跨平台 App 混淆与保护的实用方案
  • 零基础深度学习规划路线:从数学公式到AI大模型的系统进阶指南
  • 基于linux环境在centos7上部署gitlab
  • Claude Code 实战场景解析:从代码生成到系统重构的典型应用案例
  • 【类与对象(中)】C++类默认成员函数全解析
  • 智慧农业温室大棚物联网远程监控与智能监测系统
  • 一站式体育赛事平台源码解决方案
  • 虚拟机Ubuntu图形化界面root用户登录错误
  • 用 Go 写个极简反向代理,把 CC 攻击挡在业务容器之外
  • 设计模式(二)——策略模式
  • ABP VNext + Fody AOP:编译期织入与性能监控
  • JDK、eclipse的安装,配置JDK、Tomcat并使用eclipse创建项目
  • 为什么提升模型尺度可以提升模型的CoT能力
  • 人工智能基础知识笔记十五:文本分块(Chunk)
  • React+TypeScript代码注释规范指南
  • 【JMeter】调试取样器的使用
  • 【性能测试】-2- JMeter工具的使用
  • c++注意点(15)----设计模式(桥接模式与适配器模式)
  • 深入理解VideoToolbox:iOS/macOS视频硬编解码实战指南
  • TDSQL GTS文件说明
  • cAdvisor 容器监控软件学习
  • Pygame音频播放的最简框架代码示例
  • Java选手如何看待Golang
  • 质子试验:守护芯片安全的关键防线
  • Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害数值模拟与预警中的应用(388)
  • 基于Go的抗封禁爬虫引擎设计
  • 一文可视化分析2025年6月计算机视觉顶刊IJCV前沿热点