PDFiumPas 文件

ExportXFDF 方法

元件: TPdf  ·  單元: PDFium
將載入文件所有頁面的表單欄位值與註解序列化為 XFDF (ISO 19444-1) 文件,以 UTF-8 XML 寫入並使用 http://ns.adobe.com/xfdf/ 命名空間

Syntax

function ExportXFDF(const FileName: string): Integer; overload;
function ExportXFDF(Stream: TStream): Integer; overload;
function ExportXFDFToStream(Stream: TStream): Integer;

Description

ExportXFDF 會走訪載入文件的每一頁,產生以 http://ns.adobe.com/xfdf/ 命名空間為根、符合 ISO 19444-1 的 XFDF 文件。輸出由 <fields> 區段與 <annots> 區段組成,兩者皆以 UTF-8 XML 發出

對表單欄位而言,此方法會列舉每一頁的 widget 註解、讀取每個欄位值,並寫出 <field> 元素。階層式(完整名稱)欄位名稱會以點號分隔拆開,並以巢狀 <field> 元素發出,使父子結構可以往返還原。核取方塊與選項按鈕會匯出其匯出值(代表開啟狀態的外觀狀態名稱)作為欄位值。簽章欄位會被列出,但其值永不匯出

值存在旗標可區分明確為空的欄位值與省略的值,包括巢狀超過兩層的欄位

對註解而言,每一頁上所有非 widget、非 popup 的註解都會被序列化。匯出器可辨識 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 十六進位字串寫入;座標清單(矩形、線段端點、polygon/polyline 頂點、ink 清單)為逗號分隔的數字;註解旗標以逗號分隔的旗標名稱清單發出,而不是原始位元遮罩

對多行標記註解,coords 屬性包含依文件順序排列的每個四邊形,而不只是第一行

註解內容使用相同的存在語意,因此明確為空的 contents 元素能在匯出後保留,而不會把不存在的元素變成空元素

PDFium 本身未提供 XFDF API。ExportXFDF 完全以 Pascal 實作於 PDFiumPas 之上,建立於其自身的註解與表單欄位資料模型,只向 PDFium 查詢每個註解的屬性值

傳回寫入的 UTF-8 位元組數。Stream 多載接受要寫入的 TStreamFileName 多載接受檔案路徑並建立/截斷該檔案。ExportXFDFToStreamStream 多載的別名

Remarks

Example

// Export all fields and annotations to an .xfdf file
BytesWritten := Pdf1.ExportXFDF('C:\Data\form.xfdf');

// Or to a stream
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create('C:\Data\form.xfdf', fmCreate);
  try
    Pdf1.ExportXFDF(Stream);
  finally
    Stream.Free;
  end;
end;

See Also

ImportXFDF, Annotation, AnnotationCount, FormFieldInfo