PDFium Delphi Component 文件

ExportXFDF 方法

组件: TPdf  ·  单元: PDFium
将已加载文档所有页面上的每个表单字段值和注释序列化为 XFDF(ISO 19444-1)文档,以带有 http://ns.adobe.com/xfdf/ 命名空间的 UTF-8 XML 写出

语法

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 重载接受要写入的 TStreamFileName 重载接受文件路径并创建/截断该文件。ExportXFDFToStreamStream 重载的别名

备注

示例

// 将所有字段和注释导出到 .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;

参见

ImportXFDF, Annotation, AnnotationCount, FormFieldInfo