PDFium Component Docs

GenerateFormAppearances Metoda

Ten wpis API zachowuje identyfikatory, sygnatury, bloki kodu i terminy PDF w oryginalnej postaci.
Komponent: TPdf  ·  Moduł: PDFium
Regeneruje wpis /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 / FlattenAllPages

Składnia

procedure GenerateFormAppearances;

Opis

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

Przykład

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;

Zobacz też

FlattenPage, FlattenAllPages, FormField, SaveAs