procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);
| Index | Integer。当前页面上表单字段的基于 0 的注释索引。必须在 0 到 AnnotationCount - 1 范围内 |
| Flags | TPdfFormFieldFlags。要应用于该字段的一组 TPdfFormFieldFlag 值。它们对应于 PDF 规范中定义的 AcroForm 字段标志,例如只读、必填或不可导出 |
SetFormFieldFlags 将 AcroForm 字段标志写入当前页面上给定基于 0 注释索引处的表单控件注释。这些标志控制字段的交互行为:例如,标记为只读可防止用户更改其值,而标记为必填表示必须在表单提交之前填写它
Index 参数引用由 AnnotationCount 报告的注释索引,而不是由 FormFieldCount 报告的表单字段索引。使用 FormFieldInfo 或 HasFormFieldAt 来识别哪些注释索引对应于表单控件。要按页面坐标而非索引定位字段,使用 SetFormFieldFlagsAt
标志更改立即在内存文档中生效,但在调用 SaveAs 之前不会持久化。以编程方式锁定已填写的表单时,推荐的顺序是:赋值 FormField[] 值,调用 GenerateFormAppearances,将标志设为只读,然后调用 SaveAs
var
I: Integer;
begin
Pdf1.PageIndex := 0;
// 将页面上的每个表单字段标记为只读
for I := 0 to Pdf1.AnnotationCount - 1 do
if Pdf1.FormFieldInfo[I].FieldType <> fftUnknown then
Pdf1.SetFormFieldFlags(I, [ffReadOnly]);
Pdf1.SaveAs('output_readonly.pdf');
end;