PDFium Delphi Component Docs

FormFieldInfo Свойство

Компонент: TPdf  ·  Модуль: PDFium
Полная запись, описывающая поле формы по заданному индексу на активной странице

Syntax

property FormFieldInfo[Index: Integer]: TPdfFormFieldInfo; // read only

Description

FormFieldInfo возвращает снимок — запись TPdfFormFieldInfo для widget-аннотации поля формы по индексу Index с нуля на текущей активной странице. Запись даёт строго типизированный взгляд на один виджет поля AcroForm без необходимости вскрывать базовый дескриптор FPDF_ANNOTATION. Типы полей и флаги определены в разделе 12.7 спецификации PDF 1.7

Запись несёт имя поля Name (полный путь через родительские группы полей, например "order.shipto.address"), AlternateName для доступных подсказок, перечисление FieldType (fiPushButton, fiCheckBox, fiRadioButton, fiTextField, fiListBox, fiComboBox, fiSignature или fiUnknown), битовую маску Flags (ffReadOnly, ffRequired, ffNoExport, …), ExportValue, попадающий в экспорт FormData, флаг Checked для булевых полей, FontSize для отрисовки и массивы наборов опций OptionLabels / OptionSelected для комбобоксов и списков Виджеты-радиокнопки из группы дополнительно заполняют GroupCount и GroupIndex

Валидные индексы — 0 .. FormFieldCount - 1. Запись — value-тип; правка её полей не пишет обратно в документ. Чтобы изменить значение поля, присваивайте через FormField[Index]; чтобы поменять битовую маску флагов, вызывайте SetFormFieldFlagsAt. Чтение ленивое — PDFium декодирует Unicode-имена полей, метки опций и export values по требованию — поэтому кэшируйте результат, когда многократно обходите много полей

Parameters

IndexИндекс виджета на текущей странице с нуля (0 .. FormFieldCount - 1)

Remarks

Example

var I, J: Integer;
var Info: TPdfFormFieldInfo;
for I := 0 to Pdf1.FormFieldCount - 1 do
begin
  Info := Pdf1.FormFieldInfo[I];
  Memo1.Lines.Add(Format('%s [%d] export=%s checked=%s',
    [Info.Name, Ord(Info.FieldType), Info.ExportValue, BoolToStr(Info.Checked, True)]));
  for J := 0 to High(Info.OptionLabels) do
    Memo1.Lines.Add(' ' + Info.OptionLabels[J]);
end;

See Also

FormField, FormFieldCount, FormFieldInfoAt, FormFieldAt, FormType