function FlattenPage(nFlag: Integer = FLAT_NORMALDISPLAY): Integer;
| nFlag | Integer. Выбирает профиль сведения. Передайте FLAT_NORMALDISPLAY (0, по умолчанию) для оптимизации вывода под экран или FLAT_PRINT (1) для оптимизации под печать |
FLATTEN_SUCCESS (1) — аннотации успешно объединены с содержимым страницы; FLATTEN_NOTHINGTODO (2) — на странице не было аннотаций или виджетов для сведения; FLATTEN_FAIL (0) — операция завершилась неудачейFlattenPage объединяет все аннотации и виджеты AcroForm на текущей странице в постоянный, нередактируемый поток содержимого страницы. После сведения аннотации перестают быть интерактивными — они становятся обычной графикой, которую нельзя редактировать, удалять или отправлять. Это стандартный приём для создания «заблокированного» PDF, сохраняющего внешний вид заполненной формы или аннотированного документа
Параметр nFlag выбирает профиль отрисовки, используемый при переносе виджетов в содержимое страницы. Используйте FLAT_NORMALDISPLAY (0) для документов, предназначенных для просмотра на экране, и FLAT_PRINT (1) для документов, отправляемых на печать
Когда страница содержит заполненные поля формы, необходимо вызвать GenerateFormAppearances перед FlattenPage. Без потоков внешнего вида у средства сведения нет визуального представления для объединения, и оно молча опустит значения полей в выводе. Рекомендуемая последовательность для одной страницы: присвоить значения FormField[] → GenerateFormAppearances → FlattenPage → SaveAs
Чтобы свести все страницы документа одним вызовом, используйте FlattenAllPages. Сверяйте возвращаемое значение с FLATTEN_FAIL для обнаружения ошибок; FLATTEN_NOTHINGTODO не является ошибкой
var
Res: Integer;
begin
Pdf1.PageIndex := 0;
// Fill a form field, regenerate appearances, then flatten
Pdf1.FormField[0] := 'John Smith';
Pdf1.GenerateFormAppearances;
Res := Pdf1.FlattenPage(FLAT_NORMALDISPLAY);
if Res = FLATTEN_FAIL then
ShowMessage('Flatten failed')
else
Pdf1.SaveAs('output_flat.pdf');
end;