Документация PDFiumPas

SetFormFieldFlags Метод

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

Синтаксис

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

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

Описание

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

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

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

Пример

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;

См. также

FormField, FormFieldCount, FormFieldInfo, SetFormFieldFlagsAt, HasFormFieldAt