function ExportXFDF(const FileName: string): Integer; overload;
function ExportXFDF(Stream: TStream): Integer; overload;
function ExportXFDFToStream(Stream: TStream): Integer;
ExportXFDF 遍历已加载文档的每个页面,生成一个以 http://ns.adobe.com/xfdf/ 命名空间为根、符合 ISO 19444-1 的 XFDF 文档。输出由一个 <fields> 节和一个 <annots> 节组成,二者均以 UTF-8 XML 输出
对于表单字段,该方法枚举每个页面的部件注释,读取每个字段值,并写入一个 <field> 元素。分层(限定)字段名按点分隔符拆分,并作为嵌套的 <field> 元素输出,使父/子结构可以往返。复选框和单选按钮将其导出值(表示选中状态的外观状态名称)作为字段值导出。签名字段会被列出,但其值从不导出
值存在标志将显式为空的字段值与省略的值区分开来,包括嵌套超过两层的字段
对于注释,每个页面上所有非部件、非弹出式注释都会被序列化。导出器识别 18 种 /Subtype 值:text、highlight、underline、strikeout、squiggly、line、circle、square、caret、polygon、polyline、stamp、ink、freetext、fileattachment、sound、link 和 redact。每一种都会写成 <annots> 下的一个元素,携带其页面索引、外接矩形、内容、标题(作者)、名称(NM)、主题、修改与创建日期、标志和颜色
编码约定遵循 ISO 19444-1:颜色写作 #RRGGBB 十六进制字符串;坐标列表(矩形、线段端点、多边形/折线顶点、墨迹列表)为逗号分隔的数字;注释标志以逗号分隔的标志名称列表输出,而不是原始位掩码
对于多行标记注释,coords 属性按文档顺序包含每个四边形,而不仅是第一行
注释内容使用相同的存在语义,因此显式为空的 contents 元素在导出后仍然保留,而缺失的元素也不会变成空元素
PDFium 本身不提供 XFDF API。ExportXFDF 由 PDFium Delphi Component 在其自己的注释和表单字段数据模型之上完全用 Pascal 实现,仅针对每条注释的属性值查询 PDFium
返回写入的 UTF-8 字节数。Stream 重载接受要写入的 TStream;FileName 重载接受文件路径并创建/截断该文件。ExportXFDFToStream 是 Stream 重载的别名
CA)和几何数据(线段端点、多边形/折线顶点、墨迹列表)通过高级记录暴露,它们在 PDFium 一侧是只读的,因为 PDFium 没有用于注释字典的 SetNumberValue 设置器。这些属性在导出期间原样保留,因此即使无法编辑,它们也能通过 XFDF 往返ImportXFDF 重新导入或由 Acrobat 使用,反之亦然
// 将所有字段和注释导出到 .xfdf 文件
BytesWritten := Pdf1.ExportXFDF('C:\Data\form.xfdf');
// 或导出到流
var
Stream: TFileStream;
begin
Stream := TFileStream.Create('C:\Data\form.xfdf', fmCreate);
try
Pdf1.ExportXFDF(Stream);
finally
Stream.Free;
end;
end;