Native Linux and macOS

原生 FPC 後端在 Linux x64 與 macOS ARM64 上支援無頭式函式庫工作流程,產出真正的 ELF 與 Mach-O 程式

PDF 建立、儲存/載入、文字擷取與編輯、結構化擷取、可攜式 OCR 回呼、點陣圖描繪、中繼資料、加密、網路範圍存取與原生 PFX 簽署,都沿用既有的 TPDFlib API

執行階段相依性

ProviderLibraryPurpose
OpenSSL 3libcryptoAES CBC/GCM、摘要、PKCS12 身分、CMS 簽章、完整性,以及明確的信任錨點鏈
libcurllibcurl with asynchronous DNSHTTP/HTTPS、有界二進位傳輸、範圍存取與 RFC 3161 請求
Cairolibcairo點陣圖影像表面、路徑、裁剪、字符外框與影像
Fontconfiglibfontconfig真正的原生字型檔比對,包括明確的字族替換
OpenJPEG 2libopenjp2JPEG 2000 解碼與編碼

Linux 會載入對應的系統 SONAME;macOS 使用 /opt/homebrew 下的 ARM64 函式庫與系統的 libcurl

缺少程式庫、符號,或遇到不支援的操作時都會明確失敗;不會使用任何 Windows 裝置內容替代品

簽署與時間戳記

預設 PFX 提供者支援真正的 RSA 與 EC 身分、分離式 CMS、CAdES 與舊式附加 SHA1 設定檔;驗證會檢查 PDF ByteRange 位元組與 CMS 簽章

憑證鏈驗證需要明確的信任錨點;內嵌憑證不會取得信任,只有完整性也不代表可信

ApplyPAdESSignatureTimeStamp 使用設定的預設原生 HTTP 傳輸抓取並附加真正的 RFC 3161 權杖;請在原始簽章之前預留足夠的 /Contents 容量

時間戳記驗證會檢查簽署權杖、訊息印記、獨佔的關鍵 timeStamping EKU、TSA 名稱、選配的預期 policy/nonce,以及權杖產生當下的可信憑證鏈

文件時間戳記還會驗證實際的 PDF ByteRange 印記;呼叫端可以沿用既有的 DocTimeStamp 直通工作流程並自行提供權杖

中繼資料與描繪

XMP 使用真正的命名空間感知 DOM,編輯時保留不相關的屬性

不論來源編碼為何,XML 讀取器都會拒絕 DTD 宣告;輸入與解碼字元都有上界,並在組建 DOM 之前以串流方式限制深度與節點事件

描繪使用真正的原生點陣儲存與 Cairo 影像表面;分帶描繪保留裝置空間座標,並以保護列維持邊界反鋸齒的一致性

原生字族字型內嵌會解析出實際的 Fontconfig 檔案,內嵌完整的獨立 TrueType 程式,含 CIDFontType2、Identity CIDToGIDMap、初始化完成的度量與 Unicode 寬度;BMP 文字與可攜式 OCR 圖層在 PDF 儲存/重新載入後仍然有效

未內嵌的字族字型、字型集合、CFF 程式與僅限點陣的內嵌授權都會被此進入點拒絕;受限內嵌需要既有的明確授權覆寫,禁止子集化的字型則保持完整程式

限制

建置與驗證

python3 Tests/Native/run_native_tests.py --compiler /path/to/fpc --output /tmp/pdflib-native-tests

要指定明確的編譯器組態請傳入 --config /path/to/fpc.cfg;測試執行器不會變更全域編譯器設定,也不會加入 -FcUTF8

測試套件會檢查實際的原生執行檔格式,並寫出包含編譯器/相依性版本、來源雜湊、執行檔雜湊、結果與限制的 JSON 報告

簽入的 Tests/Native 測試素材涵蓋 PDF 儲存/重新載入/描繪、文字工作流程、加密、中繼資料、簽章、真實 HTTP/TSA 流量,以及負向安全案例

Reference index