procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);
| Index | Integer. El índice de anotación, basado en cero, del campo de formulario en la página actual. Debe estar en el rango de 0 a AnnotationCount - 1 |
| Flags | TPdfFormFieldFlags. Un conjunto de valores TPdfFormFieldFlag que se aplican al campo. Corresponden a los flags de campo de AcroForm definidos en la especificación PDF, como solo lectura, obligatorio o no exportable |
SetFormFieldFlags escribe los flags de campo de AcroForm en la anotación de widget de formulario situada en el índice de anotación, basado en cero, indicado de la página actual. Los flags controlan el comportamiento interactivo del campo: p. ej., marcarlo como solo lectura impide que el usuario cambie su valor, mientras que marcarlo como obligatorio indica que debe completarse antes de poder enviar el formulario
El parámetro Index se refiere al índice de anotación que informa AnnotationCount, no al índice de campo de formulario que informa FormFieldCount. Use FormFieldInfo o HasFormFieldAt para identificar qué índices de anotación corresponden a widgets de formulario. Para dirigirse a un campo por coordenadas de página en lugar de por índice, use SetFormFieldFlagsAt
Los cambios de flags surten efecto de inmediato en el documento en memoria, pero no se persisten hasta que se llama a SaveAs. Al bloquear un formulario por código después de completarlo, la secuencia recomendada es: asignar los valores de FormField[], llamar a GenerateFormAppearances, poner los flags en solo lectura y luego llamar a 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;