PDFium Component Docs

Metoda ExportXFDF

Component: TPdf  ·  Unit: PDFium
Serializuje każdą wartość pola formularza i adnotację ze wszystkich stron załadowanego dokumentu do dokumentu XFDF (ISO 19444-1), zapisanego jako XML UTF-8 z przestrzenią nazw 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 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.

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