procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);
| Index | Integer. El índice de anotación basado en 0 del campo de formulario en la página actual. Debe estar en el rango 0 a AnnotationCount - 1 |
| Flags | TPdfFormFieldFlags. Un conjunto de valores TPdfFormFieldFlag a aplicar al campo. Corresponden a las marcas de campo AcroForm definidas en la especificación PDF, como solo lectura, requerido o no exportar |
SetFormFieldFlags escribe marcas de campo AcroForm en la anotación de widget de formulario en el índice de anotación basado en 0 dado en la página actual. Las marcas controlan el comportamiento interactivo del campo: por ejemplo, marcarlo como de solo lectura impide al usuario cambiar su valor, mientras que marcarlo como requerido indica que debe rellenarse antes de que el formulario pueda enviarse
El parámetro Index se refiere al índice de anotación tal como lo reporta AnnotationCount, no al índice de campo de formulario reportado por 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 marca tienen efecto inmediato en el documento en memoria pero no se persisten hasta que se llama a SaveAs. Al bloquear programáticamente un formulario después de rellenarlo, la secuencia recomendada es: asignar valores FormField[], llamar a GenerateFormAppearances, establecer las marcas a solo lectura y luego llamar a SaveAs
var
I: Integer;
begin
Pdf1.PageIndex := 0;
// Marcar todos los campos de formulario de la página como de solo lectura
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;