原生 Linux C ABI 注释交换
hpdf_document_execute_json_v1 通过既有的版本化操作描述符和回调 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 与结果回调都成功之后才采纳保存的修订版
输入/输出回调失败、结果回调失败和取消都会保留与先前提交完全一致的 context;后面的回调失败发生时,外部回调可能已经收到部分流
能力 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 回调;annotations.export 把 FDF 字节写到 OutputIO
FDF profile 保留已提供的 AP 与 RO 资源、共享间接对象和上下文相关的本地 GoTo 页面引用;同一页面上匹配的注释 NM 标识要替换的注释,未命名或不匹配的注释会被追加
FDF 导入成功时报告 annotationProfile="pdf-object-graph-v1" 和整数 updated 计数;零更新的操作保留与最后一次提交完全一致的 PDF 字节
FDF annotationLimits 还接受 maxObjects;所有限制仍受外围操作约束,失败与取消保留既有回调事务保证
仅注释操作拒绝非空 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;调用方需要自行暂存回调接收端,因为已写出的字节无法收回