引言
"永久免费,绝不过期,无广告,无弹出废话对话框,不窥探隐私。"
这是「一天一个开源项目」系列的第 53 篇文章。今天介绍的项目是 PDF 补丁丁(PDFPatcher,GitHub)。
需要编辑 PDF 书签、解除复制打印限制、合并拆分文档、提取图片、将图片 PDF 转为可搜索书签?PDF 补丁丁是一款基于 .NET 框架的 PDF 工具箱:支持编辑书签、剪裁旋转页面、解除限制、提取或合并文档、探查文档结构、OCR 识别、字体替换等,采用 AGPL + 良心授权,永久免费、无广告、无弹窗。
你将学到什么
- PDF 补丁丁的核心功能与使用场景
- 技术架构:iText + MuPDF 双引擎
- 书签编辑器、文档合并、OCR 等特色功能
- 良心授权协议的含义
- 与同类 PDF 工具的对比
前置知识
- 对 PDF 文档有基本了解
- Windows 系统使用经验(本工具仅支持 Windows)
项目背景
项目简介
PDF 补丁丁(PDFPatcher)是一款 PDF 处理工具,基于 .NET Framework 开发,主要采用 iText 和 MuPDF 两个开源组件。iText 负责解析、生成、修改 PDF 及嵌入字体;MuPDF 负责渲染 PDF 为位图。功能覆盖编辑、制作、拆分、合并、OCR、结构分析等。
作者
- 作者:wmjordan
- 仓库:GitHub、Gitee 双平台同步
- 官网:pdfpatcher.cnblogs.com
项目数据
- 📄 License: AGPL + 良心授权
- 📦 版本: v1.1.0
- 🌐 文档: GitHub README、使用手册.docx
- 💬 社区: GitHub Issues
主要功能
核心功能
| 类别 | 功能 |
|---|---|
| 修改文档 | 文档属性、页码编号、页面链接;统一页面尺寸;删除自动打开网页等动作;去除复制及打印限制;设置阅读器初始模式;清理隐藏垃圾;重新压缩黑白图片;旋转页面 |
| 书签编辑 | 带阅读界面(支持竖排从右到左);批量修改书签属性;书签精确定位;查找替换(正则、XPath);自动快速生成书签 |
| 制作 PDF | 合并 PDF 或图片;保留原书签或挂新书签;根据文件名生成书签;统一页面尺寸 |
| 拆分合并 | 拆分或合并 PDF,保留或挂上新书签 |
| 提取导出 | 高速无损导出图片;页面转图片;提取或删除指定页面;调整页面顺序 |
| 高级功能 | 根据元数据重命名;OCR 识别(调用微软 Office MODI);图片 PDF 目录页转书签;替换字体;嵌入字库到 PDF |
| 结构分析 | 树视图显示文档结构;编辑修改节点;导出为 XML |
使用场景
- 电子书整理:合并扫描 PDF、生成书签、统一页面尺寸
- 文档去限制:去除复制、打印限制,便于阅读和引用
- 批量处理:根据元数据重命名、提取页面、批量导出图片
- 图片 PDF 优化:OCR 识别目录页,转为可点击书签
- 字体嵌入:嵌入字库到 PDF,解决 Kindle 等设备乱码
快速开始
运行环境:
- Windows 7 及以上
- .NET Framework 4.0–4.8
- OCR 功能需安装 Microsoft Office 2003/2007 的 Document Imaging 组件(MODI)
下载与安装:
从 GitHub Releases 下载最新版,解压即可使用,无需安装。
编译源码(可选):
- Visual Studio 2022 或更新版本
- 安装「.NET 桌面开发」和「C++ 桌面开发」工作负载
- 目标框架建议 .NET Framework 4.8
良心授权
AGPL + 良心授权:软件基于 AGPL,附加条件为「用户每次使用后如有所获益,应行一善事」。善事无分大小,有心则行。若使用源码开发商业软件并产生收益,应将收益中不低于千分之一的金额捐赠给弱势群体。遵循与否全在于良心。
项目优势
| 对比项 | PDF 补丁丁 | 商业 PDF 工具 | 在线 PDF 工具 |
|---|---|---|---|
| 费用 | 永久免费 | 订阅制 | 免费/有限制 |
| 广告 | 无 | 无 | 可能有 |
| 隐私 | 本地处理 | 视产品而定 | 上传风险 |
| 功能深度 | 编辑、OCR、结构分析 | 功能全面 | 基础功能 |
| 平台 | 仅 Windows | 多平台 | 跨平台 |
项目详细剖析
技术架构
核心组件:
- iText:.NET 组件,解析、生成、修改 PDF,嵌入 TTF 字体子集
- MuPDF:C 语言库,渲染 PDF 为位图,通过 P/Invoke 调用(SharpMuPDF)
- JBig2:JBIG2 图像编码/解码
其他组件:ObjectListView、FreeImage、Cyotek ImageBox、TabControlExtra、HTMLRenderer 等。
源码结构
PDFPatcher/
├── App/ # 主程序
│ ├── Common/ # 工具类
│ ├── Functions/ # 功能窗体和控件
│ ├── Lib/ # 第三方组件
│ ├── Model/ # 高级模型
│ ├── Options/ # 程序选项
│ └── Processor/ # PDF 处理算法(含 Mupdf P/Invoke)
├── JBig2/ # JBIG2 编解码
├── doc/ # 使用文档
└── 使用手册.docx
特色功能说明
书签编辑器:支持正则表达式和 XPath 匹配,可快速选择篇、章、节书签,自动生成文档书签。
OCR 识别:调用 Microsoft Office 的 MODI(Document Imaging)组件,识别图片中的文字,将图片 PDF 目录页转换为可点击书签。
字体替换与嵌入:替换文档字体;嵌入字库到 PDF,解决 Kindle 等无字库设备的乱码问题。
项目地址与资源
官方资源
- 🌟 GitHub: github.com/wmjordan/PD…
- 🌐 Gitee: gitee.com/wmjordan/pd…
- 📚 文档: README、使用手册.docx
- 💬 Issues: GitHub Issues
适用人群
- 电子书整理、扫描 PDF 处理
- 需要解除 PDF 限制的用户
- 需要批量合并、拆分、提取页面的用户
- 需要 OCR 和字体嵌入的用户
- PDF 格式爱好者、开发者
欢迎来我中的个人主页找到更多有用的知识和有趣的产品