惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
MyScale Blog
MyScale Blog
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
Martin Fowler
Martin Fowler
酷 壳 – CoolShell
酷 壳 – CoolShell
N
Netflix TechBlog - Medium
MongoDB | Blog
MongoDB | Blog
I
InfoQ
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Help Net Security

博客园 - PDF补丁丁

PDF补丁丁1.2新测试版 PDF 补丁丁 1.1.0 版发布 使用PDF补丁丁迁移PDF文档的书签 PDF 补丁丁 1.1.0 测试版 PDF 补丁丁 1.0.4 版更新 PDF 补丁丁 1.0.3 版更新 PDF 补丁丁 1.0.2 版更新 PDF 补丁丁 1.0.1 版更新 PDF 补丁丁 1.0 正式版 有哪些因素影响 PDF 文档的压缩率 如何在 PDF 补丁丁中使用 MODI 识别文本 PDF补丁丁将发布开放源代码的1.0版本 PDF 补丁丁 0.6.2.3694 测试版发布及近况 PDF 补丁丁 0.6.2.3691 测试版发布 PDF 补丁丁 0.6.2.3689 测试版发布 提问须知 PDF 补丁丁 0.6.2.3572 测试版发布 PDF 补丁丁 0.6.2 测试版发布 PDF 补丁丁 0.6.1.3498 版重大更新:为文本PDF文档自动生成书签!
12年历史的 PDF 补丁丁,今天开放源代码了
PDF补丁丁 · 2021-12-24 · via 博客园 - PDF补丁丁

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

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

详见开放源代码网站:https://github.com/wmjordan/PDFPatcher

常用的 PDF 开源组件简介

PDF 文档的规范(ISO 32000-1:2008 《Document management — Portable document format — Part 1:PDF 1.7》)可从网上找到,一般来说,它是 PDF 处理程序开发者的必读文献。

PDF 文档格式中涉及印刷领域的多项技术,并有其独特的文档结构,还使用了多种数据压缩算法。要从零开始编写 PDF 文档的处理程序,对于一般人而言,通常是困难而不太现实的。PDF 补丁丁使用 .NET Framework 开发,主要采用 iText 和 MuPDF 这两个开放源代码的组件库来处理 PDF 文档。

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

后者采用 C 语言开发并编译,与前者相比,其最大的优点是具有渲染 PDF 文档为位图的功能。MuPDF 编译出来的动态组件库可在我另一个开放源代码库 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 的类)
  • doc 目录:放置程序的使用文档(暂缺)
  • JBig2 目录:放置 JBIG2 图像的编码和解码库代码

编译环境

Windows 10,Visual Studio 2022

工作负载:.NET 桌面开发、C++桌面开发(带 Windows 10 SDK)