PDFium Component Docs

GenerateFormAppearances Methode

Deze API-entry behoudt identifiers, signatures, codeblokken en PDF-termen in hun oorspronkelijke vorm.
Component: TPdf  ·  Unit: PDFium
Genereert de /AP (appearance stream) opnieuw voor elke form widget op elke pagina door elke pagina via FPDF_FFLDraw te renderen. Dit is de aanbevolen aanvullende aanroep bij FormField[i] := value-toewijzingen — zonder deze stap zijn form values mogelijk alleen zichtbaar wanneer het field focus heeft, en elke daaropvolgende flatten-operatie verliest de waarden stilzwijgend. Roep deze aan na alle FormField[]-toewijzingen en vóór SaveAs / FlattenPage / FlattenAllPages

Syntaxis

procedure GenerateFormAppearances;

Beschrijving

GenerateFormAppearances bouwt de /AP-entry (appearance stream) opnieuw op voor elke AcroForm widget over alle pagina's van het geladen document. Dat gebeurt door elke pagina te renderen via de PDFium form-fill engine (FPDF_FFLDraw), waardoor de huidige fieldwaarden in de visuele representatie van de widget in het PDF-bestand worden ingebakken

Deze aanroep is een verplichte aanvulling op FormField[i] := value-toewijzingen. Zonder deze stap wordt een fieldwaarde wel in de data dictionary van de PDF opgeslagen, maar heeft die geen bijbehorende appearance stream. PDF-viewers tonen de waarde meestal alleen terwijl het field input focus heeft; andere viewers kunnen helemaal niets tonen. Nog belangrijker: elke aanroep van FlattenPage of FlattenAllPages zonder voorafgaande appearance-generatie produceert stilzwijgend output waarin de ingevulde waarden ontbreken

De juiste workflow bij het invullen en vergrendelen van een formulier is: wijs alle FormField[]-waarden toe → roep GenerateFormAppearances één keer aan → roep optioneel FlattenPage / FlattenAllPages aan → roep SaveAs aan. Als je alleen het ingevulde formulier wilt opslaan zonder te flattenen, blijft GenerateFormAppearances aanbevolen om maximale compatibiliteit met PDF-viewers van derden te waarborgen

De procedure werkt in één aanroep op het hele document; er is geen variant per pagina

Voorbeeld

begin
  // Wijs form field values toe
  Pdf1.FormField[0] := 'Alice Example';
  Pdf1.FormField[1] := 'alice@example.com';
  Pdf1.FormField[2] := '2026-05-20';
  
  // Bak appearance streams in zodat waarden in alle viewers zichtbaar zijn
  Pdf1.GenerateFormAppearances;
  
  // Flatten en sla een niet-bewerkbare kopie op
  Pdf1.FlattenAllPages;
  Pdf1.SaveAs('output_filled_flat.pdf');
end;

Zie ook

FlattenPage, FlattenAllPages, FormField, SaveAs