procedure GenerateFormAppearances;
GenerateFormAppearances перестраивает записи редактируемых текстовых полей и полей со списком через нативный редактор заполнения форм и синхронизирует состояния записи у флажков и переключателей
Нативные присваивания текстовым полям и полям со списком фиксируют свою запись через редактор заполнения форм; правки прямо в словаре и изначально отсутствующие записи всё ещё могут требовать этого шага регенерации перед уплощением, которое использует сохранённые appearance streams, а не отображение живого редактора
Правильный порядок при заполнении и блокировке формы таков: присвойте все значения FormField[] → один раз вызовите GenerateFormAppearances → при необходимости вызовите FlattenPage / FlattenAllPages → вызовите SaveAs. Если нужно лишь сохранить заполненную форму без уплощения, GenerateFormAppearances всё равно рекомендуется для максимальной совместимости со сторонними PDF-ридерами
Процедура работает со всем документом за один вызов; постраничного варианта нет
begin
// Assign form field values
Pdf1.FormField[0] := 'Alice Example';
Pdf1.FormField[1] := '[email protected]';
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;
Унаследованные виджеты используют временную нативную правку с последующим проверенным восстановлением исходного значения родительского поля; в виджет не записывается теневое значение
Унаследованные поля только для чтения не могут использовать этот рабочий процесс правки и возбуждают ошибку; GenerateFormAppearances не является транзакционной операцией над документом