持中文的 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 - margin
    c.setFont("SimSun", 12)

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


🧪 使用体验与扩展建议

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

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

📦 项目部署建议

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