12年歷史的 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 2019

工作負載:.NET 桌面開發、C++桌面開發(帶 Windows 10 SDK)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM