PDFium Delphi Component Docs

FlattenPage Метод

Компонент: TPdf  ·  Модуль: PDFium
Сводит аннотации и виджеты формы на текущей странице в постоянное, нередактируемое содержимое страницы. nFlag выбирает профиль сведения: FLAT_NORMALDISPLAY (0) для экрана или FLAT_PRINT (1) для печатного вывода. Возвращает одну из констант FLATTEN_SUCCESS, FLATTEN_NOTHINGTODO или FLATTEN_FAIL. При сведении заполненных значений формы сначала вызывайте GenerateFormAppearances

Syntax

function FlattenPage(nFlag: Integer = FLAT_NORMALDISPLAY): Integer;

nFlagInteger. Выбирает профиль сведения. Передайте FLAT_NORMALDISPLAY (0, по умолчанию) для оптимизации вывода под экран или FLAT_PRINT (1) для оптимизации под печать

Return Value

Одна из трёх целочисленных констант: FLATTEN_SUCCESS (1) — аннотации успешно объединены с содержимым страницы; FLATTEN_NOTHINGTODO (2) — на странице не было аннотаций или виджетов для сведения; FLATTEN_FAIL (0) — операция завершилась неудачей

Description

FlattenPage объединяет все аннотации и виджеты AcroForm на текущей странице в постоянный, нередактируемый поток содержимого страницы. После сведения аннотации перестают быть интерактивными — они становятся обычной графикой, которую нельзя редактировать, удалять или отправлять. Это стандартный приём для создания «заблокированного» PDF, сохраняющего внешний вид заполненной формы или аннотированного документа

Параметр nFlag выбирает профиль отрисовки, используемый при переносе виджетов в содержимое страницы. Используйте FLAT_NORMALDISPLAY (0) для документов, предназначенных для просмотра на экране, и FLAT_PRINT (1) для документов, отправляемых на печать

Когда страница содержит заполненные поля формы, необходимо вызвать GenerateFormAppearances перед FlattenPage. Без потоков внешнего вида у средства сведения нет визуального представления для объединения, и оно молча опустит значения полей в выводе. Рекомендуемая последовательность для одной страницы: присвоить значения FormField[] → GenerateFormAppearances → FlattenPage → SaveAs

Чтобы свести все страницы документа одним вызовом, используйте FlattenAllPages. Сверяйте возвращаемое значение с FLATTEN_FAIL для обнаружения ошибок; FLATTEN_NOTHINGTODO не является ошибкой

Example

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;

See Also

FlattenAllPages, GenerateFormAppearances, SaveAs, Annotation