function FlattenPage(nFlag: Integer = FLAT_NORMALDISPLAY): Integer;
| nFlag | Integer. 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 |
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 falhouFlattenPage 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
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;