Native Linux C ABI 表单交换
使用既有的带版本 hpdf_document_execute_json_v1 入口与 hpdf_operation_v1 记录,把标量与有界富 AcroForm 值导出或导入为 FDF 或 XFDF
ABI 版本、导出符号与 Callback 记录布局保持不变
| 操作 | 输入 IO | 输出 IO | 结果 IO |
|---|---|---|---|
forms.export | 可选 PDF 输入;否则使用已加载文档 | 真实 FDF 或 XFDF 字节 | JSON 格式、媒体类型、字段数量与输出字节数 |
forms.import | 必需 FDF 或 XFDF 字节;目标 PDF 必须已加载 | 准备完成的更新后 PDF 字节 | JSON 格式、媒体类型、字段数量与变更字段数量 |
两个操作都要求 format 恰好为 fdf 或 xfdf,且 schemaVersion 设为 1
{"schemaVersion":1,"type":"forms.export","format":"xfdf"}
{"schemaVersion":1,"type":"forms.import","format":"fdf","fontFamily":"DejaVu Sans","fontSize":12}
支持的值包括嵌套 Unicode 文本字段、checkbox 与 radio 导出状态、标量选择与多选;接受 UTF-8 与带 BOM 的 UTF-16 XFDF
FDF RV 与 XFDF value-richtext 使用 inline-xhtml-v1 富文本 profile,由 fontFamily 选出真实的 regular、bold、italic 与 bold-italic 字体程序
签名字段与 pushbutton 字段只以名称表示、不带导入值,从而保留已填充的签名与既有按钮行为
导入会重新生成真实外观,并保留已认证的 AES R5/R6 加密、只读字段、DocMDP 权限与 FieldMDP 锁
可选的 signaturePolicy 接受 requireCAdES、requireTimestamp、requireTimestampRevocation、既有信任文件或 PEM 设置,以及使用签名选项 schema 的 revocationInfo
显式签名的吊销策略会校验真实内嵌的签名属性,包括 RFC 3161 文档时间戳中的属性;外部提供的状态字节不能替代缺失的必需属性
可选的 formDataLimits 包含正整数 maxBytes、maxFields、maxObjects、maxDepth、maxValues、maxValueCodeUnits 与 maxTotalCodeUnits 设置,受原生默认值与操作容量约束
既有的 limits.memoryBytes、outputBytes 与 resultBytes 进一步约束准备与发布;交换额度耗尽会返回 HPDF_STATUS_BUDGET_EXCEEDED
Callback 在调用线程上同步执行,可能返回部分读或写;读取表单输入、解析、准备外观与发布结果期间都会响应取消
已加载的目标句柄只有在更新后 PDF 与 JSON 结果 Callback 都成功后才提交;Callback 出错或取消时保持原状态,而调用方自有 sink 已接收的字节仍由调用方负责
任意 CSS 布局、多字体族、注释、内嵌文件、action 与增量 FDF 修订交换都不在已实现 profile 之内