PDFium Delphi Component Docs

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 обходит каждую страницу загруженного документа и создаёт соответствующий ISO 19444-1 документ XFDF с корнем в пространстве имён http://ns.adobe.com/xfdf/. Вывод состоит из секции <fields> и секции <annots>, обе выдаются как UTF-8 XML

Для полей формы метод перечисляет виджет-аннотации каждой страницы, читает значение каждого поля и записывает элемент <field>. Иерархические (квалифицированные) имена полей разделяются по точке и выдаются как вложенные элементы <field>, чтобы структура родитель/потомок сохранялась при обратном преобразовании. Флажки и переключатели экспортируют своё экспортное значение (имя состояния внешнего вида, представляющее включённое состояние) как значение поля. Поля подписи перечисляются, но их значение никогда не экспортируется

Флаги присутствия значения отличают явно пустое значение поля от пропущенного значения, включая поля, вложенные глубже двух уровней

Для аннотаций сериализуется каждая аннотация, не являющаяся виджетом или всплывающей, на каждой странице. Экспортёр распознаёт 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 не предоставляет API XFDF. ExportXFDF полностью реализован в PDFium Delphi Component на Pascal поверх собственной модели данных аннотаций и полей форм, обращаясь к PDFium только за значениями атрибутов отдельных аннотаций

Возвращает количество записанных байтов UTF-8. Перегрузка Stream принимает TStream для записи; перегрузка FileName принимает путь к файлу и создаёт/усекает этот файл. ExportXFDFToStream — псевдоним перегрузки 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