procedure GenerateFormAppearances;
GenerateFormAppearances reconstruit les apparences des textes et listes modifiables via l’éditeur natif de formulaire et synchronise celles des cases à cocher et boutons radio
Les affectations natives de texte et de liste modifiable valident leur apparence via l’éditeur ; les modifications brutes du dictionnaire et les apparences initialement absentes peuvent encore nécessiter cette régénération avant aplatissement, qui utilise les flux enregistrés plutôt que l’affichage de l’éditeur actif
Le flux de travail correct pour remplir puis verrouiller un formulaire est : affectez toutes les valeurs FormField[] → appelez GenerateFormAppearances une fois → appelez éventuellement FlattenPage / FlattenAllPages → appelez SaveAs. Si vous avez seulement besoin d’enregistrer le formulaire rempli sans aplatissement, GenerateFormAppearances reste recommandé pour garantir une compatibilité maximale avec les visionneuses PDF tierces
La procédure agit sur l’ensemble du document en un seul appel; il n’existe pas de variante par page
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;
Les widgets hérités passent par une modification native temporaire, puis une restauration vérifiée de la valeur du champ parent original ; aucune valeur masquée n’est écrite dans le widget
Les champs hérités en lecture seule ne peuvent pas suivre ce traitement et déclenchent une erreur ; GenerateFormAppearances n’est pas une opération transactionnelle de document