procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);
| Index | Integer. L’index d’annotation de base 0 du champ de formulaire sur la page courante. Doit être dans la plage 0 à AnnotationCount - 1 |
| Flags | TPdfFormFieldFlags. Un ensemble de valeurs TPdfFormFieldFlag à appliquer au champ. Celles-ci correspondent aux drapeaux de champ AcroForm définis dans la spécification PDF, comme lecture seule, requis ou sans export |
SetFormFieldFlags écrit les indicateurs de champ AcroForm dans l’annotation widget de formulaire à l’indice d’annotation à partir de zéro sur la page courante. Les indicateurs contrôlent le comportement interactif du champ : par exemple, le fait de le marquer en lecture seule empêche l’utilisateur de modifier sa valeur, tandis que le fait de le marquer obligatoire indique qu’il doit être rempli avant l’envoi du formulaire
Le paramètre Index fait référence à l’indice d’annotation renvoyé par AnnotationCount, et non à l’indice de champ de formulaire renvoyé par FormFieldCount. Utilisez FormFieldInfo ou HasFormFieldAt pour identifier quels indices d’annotation correspondent aux widgets de formulaire. Pour adresser un champ par coordonnées de page plutôt que par indice, utilisez SetFormFieldFlagsAt
Les changements d’indicateurs prennent effet immédiatement dans le document en mémoire mais ne sont pas persistés tant que SaveAs n’a pas été appelé. Lors du verrouillage programmatique d’un formulaire après remplissage, la séquence recommandée est : affecter les valeurs FormField[], appeler GenerateFormAppearances, définir les indicateurs en lecture seule, puis appeler 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;