Windows 註解 XFDF 交換

Windows 檔案工作與 hpdf_document_execute_json_v1 經經驗證的 Windows 交易橋接匯出映射註解並附加 XFDF 註解

映射型別與屬性與原生註解 XFDF 共用,包含設限的二進位附件/聲音串流、Unicode rich 內容、popup 物件與前向回覆

檔案工作

{
  "schemaVersion": 1, "type": "annotations.import", "format": "xfdf",
  "input": "source.pdf", "annotationInput": "annotations.xfdf",
  "output": "annotated.pdf", "password": "owner",
  "annotationLimits": {"maxBytes": 1048576, "maxAnnotations": 1000},
  "budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
    "timeMilliseconds": 60000, "resultBytes": 16777216}
}

annotations.export 使用相同的 format、input、output 與選用 password,寫出 UTF-8 XFDF 而不是 PDF;匯入需要 annotationInput

輸出不得與 PDF 輸入、XFDF 輸入或提供的信任/證據檔案互為別名,既有硬連結也不例外;發佈先保留一個獨占的暫時同層檔案、驗證設限結果、flush 並關閉候選,然後原子替換目標

失敗與取消保留既有的完整目標,並移除操作的暫時檔案

原始 V1 callback

使用 hotpdf_abi.h 中未改動的 hpdf_operation_v1 與 hpdf_io_v1;註解交換不需要字型擴充

先用 hpdf_document_load_from_io 載入目標 PDF;匯入從 InputIO 讀 XFDF、把候選 PDF 寫到 OutputIO、把設限 JSON 寫到 ResultIO;匯出讀取作用中自有 PDF 並把 XFDF 寫到 OutputIO

加密輸入請重複用於驗證已載入 PDF 的操作密碼;本操作不會保留較早載入呼叫遺留的隱含密碼

只有 PDF 與結果 callback 都成功且最終取消檢查點通過,才採納新文件與自有修訂版;輸入、輸出或結果 callback 失敗、畸形 XML、限額耗盡與取消都保留先前 context

後面的失敗發生前,callback 可能已收到候選位元組;只在回傳 HPDF_STATUS_OK 之後才發佈呼叫端自有的目標

政策、限制與結果

匯入驗證既有簽章完整性與 ESS 簽署者綁定;P1 與 P2 認證拒絕註解變更,P3 允許保留原始已簽署位元組的註解修訂版

AES-256 R5/R6 匯入保留加密參數與原始修訂版前綴;空匯入驗證政策並精確保留目前位元組

signaturePolicy 接受Windows form 資料交換所述的既有 Boolean 信任/時間戳記/撤銷要求與明確信任路徑

annotationLimits 可以調低 maxBytes、maxAnnotations、maxNodes、maxDepth 與 maxWorkingBytes;值為正整數 JSON 數字,不能抬高計算出的預設值

工作、輸出、結果、物件與頁預算同樣生效;callback 操作接受 elapsedMilliseconds 作為額外更緊的時限

匯出回報 annotationCount、skippedAnnotationCount、decodedAttachmentBytes 與 outputBytes;匯入回報 updated、outputBytes 與等於 mapped-annotations-v1 的 annotationProfile

邊界

能力透過 file-job 與 execute-json-v1 宣告註解交換,含僅附加匯入、一般 appearanceImport=false 與限定範圍的 stampAppearanceImport=true

標準 stamp 外觀傳輸透過 base64 型別化 XML 保留真實的 Form 串流以及設有上限的無環字型、影像與圖形資源

通用 AP 傳輸、註解替換/移除、更廣的 action 與 FDF 註解資料仍是獨立工作;遠端 GoToR action 與本機目標使用各自既有的設限 profile

通用的 ExecuteLoadedOperation 與較舊的工作控制代碼 callback 記錄是獨立入口;Pascal 呼叫端可用明確的交易類別

二進位 FDF 交換

同一批檔案工作與 V1 callback 接受 format="fdf";檔案匯入從 annotationInput 讀取二進位 FDF,匯出把二進位 FDF 寫到選定的輸出

FDF 物件圖形 profile 保留已提供的外觀資源與共用間接物件,並支援同一頁上以相符非空註解 NM 進行替換

FDF 匯入回傳 annotationProfile="pdf-object-graph-v1";updated 統計實際註解變更,等價匯入保留精確的目前修訂版

FDF 在正整數 annotationLimits 控制之外加入 maxObjects,並使用既有的已驗證政策、有界候選發布與 callback 所有權規則

Pascal 呼叫端可使用 THPDFWindowsFormDataTransaction.ExportAnnotationsFDF 與 ImportAnnotationsFDF;ChangedAnnotations 回報此 profile 的實際變更

非空 FDF Fields 與內嵌 Differences 需要另外處理,會在發布之前使僅註解操作失敗

Windows 註解移除為精確的頁面加 NM 識別提供另外的準備交易與 JSON 工作,不改變映射 XFDF 的附加語義