原生 Linux C ABI 註解交換
hpdf_document_execute_json_v1 透過既有的版本化操作描述元與 callback IO 介面暴露 annotations.export 與 annotations.import
先把 PDF 載入文件 context;註解匯入用 InputIO 接收 XFDF 位元組、OutputIO 輸出儲存的 PDF、ResultIO 輸出 JSON 結果詮釋資料
{"schemaVersion":1,"type":"annotations.export","format":"xfdf"}
匯出把 UTF-8 XFDF 寫到 OutputIO,並回報 annotationCount、skippedAnnotationCount、decodedAttachmentBytes 與 outputBytes
{"schemaVersion":1,"type":"annotations.import","format":"xfdf",
"annotationLimits":{"maxBytes":1048576,"maxAnnotations":1000,
"maxNodes":100000,"maxDepth":32,"maxWorkingBytes":67108864}}
匯入回報 updated 與 annotationProfile,只有 PDF 與結果 callback 都成功之後才採納儲存的修訂版
輸入/輸出 callback 失敗、結果 callback 失敗與取消都會保留與先前提交完全一致的 context;後面的 callback 失敗發生時,外部 callback 可能已經收到部分串流
能力 JSON 宣告 annotationData,含映射型別 profile、附加匯入模式、內嵌資料、前向回覆與 popup 物件;appearanceImport 為 false
註解限制只能調低操作容量,不能調高;MaxBytes 還受操作記憶體除以 64 約束,工作儲存受操作記憶體一半約束,匯出位元組受輸出上限約束
匯入接受既有的 signaturePolicy 物件用於 CAdES、信任與時間戳記驗證設定,並執行註解權限與經驗證的 DocMDP 政策
空 ABI 匯入保留已提交的 PDF 位元組,同時回傳零更新
本機具名與明確目標以及 GoTo action透過共用註解編解碼器保留真實頁參照與設有上限的精確十進位座標
ELF SONAME 與 HOTPDF_1.0 符號版本保持不變,既有 C 消費端繼續使用同一公開操作描述元
映射 profile 與原生 API · Linux C ABI · Form 資料操作
標準 stamp 外觀傳輸透過 base64 型別化 XML 保留真實的 Form 串流以及設有上限的無環字型、影像與圖形資源
FDF 物件圖形操作
{"schemaVersion":1,"type":"annotations.import","format":"fdf"}
二進位註解圖形選擇 format="fdf",沿用同一操作描述符與 InputIO、OutputIO、ResultIO callback;annotations.export 把 FDF 位元組寫到 OutputIO
FDF profile 保留已提供的 AP 與 RO 資源、共用間接物件和情境相關的本地 GoTo 頁面參照;同一頁上相符的註解 NM 識別要替換的註解,未命名或不相符的註解會被附加
FDF 匯入成功時回報 annotationProfile="pdf-object-graph-v1" 與整數 updated 計數;零更新的操作保留與最後一次提交完全一致的 PDF 位元組
FDF annotationLimits 還接受 maxObjects;所有限制仍受外围操作約束,失敗與取消保留既有 callback 交易保證
僅註解操作拒絕非空 Fields 與內嵌 Differences;action 資料只作為資料傳輸,不會被執行
註解移除
{"schemaVersion":1,"type":"annotations.remove","annotations":[{"page":0,"name":"review-note"}]}
annotations.remove 使用目前文件或經 InputIO 提供的獨立 PDF,先發布 PDF OutputIO 與 JSON ResultIO,之後才提交 context
結果回報 removed 與 annotationProfile="page-and-nm-removal-v1";annotationLimits 限制註解計數、操作數、名稱位元組與工作儲存
失敗或取消保留已提交的 context;呼叫端需要自行暫存 callback 接收端,因為已寫出的位元組無法收回