PDFium Delphi Component Docs

FlattenPage Método

Componente: TPdf  ·  Unidade: PDFium
Achata anotações e widgets de formulário da página atual em conteúdo permanente da página, que não pode ser editado. nFlag seleciona o perfil de achatamento: FLAT_NORMALDISPLAY (0) para exibição na tela ou FLAT_PRINT (1) para saída impressa. Retorna um de FLATTEN_SUCCESS, FLATTEN_NOTHINGTODO ou FLATTEN_FAIL. Chame GenerateFormAppearances primeiro ao achatar valores preenchidos de formulário

Syntax

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

nFlagInteger. Seleciona o perfil de achatamento. Passe FLAT_NORMALDISPLAY (0, padrão) para otimizar a saída para exibição na tela, ou FLAT_PRINT (1) para otimizar para saída impressa

Return Value

Uma de três constantes inteiras: FLATTEN_SUCCESS (1) — as anotações foram mescladas no conteúdo da página com sucesso; FLATTEN_NOTHINGTODO (2) — a página não tinha anotações nem widgets para achatar; FLATTEN_FAIL (0) — a operação falhou

Description

FlattenPage mescla todas as anotações e widgets AcroForm da página atual no stream de conteúdo permanente e não editável da página. Depois de achatadas, as anotações deixam de ser interativas — tornam-se gráficos comuns que não podem ser editados, excluídos nem enviados. Esta é a técnica padrão para produzir um PDF "bloqueado" que preserva a aparência visual de um formulário preenchido ou de um documento anotado

O parâmetro nFlag seleciona o perfil de renderização usado ao desenhar os widgets no conteúdo da página. Use FLAT_NORMALDISPLAY (0) para documentos que serão vistos na tela, e FLAT_PRINT (1) para documentos destinados à impressão

Quando a página contém campos de formulário preenchidos, é necessário chamar GenerateFormAppearances antes de FlattenPage. Sem streams de aparência, o achatador não tem representação visual para mesclar e omitirá silenciosamente os valores dos campos da saída. A sequência recomendada para uma única página é: atribuir valores de FormField[] → GenerateFormAppearances → FlattenPage → SaveAs

Para achatar todas as páginas de um documento em uma única chamada, use FlattenAllPages. Compare o valor retornado com FLATTEN_FAIL para detectar erros; FLATTEN_NOTHINGTODO não é uma condição de erro

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