procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);
| Index | Integer. O índice de anotação baseado em 0 do campo de formulário na página atual. Deve estar no intervalo de 0 a AnnotationCount - 1 |
| Flags | TPdfFormFieldFlags. Um conjunto de valores de TPdfFormFieldFlag a aplicar ao campo. Eles correspondem às flags de campo AcroForm definidas na especificação PDF, como somente leitura, obrigatório ou sem exportação |
SetFormFieldFlags grava flags de campo AcroForm na anotação de widget de formulário no índice de anotação baseado em 0 fornecido, na página atual. As flags controlam o comportamento interativo do campo: por exemplo, marcá-lo como somente leitura impede que o usuário altere seu valor, enquanto marcá-lo como obrigatório sinaliza que ele deve ser preenchido antes que o formulário possa ser enviado
O parâmetro Index refere-se ao índice de anotação relatado por AnnotationCount, não ao índice de campo de formulário relatado por FormFieldCount. Use FormFieldInfo ou HasFormFieldAt para identificar quais índices de anotação correspondem a widgets de formulário. Para endereçar um campo por coordenadas de página em vez de índice, use SetFormFieldFlagsAt
Alterações de flags têm efeito imediato no documento em memória, mas não são persistidas até que SaveAs seja chamado. Ao travar programaticamente um formulário após preenchê-lo, a sequência recomendada é: atribuir valores de FormField[], chamar GenerateFormAppearances, definir as flags como somente leitura e então chamar SaveAs
var
I: Integer;
begin
Pdf1.PageIndex := 0;
// Mark every form field on the page as read-only
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;