PDF 補丁丁(PDFPatcher)
感謝您關注PDF 補丁丁,請在使用軟體或原始程式碼前閱讀本說明和授權協議。本軟體及原始碼採用AGPL+「良心授權」協議-使用者每次使用本軟體後如有所獲益,應行一善事;如使用原始碼開發了新的軟體並獲得收益,應將收益中不低於千分之一的金額捐贈給社會的弱勢族群。
功能簡介
PDF 補丁丁是一個PDF 處理工具。它具有以下功能:
- 修改PDF 文件:修改文件屬性、頁碼編號、頁面連結;統一頁面尺寸;刪除自動開啟網頁等動作;移除複製及列印限制;設定閱讀器初始模式;清理文件隱藏垃圾資料;重新壓縮黑白圖片;旋轉頁面。
- 貼心PDF 書籤編輯器:具有閱讀介面(具有便於閱讀垂直文件的從右到左閱讀方式),可大量修改PDF 書籤屬性(顏色、樣式、目標頁碼、縮放比例等),書籤可精確定位到頁面中間;在書籤中執行查找替換(支援正規表示式及XPath 匹配、可快速選擇篇、章、節書籤),自動快速產生文件書籤。
- 製作PDF 文件:合併已有PDF 文件或圖片,產生新的PDF 文件;合併後的PDF 文件帶有原始文檔的書籤,還可掛上新書籤(或根據文件名生成),新書籤文本和样式可自訂;合併的PDF 文件可指定統一的頁面尺寸,以便列印和閱讀。
- 拆分或合併PDF 文件,並保留原文件的書籤或掛上新的書籤。
- 高速無損匯出PDF 文件的圖片。
- 將PDF 頁面轉換為圖片。
- 擷取或刪除PDF 文件中指定的頁面,調整PDF 文件的頁面順序。
- 根據PDF 文件元資料重新命名PDF 文件名。
- 呼叫微軟Office 的圖像辨識引擎分析PDF 文件圖片中的文字;將圖片PDF 的目錄頁轉換為PDF 書籤。識別結果可寫入PDF 文件。
- 替換字型:替換文件中使用的字型;嵌入字庫到PDF 文檔,消除複製文字時的亂碼,使其可在沒有字庫的裝置(如Kindle 等電子書閱讀器)上閱讀。
- 分析文件結構:以樹狀視圖顯示PDF 文件結構,可編輯修改PDF 文件節點,或將PDF 文件匯出成XML 文件,供PDF 愛好者分析、調試之用。
- 永久免費,絕不過時,無廣告,無彈出廢話對話框,不窺探隱私。
授權協議
《PDF 補丁丁》軟體(以下簡稱本軟體)受著作權法及國際條約條款及其它智慧財產權法及條約的保護。 本軟體對於最終用戶免費。由於本軟體使用了具有AGPL 條款的第三方開源元件,因此,本軟體及其原始碼的使用協議也基於AGPL。另外還附帶如下附加條件。在遵守本軟體的前提條件下,你可以在遵循本協議的基礎上自由的使用和傳播它,你一旦安裝、複製或使用本軟體,則表示您已經同意本協議條款。如果你不同意本協議,請不要安裝使用本軟體,也不應利用其原始碼。
附加條件: 每一個使用本軟體的用戶,如果本軟體幫助了您,每使用本軟體後,您應當做1 件善事。善事無分大小,有心則行。例如:
- 如果您的父母在身邊,你可以為您的父母做一頓美味的飯菜,或者為他們按摩、洗腳;如果他們身處遠方,你可以向他們發起通話,問候他們的健康和生活。
- 在大雨滂沱的時候,如果您有雨傘,可與同路的人共享;在烈日當空的時節,如果您看到環衛工人太陽下工作,您可以為他們買一瓶水送給他們;在擁擠的在公共交通工具上,或在公共場合排隊等候之際,如果您有座位,可以讓給老人、孕婦或提著重物的人就坐。
- 您可以用您擅長的技能,為身邊的人排難解困;您可以將您的知識,分享給其他人,讓他們有所獲益;您可以向比您困難的人捐資贈物。
- 如果您覺得這個軟體真的好用,請將它的使用方法介紹給別人,讓別人也透過使用本軟體而得到好處;或者將其它您覺得好用的軟體介紹給別人。
若您無法做到使用本軟體後做1 件善事,請記在心中。在有機會的時候,多行善積德。本使用者協議之遵循與否,全在於您的良心。是為「良心授權」。
相關定義:
- 軟體:軟體是指《PDF 補丁丁》軟體以及它的更新、產品手冊,以及線上文件等相關載體。
- 限制:你可以使用本軟體的原始碼開發應用程式(自由、分享或商用),也可以任意方式分發數量不限的本軟體的完整拷貝,但前提是: ① 你分發軟體時必須提供本軟體的完整版本,未經許可不得對軟體乃至它的安裝程序做任何修改; ② 你分發軟體時不能更改本授權協議; ③ 你如果在商業性宣傳活動、產品中附加本軟體,應獲得著作權人的書面許可; ④ 你如果利用本軟體的源代碼編寫了其它軟體,並且產生了銷售收入,應當將該軟體銷售收入不低於千分之一的金額捐獻給社會上的弱勢群體。
- 支援:軟體會因使用者的需求而不斷更新,著作權人將提供包括使用者手冊、電子郵件等各種相關資訊支持,但軟體並未確保支援內容和功能不會發生變更。
- 終止:當你不同意或違反本協議的時候,協議將自動終止,你必須立即刪除本軟體產品。
- 版權:本軟體及原始碼受著作權法及國際條約條款和其它智慧財產權法及條約的保護。
- 免責:對於本軟體安裝、複製、使用中導致的任何損失,本軟體及著作權人不負責任。
常用的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 編譯出來的動態元件庫可在作者另一個開放原始碼庫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 7 上述版本的作業系統。
- .NET Framework 4.0 到4.8 版本。
- 使用文字辨識功能需要安裝Microsoft Office 2003(或2007)的Document Imaging 元件(MODI)。
- 編譯程式原始碼,建議使用Visual Studio 2019 或更新版本,並安裝「.NET 桌面開發」(用於編譯PDF 補丁丁原始碼)和「C++ 桌面開發」(用於編譯JBIG2 編碼元件)兩個工作負載。如使用Visual Studio 2022,可能會遇到專案「針對不再支援的.NET Framework」、需要「將目標更新為.NET Framework 4.8」的問題。簡單方法是將目標更新為.NET Framework 4.8,如不更新目標,請參考這篇文章介紹的方法。
聯繫作者
除第三方元件外,本軟體的原始碼完全開放:
https://github.com/wmjordan/PDFPatcher
https://gitee.com/wmjordan/pdfpatcher
建議透過開放原始碼網站透過提交issue 的方式提交您的建議或需求。因日常工作繁忙,暫不提供加QQ 或微信諮詢的服務,敬請諒解。
在郵件或訊息中,請註明你的版本號,附上截圖和附件,詳細說明你遇到的問題。
如遇到需要提供附件的情況,請把它搞小一點。一般情況下,最好不要發送超過10M 的附件。
- 對於PDF 文件,可用「提取頁面」功能提取有代表性的頁面。
- 圖片文件,請壓縮來源文件,或提供代表性的一兩頁圖片。