|
THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount THotPDF XFA forms container (v2.119.51)
|
RegisterAcroFormFont AcroForm 支持 |
|
注册一个命名 XFA(XML Forms Architecture)包,用于写出到文档 AcroForm 的
Delphi 语法: procedure AddXFAPacket(const PacketName: AnsiString; const XMLBytes: TBytes); procedure ClearXFAPackets; function XFAPacketCount: Integer;
说明 每次调用
在
Container-level support only HotPDF 不解析 XFA XML,不实现 XFA 动态布局引擎,不执行 XFA template 中的 FormCalc 或 JavaScript,也不验证 template 结构。调用方自行编写 XFA XML(通常通过 Adobe LiveCycle Designer,或手写符合 XFA 3.3 规范的内容),HotPDF 按字节原样输出
带 XFA 引擎的阅读器(旧版 Acrobat / Reader、FormsCentral、部分 kiosk 产品)会渲染表单;没有 XFA 引擎的阅读器(2017 年后的 Adobe Reader DC 以及多数开源阅读器)会在 hybrid AcroForm + XFA 工作流中显示 fallback AcroForm 字段
PDF/A and PDF/X compliance gates ISO 19005-1 §6.4.2 / ISO 19005-2 §6.4.2 / ISO 19005-3 §6.4.2 都明确禁止 XFA 表单(动态布局引擎无法确定性地归档)。ISO 15930 印前工作流则完全拒绝交互式表单。只要
AcroForm dictionary emission 只要
典型工作流 (pure XFA dynamic form)
PDF.BeginDoc; TemplateBytes := TFile.ReadAllBytes('form-template.xml'); DataBytes := TFile.ReadAllBytes('form-data.xml'); PDF.AddXFAPacket('xdp:xdp', BytesOf('<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/">')); PDF.AddXFAPacket('template', TemplateBytes); PDF.AddXFAPacket('datasets', DataBytes); PDF.AddXFASignaturePacket(SigBytes); { caller-generated XAdES } PDF.AddXFAPacket('/xdp:xdp', BytesOf('</xdp:xdp>')); PDF.EndDoc;
XDP wrapper, single-stream, dynamic, and signed XFA 数组形式的
XFA 到 AcroForm 扁平化
另请参阅: AcroForm 支持, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField |