Windows FDF/XFDF 交换
Windows 文件 job 与 hpdf_document_execute_json_v1 使用原生 scalar 与有界富文本 XHTML/CSS 编解码器实现 fdf 与 xfdf 的 forms.export 与 forms.import
文件 job
{
"schemaVersion": 1, "type": "forms.import", "format": "xfdf",
"input": "source.pdf", "output": "filled.pdf", "password": "owner",
"formDataInput": "values.xfdf",
"fonts": {
"regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
"italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
},
"budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
"timeMilliseconds": 60000, "resultBytes": 16777216}
}
forms.export 使用 input、output、format 与可选 password;不需要 formDataInput 或 fonts;文件 job 在目标旁预留独占候选,刷新并关闭它,验证有界结果 JSON,然后原子替换目标
缺失字体、格式错误输入、认证或策略失败、耗尽的限制与失败的发布都会保留既有的完整目标;输出不得与 PDF 或表单数据输入互为别名,包括硬链接
具名字体族
forms.import 在操作根接受 fontFamilies 作为一到十六个标签的数组;缺省时保留原始单字体族 profile 与 fontFamily callback 标签
"fontFamilies": ["DejaVu Sans", "DejaVu Serif Condensed"],
"fonts": {
"DejaVu Sans": {
"regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
"italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
},
"DejaVu Serif Condensed": {
"regular": "DejaVuSerifCondensed.ttf", "bold": "DejaVuSerifCondensed-Bold.ttf",
"italic": "DejaVuSerifCondensed-Italic.ttf", "boldItalic": "DejaVuSerifCondensed-BoldItalic.ttf"
}
}
文件 job 的 fonts 包含以精确配置标签为键的对象;没有 fontFamilies 时保留原始的直接样式路径对象;只读取真实的字体族/样式程序,所有选定字体字节共享操作预算
Windows V1 callback 的既有字体 callback 接收每个真实的规范 UTF-8 配置标签与所选样式;使用全部四种样式的两个字体族产生八次真实程序请求,callback 记录不变
ASCII 标签字母比较忽略大小写,其他 Unicode 字符精确比较;标签必须互不相同、非空且至多 128 个 UTF-16 码元,不能有前后空白、控制符、不成对代理或 CSS 引号/分隔符标点
第一个配置字体族是 scalar 文本与继承富样式的默认值;默认情况下,CSS font-family 列表使用原生编解码器的首个已知字体族选择
可选的 fallbackFontFamilies=true 保留有序的内联 CSS font-family 候选,并为整字素 fallback 加载真实配置的 face/样式程序;typed 候选、callback 加载与仅富文本范围见 Windows supplied-family 富文本字体 fallback
应用结果报告 richXMLProfile inline-xhtml-font-families-v1、配置的 fontFamilies 数组以及含 family、style 与 bytes 的真实 fontFamilyStyles 对象;fontStyles 保留其原始对象数组类型并按样式汇总字节数;fontBytes 统计所有真实程序
没有该数组时 richXMLProfile 为 inline-xhtml-v1;混合 scalar 与原始 typed-rich forms.fill 使用下述单独的 original-typed-runs-v1 绑定;较早的 job 字体 callback 扩展仍是单独的后续工作
带版本的 Windows C callback
包含 hotpdf_abi_form_data.h;填充 hpdf_form_data_operation_v1,把 operation.struct_size 设为完整大小,并把其未变更的操作前缀传给 hpdf_document_execute_json_v1
可选字体 callback 接收 UTF-8 字体族字节与样式 0 regular、1 bold、2 italic 或 3 boldItalic,并为真实字体程序返回完整的 hpdf_io_v1 读表;富数据使用全部四种样式时请提供全部四个程序
scalar 数据请求 regular 程序;fontFamily 默认 DejaVu Sans;提供的字体 IO callback 与用户数据在操作返回前必须保持有效;非零 callback 状态是粘性的,原样传播而不做 fallback 重试
forms.import 的 InputIO 提供 FDF/XFDF 且目的地必须已加载;OutputIO 接收候选 PDF,ResultIO 接收有界 JSON;forms.export 使用原始 V1 记录并把 FDF/XFDF 写入 OutputIO
Windows hpdf_document_load_from_io 在返回之前把完整输入复制为不可变自有源;调用方的替换或追加无法改变活跃已加载修订或其后续表单数据输出
自有源使用单独的同步句柄做后台随机读取,因此 prefetch 无法移动顺序发布游标;候选文档在其源销毁之前释放其后台读取器
活跃上下文只在输出与结果 callback 都成功且最终取消检查点通过之后变更;callback 失败或取消会丢弃候选并保留前一个文档与自有源
callback 可能在后续 callback 失败之前已收到候选字节;调用方只能在 execute 函数返回 HPDF_STATUS_OK 之后提交自己的输出目的地
原始 V1 记录布局与导出符号不变;此 Windows 扩展与原生 Linux 已发布的 callback 扩展相互独立
绑定的入口点是文件 job 处理器与 hpdf_document_execute_json_v1;较早的 HPDFDocRunJob callback 记录与通用 ExecuteLoadedOperation 在本阶段不获取字体扩展;Pascal 调用方可使用显式事务类
字段、富文本与策略
受支持的值包括嵌套 Unicode 文本名、checkbox 与 radio 导出名、multiselect 数组以及未变更的只读值;/V、/RV 与真实 AP 资源一起保存;未知字段与必需字段约束使事务失败
富文本交换使用文档化的有界 XHTML/CSS profile 与真实提供的样式字体;不声称支持任意 HTML、全部 CSS 或不受限制的富 XML
已签名的 AES R5/R6 更新保留完整的原始前缀、加密参数、永久加密标识符与既有 CMS 签名;未变更的 scalar 或富文本导入与当前已提交修订逐字节一致
既有 CMS 完整性与 ESS 签名者绑定在已签名表单更新之前认证;P2/P3 填充只在其真实约束内被允许;P1、FieldMDP 锁定与变更的只读字段拒绝发布
signaturePolicy 接受 Boolean 的 requireCAdES、requireTimestamp、requireAdobeRevocationInfo 与 requireTimestampRevocation;trustedCAFile、timestampCAFile、timestampCRLFile 与 revocationCAFile 必须为不含 NUL 的字符串,并为请求的检查选择显式调用方信任
C callback 选项还通过 maxEvidenceBytes 与 maxEvidenceObjects 约束已签名证据;信任验证不同于默认的签名完整性检查
formData 可以调低 maxBytes、maxFields、maxObjects、maxDepth、maxValues、maxValueCodeUnits 与 maxTotalCodeUnits;这些精确的正整数还会被工作容量钳制;budget 的 objectCount 与 pageCount 限制候选文档
budget.timeMilliseconds 设置操作 deadline;Windows C callback 还接受 elapsedMilliseconds 作为额外的更紧边界;在当前 graph 准备、表单解码、字体读取、CMS 检查、候选加载与发布期间轮询取消
能力报告真实的格式、样式、不可变输入与事务性 callback 行为;注释交换、内嵌 FDF 文件、action 与增量 FDF 文档仍是单独的未完成能力
相关主题
混合 scalar 与原始 typed 富文本填充通过文件 job 与 execute-json-v1 使用相同的已认证 Windows 候选生命周期