function ExportXFDF(const FileName: string): Integer; overload;
function ExportXFDF(Stream: TStream): Integer; overload;
function ExportXFDFToStream(Stream: TStream): Integer;
ExportXFDF percorre todas as páginas do documento carregado e produz um
documento XFDF conforme a ISO 19444-1, enraizado no espaço de nomes
http://ns.adobe.com/xfdf/. A saída consiste numa
secção <fields> e numa secção <annots>,
ambas emitidas como XML UTF-8
Para os campos de formulário, o método enumera as anotações widget de cada
página, lê o valor de cada campo e escreve um elemento
<field>. Os nomes de campos hierárquicos (qualificados)
são divididos no separador de ponto e emitidos como elementos
<field> aninhados, para que a estrutura pai/filho faça
o percurso de ida e volta. As caixas de verificação e os botões de opção
exportam o seu valor de exportação (o nome do estado de aparência
que representa o estado ligado) como valor do campo. Os campos de assinatura
são listados, mas o seu valor nunca é exportado
As flags de presença de valor mantêm um valor de campo explicitamente vazio distinto de um valor omitido, incluindo campos aninhados a mais de dois níveis de profundidade
Para as anotações, cada anotação não widget e não popup de cada página
é serializada. O exportador reconhece 18 valores de /Subtype:
text, highlight, underline, strikeout, squiggly, line, circle, square,
caret, polygon, polyline, stamp, ink, freetext, fileattachment, sound,
link e redact. Cada uma é escrita como um elemento sob
<annots> transportando o seu índice de página,
retângulo delimitador, conteúdo, título (autor), nome (NM),
assunto, datas de modificação e criação, flags e cor
As convenções de codificação seguem a ISO 19444-1: as cores são escritas
como cadeias hexadecimais #RRGGBB; as listas de coordenadas
(retângulo, extremos de linha, vértices de polygon/polyline, listas de
ink) são números separados por vírgulas; e as flags de anotação são
emitidas como uma lista separada por vírgulas de nomes de flag em vez de
uma máscara de bits bruta
Para anotações de marcação multi-linha, o atributo coords inclui todos os quadriláteros pela ordem do documento em vez de apenas a primeira linha
O conteúdo das anotações usa a mesma semântica de presença, pelo que um elemento contents explicitamente vazio sobrevive à exportação sem transformar um elemento ausente num elemento vazio
O próprio PDFium não expõe qualquer API XFDF. ExportXFDF é implementado inteiramente em Pascal pelo PDFium Delphi Component sobre o seu próprio modelo de dados de anotações e campos de formulário, consultando o PDFium apenas para os valores de atributos de cada anotação
Devolve o número de bytes UTF-8 escritos. A sobrecarga
Stream aceita um TStream onde escrever; a
sobrecarga FileName aceita um caminho de ficheiro e
cria/trunca esse ficheiro. ExportXFDFToStream é um alias da
sobrecarga Stream
CA) e os dados geométricos (extremos de linha, vértices de polygon/polyline, listas de ink) são expostos através de registos de alto nível que são de leitura no lado do PDFium, porque o PDFium não tem um setter SetNumberValue para dicionários de anotação. Estes atributos são preservados tal como estão durante a exportação, pelo que fazem o percurso de ida e volta através de XFDF embora não possam ser editadosImportXFDF ou consumido pelo Acrobat, e vice-versa
// 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;