PDFium Component Docs

GenerateFormAppearances Yöntem

Bu API girdisi tanımlayıcıları, imzaları, kod bloklarını ve PDF terimlerini özgün biçiminde korur.
Bileşen: TPdf  ·  Birim: PDFium
Her sayfadaki her form widget için /AP (appearance stream) girdisini, her sayfayı FPDF_FFLDraw üzerinden işleyerek yeniden oluşturur. Bu, 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ın

Söz dizimi

procedure GenerateFormAppearances;

Açıklama

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.

Örnek

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;

Ayrıca bkz.

FlattenPage, FlattenAllPages, FormField, SaveAs