function ExportXFDF(const FileName: string): Integer; overload;
function ExportXFDF(Stream: TStream): Integer; overload;
function ExportXFDFToStream(Stream: TStream): Integer;
ExportXFDF przechodzi przez każdą stronę załadowanego dokumentu i tworzy
zgodny z ISO 19444-1 dokument XFDF zakorzeniony w przestrzeni nazw
http://ns.adobe.com/xfdf/. Wynik składa się z
sekcji <fields> i sekcji <annots>,
obie emitowane jako XML UTF-8.
Dla pól formularza metoda wylicza adnotacje widgetów każdej
strony, odczytuje wartość każdego pola i zapisuje element
<field>. Hierarchiczne (kwalifikowane) nazwy pól są
dzielone na separatorze kropki i emitowane jako zagnieżdżone elementy
<field>, tak aby struktura rodzic/dziecko przeżywała
podróż w obie strony. Pola wyboru i przełączniki eksportują swoją
wartość eksportu (nazwę stanu wyglądu reprezentującą stan
włączony) jako wartość pola. Pola podpisu są wymienione na liście,
ale ich wartość nigdy nie jest eksportowana.
Flagi obecności wartości utrzymują rozróżnienie między jawnie pustą wartością pola a wartością pominiętą, w tym polami zagnieżdżonymi głębiej niż dwa poziomy
Dla adnotacji serializowana jest każda adnotacja niebędąca widgetem
ani okienkiem wysuwanym na każdej stronie. Eksporter rozpoznaje 18 wartości
/Subtype: text, highlight, underline, strikeout, squiggly, line,
circle, square, caret, polygon, polyline, stamp, ink, freetext, fileattachment,
sound, link i redact. Każda jest zapisywana jako element pod
<annots> przenoszący indeks strony, prostokąt otaczający,
treść, tytuł (autora), nazwę (NM), temat, daty modyfikacji
i utworzenia, flagi oraz kolor.
Konwencje kodowania są zgodne z ISO 19444-1: kolory są zapisywane
jako ciągi szesnastkowe #RRGGBB; listy współrzędnych
(prostokąt, końce linii, wierzchołki polygon/polyline, listy ink) są
liczbami rozdzielonymi przecinkami; a flagi adnotacji są emitowane
jako lista nazw flag rozdzielonych przecinkami, a nie surowa maska bitowa.
Dla wieloliniowych adnotacji znacznikowych atrybut coords zawiera każdy czworokąt w kolejności dokumentu, a nie tylko pierwszą linię
Treść adnotacji używa tych samych semantyk obecności, więc jawnie pusty element contents przeżywa eksport bez zamiany nieobecnego elementu na pusty
Sama biblioteka PDFium nie udostępnia żadnego interfejsu XFDF. ExportXFDF jest w całości zaimplementowany w Pascalu przez PDFiumPas na podstawie własnego modelu danych adnotacji i pól formularzy, odpytując PDFium tylko o wartości atrybutów poszczególnych adnotacji.
Zwraca liczbę zapisanych bajtów UTF-8. Przeciążenie Stream
przyjmuje TStream do zapisu; przeciążenie
FileName przyjmuje ścieżkę pliku i tworzy/skraca
ten plik. ExportXFDFToStream jest aliasem przeciążenia
Stream.
CA) i dane geometryczne (końce linii, wierzchołki polygon/polyline, listy ink) są udostępniane przez wysokopoziomowe rekordy tylko do odczytu po stronie PDFium, ponieważ PDFium nie ma settera SetNumberValue dla słowników adnotacji. Te atrybuty są zachowywane bez zmian podczas eksportu, więc przeżywają podróż przez XFDF, choć nie można ich edytować.ImportXFDF lub odczytany przez Acrobat i odwrotnie.
// 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;