PDFium Delphi Component Docs

SetFormFieldFlags Метод

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

Syntax

procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);

IndexInteger. Индекс аннотации поля формы на текущей странице с нуля. Должен быть в диапазоне от 0 до AnnotationCount - 1
FlagsTPdfFormFieldFlags. Набор значений TPdfFormFieldFlag, применяемых к полю. Они соответствуют флагам полей AcroForm из спецификации PDF, например read-only, required или no-export

Description

SetFormFieldFlags записывает флаги полей AcroForm в widget-аннотацию формы по заданному индексу аннотации с нуля на текущей странице. Флаги управляют интерактивным поведением поля: например, read-only не даёт пользователю менять значение, а required сигнализирует, что поле надо заполнить до отправки формы

Параметр Index ссылается на индекс аннотации, как его репортит AnnotationCount, а не на индекс поля формы из FormFieldCount. Через FormFieldInfo или HasFormFieldAt выясните, какие индексы аннотаций соответствуют виджетам форм. Чтобы адресовать поле по координатам страницы, а не по индексу, есть SetFormFieldFlagsAt

Изменения флагов действуют сразу в документе в памяти, но не переживают до диска, пока не вызван SaveAs. При программной блокировке заполненной формы рекомендуемая последовательность: присвойте значения FormField[], вызовите GenerateFormAppearances, поставьте флаг read-only, затем вызовите SaveAs

Example

var
  I: Integer;
begin
  Pdf1.PageIndex := 0;
  // Mark every form field on the page as read-only
  for I := 0 to Pdf1.AnnotationCount - 1 do
    if Pdf1.FormFieldInfo[I].FieldType <> fftUnknown then
      Pdf1.SetFormFieldFlags(I, [ffReadOnly]);
  Pdf1.SaveAs('output_readonly.pdf');
end;

See Also

FormField, FormFieldCount, FormFieldInfo, SetFormFieldFlagsAt, HasFormFieldAt