PDFium Delphi Component 文件

SetFormFieldFlags 鏂规硶

组件: TPdf  ·  单元: PDFium
为当前页面上指定注释索引处的表单字段设置 AcroForm 字段标志

Syntax

procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);

IndexInteger。当前页面上表单字段的基于 0 的注释索引。必须在 0 到 AnnotationCount - 1 范围内
FlagsTPdfFormFieldFlags。要应用于该字段的一组 TPdfFormFieldFlag 值。它们对应于 PDF 规范中定义的 AcroForm 字段标志,例如只读、必填或不可导出

Description

SetFormFieldFlags 将 AcroForm 字段标志写入当前页面上给定基于 0 注释索引处的表单控件注释。这些标志控制字段的交互行为:例如,标记为只读可防止用户更改其值,而标记为必填表示必须在表单提交之前填写它

Index 参数引用由 AnnotationCount 报告的注释索引,而不是由 FormFieldCount 报告的表单字段索引。使用 FormFieldInfo 或 HasFormFieldAt 来识别哪些注释索引对应于表单控件。要按页面坐标而非索引定位字段,使用 SetFormFieldFlagsAt

标志更改立即在内存文档中生效,但在调用 SaveAs 之前不会持久化。以编程方式锁定已填写的表单时,推荐的顺序是:赋值 FormField[] 值,调用 GenerateFormAppearances,将标志设为只读,然后调用 SaveAs

Example

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;

See Also

FormField, FormFieldCount, FormFieldInfo, SetFormFieldFlagsAt, HasFormFieldAt