procedure GenerateFormAppearances;
GenerateFormAppearances reconstruye las apariencias editables de texto y cuadros combinados 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 cuadros combinados confirman su apariencia mediante el editor de formularios; las modificaciones directas de diccionario y las apariencias inicialmente ausentes pueden requerir esta regeneración antes de aplanar, porque el aplanado usa los flujos de apariencia guardados y no la presentación del editor activo
El flujo de trabajo correcto al rellenar y bloquear un formulario es: asignar todos los valores FormField[] → llamar una vez a GenerateFormAppearances → opcionalmente llamar a FlattenPage / FlattenAllPages → llamar a SaveAs. Si solo necesita guardar el formulario rellenado sin aplanar, GenerateFormAppearances sigue siendo recomendable para asegurar la máxima compatibilidad con visores PDF de terceros
El procedimiento opera sobre todo el documento en una llamada; no hay 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 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 admiten este flujo de edición y lanzan un error; GenerateFormAppearances no es una operación transaccional de documento