原生頁面匯入與保留的 PDF/A-4

附加所選頁面時,保留其原始文字與向量內容串流、繼承的 MediaBox/CropBox/Rotate、明確的 UserUnit、內嵌字型、影像、共用資源與循環的間接識別

AppendImportedPages 作用於兩份不同的已載入文件,保留目的地修訂與加密,並在提交頁面樹前暫存所有匯入物件;重複選取、無效參照、取消、權限與位元組/物件/頁面預算問題都會讓目的地保持不變

選取的來源註解會以 normal 外觀狀態、BBox 與 Matrix 變成一般的 Form XObject 內容;來源互動與欄位不會被匯入,隱藏註解會被移除,flattenAnnotations=false 則明確移除所有來源註解

可見註解需要可用的 normal 外觀;NoZoom/NoRotate 幾何需要另外的編輯原則,已簽署或已認證的目的地文件需要另外的已簽署文件原則

來源使用者密碼必須允許文字擷取,目的地使用者密碼必須允許內容修改;擁有者驗證可繞過這些權限限制

已驗證的保存

HPDFConvertHeadlessToPDFA4PreservingFile 建立獨立的 PDF 2.0 文件,帶實際的 sRGB 輸出意圖與 PDF/A-4 XMP,匯入原始內容與攤平外觀,以真正的 veraPDF CLI 驗證暫存候選,並只原子發布合規的輸出

轉換會移除原始加密、互動欄位、簽章、Catalog 動作、文件 metadata 與 Catalog 附件,同時保留可達的頁面內容/資源;來源含已簽署欄位時必須明確設定 allowSignatureInvalidation

預設路徑保留原始字型程式;明確的字型修復為缺少的字型加入受限的正規化與可用替代字型內嵌,而每個最終候選在取代目的地前仍需真正的 PDF/A-4 驗證

驗證器設定

安裝無頭 Java 與官方 veraPDF CLI JAR,然後設定 HOTPDF_VERAPDF_JAR 或在 Pascal 中設定 ValidatorJAR;預設路徑為 /usr/bin/java 與 /opt/hotpdf-verapdf/cli.jar

驗證使用獨立的 process 引數、無頭 Java、已設定的堆積上限、受限的 stdout/stderr、時間預算與取消;逾時/取消會終止並回收子 process,並移除私有暫存檔

受管理的準備與 Java 堆積限制不代表作業系統層級的 RSS 上限

Callback 操作

{"schemaVersion":1,"type":"pages.import","pages":[2,0,1],"sourcePassword":"source-owner","flattenAnnotations":true}
{"schemaVersion":1,"type":"pdfa.convert","profile":"PDF/A-4","mode":"preserve"}

pages.import 需要已載入的目的地 handle 與另外的來源 InputIO;目的地驗證跟著 handle,sourcePassword 只適用於被匯入的輸入

pdfa.convert 預設為 raster;preserve 保留文字/向量內容,在輸出 callback 前呼叫 veraPDF,並只在輸出與結果發布成功後,以驗證過的未加密文件取代 handle

驗收

原生 Linux FPC 3.2.2 與 3.3.1 驗證原始串流/字型/CMap 位元組、繼承資源、旋轉、AES 來源/目的地修訂、變換後的外觀、循環資源、重新載入行為、回復、實際 PDF/A-4 驗證與受限的子 process 壽命;Windows FPC 與 Delphi 演練頁面匯入,兩個 C++Builder 架構編譯公開標頭

sh Tests/Linux/Run-HeadlessPageImportAcceptance.sh
sh Tests/Linux/Run-LinuxABIAcceptance.sh

頁面匯入與保存合約 · 原生文件工作流程