procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);
| Index | Integer. Нулевой индекс аннотации поля формы на текущей странице. Должен быть в диапазоне 0 до AnnotationCount - 1 |
| Flags | TPdfFormFieldFlags. Набор значений 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;