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 發出
對表單欄位而言,此方法會列舉每一頁的 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 多載接受要寫入的 TStream;FileName 多載接受檔案路徑並建立/截斷該檔案。ExportXFDFToStream 是 Stream 多載的別名
CA)與幾何資料(線段端點、polygon/polyline 頂點、ink 清單)透過高階記錄公開,在 PDFium 端為唯讀,因為 PDFium 沒有供註解字典使用的 SetNumberValue 設定器。這些屬性在匯出時原樣保留,因此即使無法編輯,仍可透過 XFDF 往返ImportXFDF 重新匯入或由 Acrobat 使用,反之亦然
// 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;