FormField[i] := value atamalarının önerilen eşlikçi çağrısıdır — bu adım olmadan form değerleri yalnızca alan odaktayken görünür olabilir ve sonraki bir flatten işlemi değerleri sessizce kaybedebilir. Tüm FormField[] atamalarından sonra ve SaveAs / FlattenPage / FlattenAllPages öncesinde çağırınprocedure GenerateFormAppearances;
GenerateFormAppearances, yüklü belgedeki tüm sayfalarda yer alan her AcroForm widget için /AP (appearance stream) girdisini yeniden oluşturur. Bunu, her sayfayı PDFium form-fill engine (FPDF_FFLDraw) üzerinden işleyerek yapar; böylece geçerli alan değerleri PDF dosyasında saklanan widget görsel temsilinin içine işlenir.
Bu çağrı, FormField[i] := value atamalarının zorunlu eşlikçisidir. Bu adım olmadan bir form alanının değeri PDF'nin data dictionary’sinde saklanır ama karşılık gelen appearance stream olmaz. PDF viewer'lar genellikle değeri yalnızca alan input focus'tayken gösterir; diğer viewer'lar hiç bir şey göstermeyebilir. Daha da önemlisi, önceden appearance generation yapılmadan FlattenPage ya da FlattenAllPages çağrısı yapmak, doldurulmuş değerleri eksik olan bir çıktı üretir.
Bir formu doldurup kilitlerken doğru iş akışı şöyledir: tüm FormField[] değerlerini atayın → bir kez GenerateFormAppearances çağırın → isteğe bağlı olarak FlattenPage / FlattenAllPages çağırın → SaveAs çağırın. Yalnızca doldurulmuş formu flatten etmeden kaydetmeniz gerekiyorsa, üçüncü taraf PDF viewer'larla en yüksek uyumluluğu sağlamak için yine de GenerateFormAppearances önerilir.
Bu yordam tek çağrıda tüm belge üzerinde çalışır; sayfa bazlı bir sürümü yoktur.
begin
// Form alanı değerlerini atayın
Pdf1.FormField[0] := 'Alice Example';
Pdf1.FormField[1] := 'alice@example.com';
Pdf1.FormField[2] := '2026-05-20';
// Değerlerin tüm görüntüleyicilerde görünmesi için appearance stream oluşturun
Pdf1.GenerateFormAppearances;
// Düzleştirip düzenlenemez bir kopya olarak kaydedin
Pdf1.FlattenAllPages;
Pdf1.SaveAs('output_filled_flat.pdf');
end;