function FlattenPage(nFlag: Integer = FLAT_NORMALDISPLAY): Integer;
| nFlag | Integer. Selecciona el perfil de aplanado. Pase FLAT_NORMALDISPLAY (0, predeterminado) para optimizar la salida para visualización en pantalla, o FLAT_PRINT (1) para optimizar la salida impresa |
FLATTEN_SUCCESS (1) — las anotaciones se fusionaron correctamente con el contenido de la página; FLATTEN_NOTHINGTODO (2) — la página no tenía anotaciones ni widgets que aplanar; FLATTEN_FAIL (0) — la operación fallóFlattenPage fusiona todas las anotaciones y widgets de AcroForm de la página actual en el flujo de contenido de página permanente y no editable. Una vez aplanadas, las anotaciones dejan de ser interactivas — se convierten en gráficos ordinarios que no se pueden editar, eliminar ni enviar. Esta es la técnica estándar para producir un PDF "bloqueado" que conserva la apariencia visual de un formulario rellenado o de un documento anotado
El parámetro nFlag selecciona el perfil de renderizado que se usa al dibujar los widgets en el contenido de la página. Use FLAT_NORMALDISPLAY (0) para documentos que se verán en pantalla, y FLAT_PRINT (1) para documentos destinados a impresión
Cuando la página contenga campos de formulario rellenados, debe llamar a GenerateFormAppearances antes de FlattenPage. Sin flujos de apariencia, el aplanador no tiene una representación visual que fusionar y omitirá silenciosamente los valores de los campos en la salida. La secuencia recomendada para una sola página es: asignar valores de FormField[] → GenerateFormAppearances → FlattenPage → SaveAs
Para aplanar todas las páginas de un documento en una sola llamada, use FlattenAllPages. Compare el valor devuelto con FLATTEN_FAIL para detectar errores; FLATTEN_NOTHINGTODO no es una condición de error
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;