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)
当页面包含已填写的表单字段时,你必须在 FlattenPage 之前调用 GenerateFormAppearances。没有外观流,压平器就没有可合并的视觉表示,会静默地从输出中省略字段值。单页的推荐顺序是:赋值 FormField[] 值 → GenerateFormAppearances → FlattenPage → SaveAs
要一次压平文档中的每一页,请使用 FlattenAllPages。将返回值与 FLATTEN_FAIL 对比以检测错误;FLATTEN_NOTHINGTODO 不是错误条件
var
Res: Integer;
begin
Pdf1.PageIndex := 0;
// 填写表单字段,重新生成外观,然后压平
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;