PDFium Delphi Component Docs

SetFormFieldFlags Método

Componente: TPdf  ·  Unidad: PDFium
Establece las marcas de campo AcroForm para el campo de formulario situado en el índice de anotación indicado de la página actual

Syntax

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

IndexInteger. 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
FlagsTPdfFormFieldFlags. 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

Description

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

Example

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;

See Also

FormField, FormFieldCount, FormFieldInfo, SetFormFieldFlagsAt, HasFormFieldAt