# 【转载】12年历史的 pdf 补丁丁，今天开放源代码了

**URL:** <https://forum.freemdict.com/t/topic/10232>\
**Category:** 软件经验交流展望\
**Created:** [2021 年12 月 29 日 15:15 UTC](https://forum.freemdict.com/t/topic/10232 "2021-12-29T15:15:12Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

作者： ![endnote](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/e/9de0a6/32.png) [@endnote](https://forum.freemdict.com/u/endnote)\
发布日期： [2021 年12 月 29 日 15:15 UTC](https://forum.freemdict.com/t/topic/10232/1 "2021-12-29T15:15:12Z")

</div>

良心免费软件，甚至有替换PDF内嵌字体的功能~  
感谢PDFPatcher作者多年的无私奉献！  
以下转载：

> **[12年历史的 PDF 补丁丁，今天开放源代码了 - PDF补丁丁 - 博客园](https://www.cnblogs.com/pdfpatcher/p/15728955.html)**
>
> PDF补丁丁是一个多功能的 PDF 文档工具箱，在 2009 年开始，我开始了该程序的开发，到现在也已经有十二年了。它致力于解除 PDF 文档的烦恼，带有一个强大的 PDF 书签编辑器（可自动生成书签），有超快的从 PDF 文档里无损提取图片的能力，又可以合并图片和 PDF 文档，统一页面尺寸，清除

PDF补丁丁是一个[多功能的 PDF 文档工具箱](https://www.cnblogs.com/pdfpatcher/archive/2011/02/25/Index.html)，在 2009 年开始，我开始了该程序的开发，到现在也已经有十二年了。它致力于解除 PDF 文档的烦恼，带有一个强大的 PDF 书签编辑器（可自动生成书签），有超快的从 PDF 文档里无损提取图片的能力，又可以合并图片和 PDF 文档，统一页面尺寸，清除文档的打印和复制限制，这些功能都是这些年来一直为用户所喜爱的。对于高端开发者，又提供了文档结构探查器等一系列功能。

根据[前一篇文章](https://www.cnblogs.com/pdfpatcher/p/15705930.html)的预告，从今天开始，PDF 补丁丁的源代码（除第三方组件外）将完全开放，供有心人学习 PDF 文档处理技术之用。请使用者留意的是本软件及源代码采用“ **良心授权** ”协议—— **用户每次使用本软件后如有所获益，应行一善事；如使用源代码开发了新的软件并获得收益，应将收益中不低于千分之一的金额捐赠给社会的弱势群体** 。

仓促之间，未来得及删除捐赠二维码，本软件并不再需要用户捐赠，捐款二维码将在日后从软件界面中删除。

具体请见开放源代码网站：[GitHub - wmjordan/PDFPatcher: PDF补丁丁——PDF工具箱，可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档，探查文档结构，提取图片、转成图片等等](https://github.com/wmjordan/PDFPatcher)  
[PDFPatcher-master.zip](https://forum.freemdict.com/uploads/short-url/aLw0YVXqwyQFp5732GCKdIgDBu1.zip) (16.6 MB)

## 常用的 PDF 开源组件简介

PDF 文档的规范可从网上找到，一般来说，ISO 32000 是 PDF 文档处理器开发者的必读文献。PDF 文档涉及印刷领域的多项技术，并有其独特的文档结构，还使用了多种数据压缩算法。要从零开始编写 PDF 文档的处理程序，对于一般人而言，通常是困难而不太现实的。

PDF 补丁丁使用 .NET Framework 开发，主要采用 iText 和 MuPDF 这两个开放源代码的组件库来处理 PDF 文档。

前者是 .NET 组件，与 PDF 主程序具有较好的互操作性，并且在解析、生成和修改 PDF 文档，以及嵌入 TTF 字体子集这些功能上，优胜于后者。

后者采用 C 语言开发并编译，与前者相比，其最大的优点是具有渲染 PDF 文档为位图的功能。MuPDF 编译出来的动态组件库可在我另一个开放源代码库 [GitHub - wmjordan/SharpMuPDF: Compiled DLL for MuPDF (https://github.com/ArtifexSoftware/mupdf) with a C# P/Invoke demo program](https://github.com/wmjordan/SharpMuPDF) 下载。PDF 补丁丁通过 P/Invoke 技术调用该组件库的功能。

除了 PDF 开源组件之外，程序还使用了其它优秀开源组件。例如 ObjectListView 这个强大的列表控件、FreeImage 来读取和解码各种类型的点阵图像文件、Cyotek 的 ImageBox 用于显示渲染好的 PDF 文档页面、TabControlExtra 用于构建选项卡式文档界面、HTMLRenderer 用于显示 HTML 网页界面等等。

## 源代码的结构

- App 目录：PDF补丁丁主程序
  - Common：一些常用的工具类
  - Functions：用于呈现软件各类功能的窗体和控件
  - Lib：程序使用的第三方组件
  - Model：编辑文档时所用的高级模型（基础数据模型由 iText 和 MuPDF 的类实现）
  - Options：程序的选项
  - Processor：进行 PDF 文档处理的算法（其中 Mupdf 目录里放置了 P/Invoke 调用 MuPDF 的类）

- bin 目录：放置程序编译输出的可执行文件
- doc 目录：放置程序的使用文档（暂缺）
- JBig2 目录：放置 JBIG2 图像的编码和解码库代码

## 编译环境

Windows 10，Visual Studio 2019

工作负载：.NET 桌面开发、C++桌面开发（带 Windows 10 SDK）

---

<div class="post-metadata">

作者： ![shiruxue](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shiruxue](https://forum.freemdict.com/u/shiruxue)\
发布日期： [2021 年12 月 29 日 15:20 UTC](https://forum.freemdict.com/t/topic/10232/2 "2021-12-29T15:20:22Z")

</div>

一直都在用。

---

<div class="post-metadata">

作者： ![王绍军](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/%E7%8E%8B/e95f7d/32.png) [@王绍军](https://forum.freemdict.com/u/%E7%8E%8B%E7%BB%8D%E5%86%9B)\
发布日期： [2021 年12 月 29 日 15:40 UTC](https://forum.freemdict.com/t/topic/10232/3 "2021-12-29T15:40:14Z")

</div>

作者咋说的这么伤感呢。静等大咖出手，全力支持 👍 👍 👍 👍 👍

---

<div class="post-metadata">

作者： ![myfav](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/a183cd/32.png) [@myfav](https://forum.freemdict.com/u/myfav)\
发布日期： [2021 年12 月 30 日 00:06 UTC](https://forum.freemdict.com/t/topic/10232/4 "2021-12-30T00:06:20Z")

</div>

PDF补丁丁异常强大！源码虽看不懂，依着小仓鼠的习性，也赶紧下载一份，屯着！

---

<div class="post-metadata">

作者： ![skippy](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/skippy/32/8444_2.png) [@skippy](https://forum.freemdict.com/u/skippy)\
发布日期： [2021 年12 月 30 日 02:43 UTC](https://forum.freemdict.com/t/topic/10232/5 "2021-12-30T02:43:06Z")

</div>

用了好一陣子，確實是不錯的pdf工具。真要挑點兒毛病，得說界面不夠漂亮，而且只有簡體中文。希望有本事的朋友能加以改進，至少出個英語界面的版本，讓更多人能使用。

---

<div class="post-metadata">

作者： ![老门2019](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E8%80%81%E9%97%A82019/32/18613_2.png) [@老门2019](https://forum.freemdict.com/u/%E8%80%81%E9%97%A82019)\
发布日期： [2022 年2 月 25 日 02:51 UTC](https://forum.freemdict.com/t/topic/10232/6 "2022-02-25T02:51:03Z")

</div>

> [@endnote](#):
>
> MuPDF

下载了MuPDF，想解密一个已加密的PDF文档，却发现不会用

---

<div class="post-metadata">

作者： ![WalkingDictionary](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/41988e/32.png) [@WalkingDictionary](https://forum.freemdict.com/u/WalkingDictionary)\
发布日期： [2022 年2 月 27 日 03:21 UTC](https://forum.freemdict.com/t/topic/10232/7 "2022-02-27T03:21:16Z")

</div>

谢谢分享！不过下载解压后无可执行文件。

---

<div class="post-metadata">

作者： ![老门2019](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E8%80%81%E9%97%A82019/32/18613_2.png) [@老门2019](https://forum.freemdict.com/u/%E8%80%81%E9%97%A82019)\
发布日期： [2022 年2 月 28 日 02:47 UTC](https://forum.freemdict.com/t/topic/10232/8 "2022-02-28T02:47:18Z")

</div>

楼主放出来的是源代码。  
可执行文件要去MuPDF的网站下载，好像很多功能需要命令行实现，暂时用不来。

---

<div class="post-metadata">

作者： ![shaoshi](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/shaoshi/32/14529_2.png) [@shaoshi](https://forum.freemdict.com/u/shaoshi)\
发布日期： [2024 年11 月 15 日 06:57 UTC](https://forum.freemdict.com/t/topic/10232/9 "2024-11-15T06:57:38Z")

</div>

呃，很久以前就看到这个帖子，没管它。

今天需要找个工具拆分pdf，重新找这个帖子。

首先下载顶楼的PDFPatcher-master.zip。

啊，不对，用不起来。然后看到楼下说只是源码。

又有一个人说去MuPDF的网站。去了，也无所得。

谷歌pdfpatcher，去到主楼提供的Github链接(原来主楼有，发这个帖子时论坛软件才告诉我主楼有这个链接)，

看到右边的 [pdfpatcher.cnblogs.com/](http://pdfpatcher.cnblogs.com/) 。

去到：[https://www.cnblogs.com/pdfpatcher](https://www.cnblogs.com/pdfpatcher)

啊，像玩寻宝游戏。

右下的链接慢如龟速，放弃。

最后发现得从左上角键入页面提供的链接，键入密码进去。

进去后只能选慢速下载，要不然得用客户端或付钱？

慢速得慢慢等，慢慢慢慢慢慢等

啊，文件也不大，反正是免费软件。既然费了大功夫下载，干脆传上来吧。

[PDFPatcher.1.0.4.4514.7z](https://forum.freemdict.com/uploads/short-url/ptl0RUw4KS6eDsqj24q8vJzIaGQ.7z)

配图

 ![budingding](https://forumcdn.freemdict.com/uploads/default/original/3X/4/b/4b743e105feb777667316a7bced976c518c8adeb.jpeg)

[PDFPatcher.1.0.4.4514.7z|attachment](upload://ptl0RUw4KS6eDsqj24q8vJzIaGQ.7z) (7.4 MB)

我先声明，我用微软的反病毒软件扫了毒，但不挂担保。

想用的自负风险。

要先扫毒，备份了硬盘数据才能用，或者放在沙盘里用。

打开巨大的pdf速度挺快。3g的pdf开启，脸不红，气不喘。

试了拆分pdf功能：

工具箱 – 提取文档内容 – 提取页面或拆分文档

速度很快，没有错误。

 ![splitpdf](https://forumcdn.freemdict.com/uploads/default/original/3X/0/b/0b304c1599f9b053f753a123b52a145ce913c8a8.jpeg)

[提取图片](https://forum.freemdict.com/t/topic/16754/13)也可以用 PDF补丁丁。

---

<div class="post-metadata">

作者： ![jcz777](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jcz777/32/60576_2.png) [@jcz777](https://forum.freemdict.com/u/jcz777)\
发布日期： [2024 年11 月 15 日 09:16 UTC](https://forum.freemdict.com/t/topic/10232/10 "2024-11-15T09:16:04Z")

</div>

你没找对链接吧，[https://drfs.ctcontents.com/file/12751606/1378036760/a96fcb/PDFPatcher/PDFPatcher.1.0.4.4514.7z](https://drfs.ctcontents.com/file/12751606/1378036760/a96fcb/PDFPatcher/PDFPatcher.1.0.4.4514.7z)  
这个不用跳到城通网盘。反正我这里是秒下。（看网址，好像还是城通，应该是直链吧）

---

<div class="post-metadata">

作者： ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
发布日期： [2024 年11 月 15 日 10:32 UTC](https://forum.freemdict.com/t/topic/10232/11 "2024-11-15T10:32:50Z")

</div>

开源软件植入病毒，没几个人敢这么做，看看源码人尽皆知。查毒杞人忧天。

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2024 年11 月 15 日 11:37 UTC](https://forum.freemdict.com/t/topic/10232/12 "2024-11-15T11:37:39Z")

</div>

> [@shaoshi](#):
>
> 打开巨大的pdf速度挺快。3g的pdf开启，脸不红，气不喘

因为这个速度，很早就有人怀疑核心库用的 MuPDF，看代码果然是这样。商业软件不敢用这个，所以速度没这个软件快。

---

<div class="post-metadata">

作者： ![shaoshi](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/shaoshi/32/14529_2.png) [@shaoshi](https://forum.freemdict.com/u/shaoshi)\
发布日期： [2024 年11 月 15 日 12:53 UTC](https://forum.freemdict.com/t/topic/10232/13 "2024-11-15T12:53:52Z")

</div>

去搜了一下Mupdf，发现Sumatra PDF也是用Mupdf的。

Sumatra PDF  
[https://www.sumatrapdfreader.org/downloadafter](https://www.sumatrapdfreader.org/downloadafter)

这个我很久以前用过，放弃了。再去下载了一个新版。只有视窗版，下载了一个绿色免安装版。

打开pdf的速度很快，能搜索中文文字pdf，而且速度奇快。

虽说能打开epub、chm，试过不管用。

但是看djvu倒是可以。

---

<div class="post-metadata">

作者： ![Celestin](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/c/f4b2a3/32.png) [@Celestin](https://forum.freemdict.com/u/Celestin)\
发布日期： [2024 年11 月 16 日 03:28 UTC](https://forum.freemdict.com/t/topic/10232/14 "2024-11-16T03:28:42Z")

</div>

感谢作者，自己也用这个软件不知不觉有10年了～跟自己主力pdf软件有关，补丁丁有时依赖高，有时依赖少些，但一直备着补丁丁～

---

<div class="post-metadata">

作者： ![secret61](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@secret61](https://forum.freemdict.com/u/secret61)\
发布日期： [2024 年11 月 20 日 06:44 UTC](https://forum.freemdict.com/t/topic/10232/15 "2024-11-20T06:44:43Z")

</div>

为啥不敢用Mupdf？

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2024 年11 月 21 日 07:18 UTC](https://forum.freemdict.com/t/topic/10232/16 "2024-11-21T07:18:24Z")

</div>

AGPL 协议的代码不允许商业使用。

---

<div class="post-metadata">

作者： ![ad困困](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/a/87869e/32.png) [@ad困困](https://forum.freemdict.com/u/ad%E5%9B%B0%E5%9B%B0)\
发布日期： [2024 年11 月 21 日 08:23 UTC](https://forum.freemdict.com/t/topic/10232/17 "2024-11-21T08:23:36Z")

</div>

个人自己用就行，备着软件呢没怎么用。

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2024 年11 月 21 日 11:25 UTC](https://forum.freemdict.com/t/topic/10232/18 "2024-11-21T11:25:57Z")

</div>

其实按 AGPL 协议的规定只要分发软件就必须开源所有代码，不区分是否个人使用。MuPDF 很多 APP 都在悄悄使用，因为太好用了，很多江湖传说就这么来的，毕竟只要软件作者自己不说，别人也很难知道。（猜的不算数 😄
