PDF 补丁丁开放源代码
PDF补丁丁是一个多功能的 PDF 文档工具箱,在 2009 年开始,我开始了该程序的开发,到现在也已经有十二年了。它致力于解除 PDF 文档的烦恼,带有一个强大的 PDF 书签编辑器(可自动生成书签),有超快的从 PDF 文档里无损提取图片的能力,又可以合并图片和 PDF 文档,统一页面尺寸,清除文档的打印和复制限制,这些功能都是这些年来一直为用户所喜爱的。对于高端开发者,又提供了文档结构探查器等一系列功能。
根据前一篇文章的预告,从今天开始,PDF 补丁丁的源代码(除第三方组件外)将完全开放,供有心人学习 PDF 文档处理技术之用。请使用者留意的是本软件及源代码采用“良心授权”协议——用户每次使用本软件后如有所获益,应行一善事;如使用源代码开发了新的软件并获得收益,应将收益中不低于千分之一的金额捐赠给社会的弱势群体。
仓促之间,未来得及删除捐赠二维码,本软件并不再需要用户捐赠,捐款二维码将在日后从软件界面中删除。
具体请见开放源代码网站:https://github.com/wmjordan/PDFPatcher
常用的 PDF 开源组件简介
PDF 文档的规范可从网上找到,一般来说,ISO 32000 是 PDF 文档处理器开发者的必读文献。PDF 文档涉及印刷领域的多项技术,并有其独特的文档结构,还使用了多种数据压缩算法。要从零开始编写 PDF 文档的处理程序,通常是困难而不太现实的。
PDF 补丁丁使用 .NET Framework 开发,主要采用 iText 和 MuPDF 这两个开放源代码的 PDF 组件来处理 PDF 文档。
前者是 .NET 组件,与 PDF 主程序具有较好的互操作性,并且在解析、生成和修改 PDF 文档,以及嵌入 TTF 字体子集这些功能上,优胜于后者。
后者采用 C 语言开发并编译,与前者相比,其最大的优点是具有渲染 PDF 文档为位图的功能。编译出来的动态组件库可在我另一个开放源代码库 https://github.com/wmjordan/SharpMuPDF 下载。PDF 补丁丁通过 P/Invoke 技术调用该组件库的功能。
除了 PDF 开源组件之外,程序还使用了 WinForms 的一些优秀开源组件,以帮助开发。例如 ObjectListView 这个强大的列表控件、FreeImage 来读取和解码各种类型的点阵图像文件、Cyotek 的 ImageBox 用于显示渲染好的 PDF 文档页面、TabControlExtra 用于构建选项卡式文档界面、HTMLRenderer 用于显示 HTML 网页界面等等。
这些组件在源代码网站的 App/Lib 目录中。
源代码的结构
- App 目录:PDF补丁丁主程序
- Common:一些常用的工具类
- Functions:用于呈现软件各类功能的窗体和控件
- Lib:程序使用的第三方组件
- Model:编辑文档时所用的高级模型(基础数据模型由 iText 和 MuPDF 的类实现)
- Options:程序的选项
- Processor:进行 PDF 文档处理的算法(其中 Mupdf 目录里放置了 P/Invoke 调用 MuPDF 的类)
- bin 目录:放置程序编译输出的可执行文件
- doc 目录:放置程序的使用文档(暂缺)
- JBig2 目录:放置 JBIG2 图像的编码和解码库代码
最新文章
- 深度系统deepin使用初体验
- 栈,队列的java实现
- python基本数据结构-字典-方法
- Android项目环境搭建
- Qt:禁止qDebug的输出
- 老蜗牛写采集:一个漂亮的客户端-几个C#平台下的Winform 皮肤控件
- javascript - 工作笔记 (事件三)
- 8、手把手教你Extjs5(八)自定义菜单2
- R学习笔记 第二篇:矩阵、数组和列表
- Spark RDDs vs DataFrames vs SparkSQL
- 聊一聊快速排序(Js)
- Js/Jquery 关闭 离开或刷新当前页面时提醒,和执行解绑取消提醒
- 关注网页的更新状况,了解最新的handsup 消息.
- 修改linux镜像
- Java调用R语言
- JAVAWEB 一一ibatis(框架)
- 安卓hid驱动触摸屏
- Heroku第三方服务接入指南(二)
- 【Android】Sensor框架HAL层解读
- 安卓程序代写 网上程序代写[原]BluetoothDevice详解