function ExportXFDF(const FileName: string): Integer; overload;
function ExportXFDF(Stream: TStream): Integer; overload;
function ExportXFDFToStream(Stream: TStream): Integer;
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
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;