/AP (appearance stream) dla każdego widżetu formularza na każdej stronie przez renderowanie każdej strony przez FPDF_FFLDraw. To zalecane wywołanie towarzyszące przypisaniom FormField[i] := value — bez niego wartości pól mogą być widoczne tylko wtedy, gdy pole ma fokus, a każda późniejsza operacja spłaszczania po cichu utraci wartości. Wywołuj po wszystkich przypisaniach FormField[] i przed SaveAs / FlattenPage / FlattenAllPagesprocedure GenerateFormAppearances;
GenerateFormAppearances przebudowuje wpis /AP (appearance stream) dla każdego widżetu AcroForm na wszystkich stronach wczytanego dokumentu. Robi to przez renderowanie każdej strony przez silnik form-fill PDFium (FPDF_FFLDraw), co powoduje osadzenie bieżących wartości pól w wizualnej reprezentacji widżetu zapisanej wewnątrz pliku PDF
To wywołanie jest obowiązkowym towarzyszem przypisań FormField[i] := value. Bez niego wartość pola formularza jest zapisana w słowniku danych PDF, ale nie ma odpowiadającego jej strumienia wyglądu. Przeglądarki PDF zwykle pokazują wartość tylko wtedy, gdy pole ma fokus wejścia; inne przeglądarki mogą nie pokazywać niczego. Co ważniejsze, każde wywołanie FlattenPage albo FlattenAllPages bez wcześniejszego wygenerowania wyglądu po cichu wyprodukuje wynik bez wypełnionych wartości
Prawidłowy przepływ pracy przy wypełnianiu i blokowaniu formularza to: przypisz wszystkie wartości FormField[] → wywołaj raz GenerateFormAppearances → opcjonalnie wywołaj FlattenPage / FlattenAllPages → wywołaj SaveAs. Jeśli chcesz tylko zapisać wypełniony formularz bez spłaszczania, GenerateFormAppearances nadal jest zalecane, aby zapewnić maksymalną zgodność z zewnętrznymi przeglądarkami PDF
Procedura działa na całym dokumencie jednym wywołaniem; nie ma wariantu per strona
begin
// Assign form field values
Pdf1.FormField[0] := 'Alice Example';
Pdf1.FormField[1] := 'alice@example.com';
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;