procedure GenerateFormAppearances;
GenerateFormAppearances reconstruye las apariencias de texto editable y listas combinadas mediante el editor nativo de formularios, y sincroniza los estados de apariencia de casillas y botones de opción
Las asignaciones nativas de texto y listas combinadas confirman su apariencia mediante el editor de formularios; los cambios directos al diccionario y las apariencias inicialmente ausentes todavía pueden requerir esta regeneración antes de aplanar, ya que el aplanado usa los flujos de apariencia almacenados y no la visualización del editor activo
El flujo de trabajo correcto al llenar y bloquear un formulario es: asigne todos los valores de FormField[] → llame una vez a GenerateFormAppearances → llame opcionalmente a FlattenPage / FlattenAllPages → llame a SaveAs. Si solo necesita guardar el formulario lleno sin aplanar, GenerateFormAppearances sigue siendo recomendable para garantizar la máxima compatibilidad con visores PDF de terceros
El procedimiento opera sobre todo el documento en una sola llamada; no existe una variante por página
begin
// Assign form field values
Pdf1.FormField[0] := 'Alice Example';
Pdf1.FormField[1] := '[email protected]';
Pdf1.FormField[2] := '2026-05-20';
// Bake appearance streams so values are visible in all viewers
Pdf1.GenerateFormAppearances;
// Flatten and save a non-editable copy
Pdf1.FlattenAllPages;
Pdf1.SaveAs('output_filled_flat.pdf');
end;
Los widgets con valores heredados usan una edición nativa temporal seguida de una restauración verificada del valor original del campo padre; no se escribe un valor que lo oculte en el widget
Los campos heredados de solo lectura no pueden usar este flujo de edición y generan un error; GenerateFormAppearances no es una operación transaccional sobre el documento