PDFium Delphi Component 是一套完整的專業級元件庫,為 Delphi 與 C++Builder 應用程式帶來強大的 PDF 處理與檢視能力。它使用 PDFium 算繪引擎進行頁面算繪與文件讀取,並以 Object Pascal 實作該引擎未提供的一切
這個區別在評估本元件庫時非常重要。PDFium 負責繪製頁面、擷取文字並讀取既有結構;它無法簽署文件、寫入加密、驗證 PDF 標準,也無法輸出線性化或增量修訂。PDFium Delphi Component 隨附約 115,000 行 Object Pascal、橫跨 55 個單元,其中超過 62,000 行位於 36 個在 PDFium API 中完全沒有對應物的單元 — 密碼學、簽章、加密、標準一致性、PDF 序列化、表單資料交換、版面配置與文字塑形。以上全部以原始碼形式交付
本元件庫由三個註冊元件組成:負責文件處理與操作、具 475 個公開成員的 TPdf;負責互動式視覺呈現、具 152 個公開成員的 TPdfView;以及負責頁面導覽的 TPdfThumbnailView。無論您是要打造簡單的 PDF 檢視器、簽署文件工作流程、封存轉換管線,還是完整的文件管理系統,PDFium Delphi Component 都能提供所需的工具與彈性
以下能力在 PDFium C API 中沒有對應物。每一項都由 PDFium Delphi Component 以 Object Pascal 實作,對照已發布的 ISO、ETSI、IETF 或 FIPS 條款驗證,並以原始碼形式提供
完整的簽署能力,而不只是讀取簽章。PDFium 只能回報簽章字典存在;PDFium Delphi Component 能夠建立它
SignPades、SignPadesToStream 與 SignPadesBytes 提供/Certs、/OCSPs 與 /CRLs、每個簽章專屬的 VRI 字典,以及 /Extensions /ESIC 標記/SubFilter /ETSI.RFC3161 且涵蓋整個檔案的 Document Time-stamp 字典,用於 B-LTAICmsSigner 介面之後PreparePadesRemoteSignature 與 CompletePadesRemoteSignature 將操作拆開,讓私鑰可以留在遠端服務或硬體模組內ValidatePades 回報文件達到的最高基線等級與條款級問題代碼;ValidatePadesTrust 與 ValidatePadesTrustAsync 再加上憑證鏈信任檢查SignPadesWithPdfA 依 EN 319 142-1 Annex A.7 在單一呼叫中轉換為 PDF/A-4 並完成簽署PDFium 能開啟加密檔案,但不會寫入加密。PDFium Delphi Component 依 ISO 32000-2 及其技術規範實作寫入端
SaveAsEncrypted 支援 V=5 / R=5 / R=6 金鑰推導,含演算法 2.B 的雜湊迭代,以及 /O /U /OE /UE /Perms 字典項目/Length 修正與重建的交互參考表/AuthCode 權杖 — CMS AuthenticatedData,附 HKDF 金鑰推導、金鑰包裝與 HMAC 驗證六個 ISO 標準家族,每個都有回報條款級結果代碼的驗證器,以及對應的儲存或標記注入路徑
引擎只提供一種循序的全檔儲存。應用程式經常需要更多,因此 PDFium Delphi Component 在引擎的語意輸出之上自行寫入修訂
SaveAsLinearized 產生 Fast Web View 檔案,附首頁群組、兩個交互參考節區,以及 Annex F 的頁面偏移與共用物件提示表SaveAsObjectStream 以頁面局部排序與完整的 type-2 交互參考涵蓋,將合格物件分組進 /ObjStmBeginIncrementalSave 與 CommitIncrementalSave 對加密或未加密來源只附加已變更與新增的間接物件,逐位元組保留先前的輸出及 /Prev、/Encrypt、/Info 與永久的 /ID;沒有變更的提交不會讓檔案增長SaveAsRepaired 寫出單一修訂副本,並在交付前以獨立的嚴格載入重新驗證TPdf.PdfVersion 重複使用 PDFium 剖析器狀態,僅執行八位元組標頭防護檢查,而不重新剖析來源文件TPdfRandomAccessStore 讓中繼資料保持在記憶體中直到 SaveMemoryLimit,之後遷移到獨佔的關閉時刪除暫存檔;核心儲存後處理對三個工作區採用同一原則,而預設 open-action 與 page-label catalog 更新則使用有界視窗與稀疏索引/AF 陣列,含 Table 45 的八種關係值IPdfOcrProvider 接受任何辨識引擎 — 元件提供頁面點陣圖並寫入產生的可搜尋文字層,附每頁狀態與既有文字跳過GetStructuredText 從字元幾何與 Tagged PDF 語意建立頁面/區塊/行/樣式化 span 階層;ExtractTables 與 ExtractDocumentTables 偵測有框線與以空白對齊的表格、保留合併儲存格、評估信心度並輸出 CSV 或 JSONBuildReflowDocument 將固定版面的 PDF 轉換為節點樹,其安全的 HTML 輸出會保留標題、段落、清單、圖片、頁面區段與表格跨距MeasureText 與 WrapText 提供換行,而不對頁面添加任何內容TPdfStreamInspector 在明確的來源、原始、解碼、膨脹比與串流數量預算下解碼任意串流物件,傳回結構化狀態,而不會在惡意檔案上耗盡記憶體TPdf 是 PDF 處理系統的核心,負責所有文件層級的操作,包括載入、儲存、文字擷取、表單處理與中繼資料管理
一個功能完備的視覺化控制項,提供具有完整使用者互動能力的豐富 PDF 檢視體驗
LoadCustomDocument 使用隨選 TStream 介面卡載入 PDF 文件,並提供相容、嚴格與復原原則及結構化 xref 診斷SaveAsRepaired 建立經獨立嚴格驗證的單一修訂修復副本SaveAsPdfA / SaveAsPdfAToStream 建立 PDF/A-1b,可使用內建 sRGB ICC 設定檔,也支援自訂設定檔ValidatePdfA 與唯讀 PdfAConformance 屬性進行 PDF/A 驗證MergeFiles(有界來源批次合併)、ImportPagesByIndex(子集匯入)、ImportNPagesToOne(N-up 拼版)、MovePages(原地重排)CreateXObjectFromPage 與 InsertFormObjectFromXObject 將單一頁面戳印到多個頁面RenderPageProgressive 與 IPdfCancellationToken 提供可取消的漸進式繪製TPdfProgressiveDocument 進行原生漸進下載,包括稀疏位元組範圍提示、優先順序範圍排程、有界重試、取消,以及文件、表單與頁面可用性閘控SaveAsLinearized 輸出 Fast Web View,包括首頁群組、兩個交互參考節區,以及 Annex F 的頁面偏移與共用物件提示表SaveAsObjectStream 進行現代 PDF 1.5+ 物件打包,包括有界的 ObjStm 群組、頁面局部排序與完整的 type-2 xref 涵蓋BeginIncrementalSave 與 CommitIncrementalSave 進行髒物件修訂工作階段,包括加密前綴保留、沿用的安全性參數、無操作提交、嚴格重新開啟驗證、持久的附屬檔案、原子取代、復原,以及每次提交的統計TPdfRandomAccessStore 與 SaveMemoryLimit 提供有界隨機存取工作儲存,包括安全的暫存檔溢流、定位 I/O 與每次儲存的峰值診斷FitMode 決定頁面於檢視區中的呈現方式(手動縮放、實際大小、符合頁面、符合寬度),於 Resize 與翻頁時自動重新套用PageColor 將算繪的 PDF 頁面背景與外層控制項的 Color 解耦,適用於深色模式檢視器HighlightSearchText 與 ClearHighlight 標示搜尋結果PageShadowSize / PageShadowColor)與頁面邊框(PageBorderColor)LinkOptions),以及 OnAnnotationLinkClick / OnWebLinkClick 事件AllowUserPageChange、ChangePageOnMouseScrolling、AllowUserTextSelection),適合自助服務終端與唯讀嵌入TPdfThumbnailView 側邊面板元件進行縮圖導覽| 項目 | 說明 |
|---|---|
| 繪製引擎 | Google PDFium — 業界標準、久經考驗的 PDF 引擎 |
| PDF 支援 | PDF 1.0 至 1.7 版本,含加密與密碼保護檔案 |
| 平台相容性 | Windows 32 位元與 64 位元應用程式 |
| IDE 支援 | Delphi XE5 / C++Builder XE5(RAD Studio XE5)至 Delphi/C++Builder 13.1 Florence(RAD Studio 13.1)、Lazarus 3.8+ |
| 字元編碼 | 完整 Unicode 支援,多語言文字處理 |
| 記憶體管理 | 面向大型文件最佳化,資源使用高效率 |
| 執行緒安全性 | 單執行緒設計(遵循 PDFium 規範) |
PDFium Delphi Component 採用分層架構模式,清楚劃分關注點,並將程式碼可重複使用性最大化:
| 層級 | 檔案 | 職責 |
|---|---|---|
| VCL 元件 | PDFium.pas、FPdfThumbnail.pas | 具設計時期支援的 Delphi VCL 元件(TPdf、TPdfView、TPdfThumbnailView) |
| API 繫結 | FPdfView.pas、FPdfDoc.pas、FPdfText.pas、FPdfEdit.pas、FPdfAnnot.pas、FPdfFormFill.pas、FPdfPageOps.pas、FPdfAttachment.pas、FPdfSignature.pas、FPdfStructTree.pas、FPdfDataAvail.pas、FPdfExtensions.pas、FPdfFWLEvent.pas、FPdfCompress.pas、FPdfUtils.pas | PDFium DLL 呼叫所使用的函式指標宣告 |
| PDF/A 流水線 | FPdfPdfa.pas | PDF/A-1b 建立(XMP 注入、sRGB ICC OutputIntent、catalog 更新)與驗證(合規層級偵測、問題列舉) |
| 非同步基礎設施 | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource、PdfNoCancellationToken 單例,以及面向長時間算繪與匯出工作的 TPdfFuture<T> 輔助類別 |
| 幾何輔助 | FPdfMatrix.pas | FS_MATRIX 的物件導向封裝,提供 Translate、Scale、Rotate、Flip、Skew、Multiply 等輔助方法 |
| 頁面操作 | FPdfPageOps.pas | FPDF_ImportPagesByIndex、FPDF_ImportPages、FPDF_ImportNPagesToOne、FPDF_MovePages 的封裝、可擴充的檔案後援批次排程,以及 Form-XObject 輔助(CreateXObjectFromPage / InsertFormObjectFromXObject) |
| 縮圖側邊面板 | FPdfThumbnail.pas | TPdfThumbnailView — 可捲動的逐頁縮圖面板,具懸停、選取與 OnPageClick 導覽 |
| 原生引擎 | DLLs\Win32|Win64\pdfium.dll 與 pdfium.v8.dll | Google PDFium 原生算繪引擎,可選用啟用 V8 的版本 |
TPdf 公開成員與 36 個可立即執行的專案縮短開發時間PDFium Delphi Component 旨在讓您立即投入生產,本元件庫包含:
無論您是要打造簡單的 PDF 檢視器,或是複雜的文件處理系統,PDFium Delphi Component 都能為您的 Delphi 與 C++Builder 應用程式提供專業級 PDF 功能的基礎