|
THotPDF Méthodes de champs de formulaire chargés
Syntaxe
function GetFormFieldCount: Integer;
function GetFormFieldName(FieldIndex: Integer): AnsiString;
function GetFormFieldValue(FieldIndex: Integer): AnsiString; overload;
function GetFormFieldValue(const FieldName: AnsiString): AnsiString; overload;
function GetFormFieldType(FieldIndex: Integer): THPDFLoadedFormFieldType; overload;
function GetFormFieldType(const FieldName: AnsiString): THPDFLoadedFormFieldType; overload;
function GetFormFieldDescription(FieldIndex: Integer): AnsiString; overload;
function GetFormFieldDescription(const FieldName: AnsiString): AnsiString; overload;
function GetFormFieldOptionCount(FieldIndex: Integer): Integer; overload;
function GetFormFieldOptionCount(const FieldName: AnsiString): Integer; overload;
function GetFormFieldOptionValue(FieldIndex, OptionIndex: Integer): AnsiString; overload;
function GetFormFieldOptionValue(const FieldName: AnsiString; OptionIndex: Integer): AnsiString; overload;
function IsFormFieldReadOnly(FieldIndex: Integer): Boolean; overload;
function IsFormFieldReadOnly(const FieldName: AnsiString): Boolean; overload;
procedure SetFormFieldValue(FieldIndex: Integer; const Value: AnsiString); overload;
procedure SetFormFieldValue(const FieldName, Value: AnsiString); overload;
procedure SetFormFieldReadOnly(FieldIndex: Integer; ReadOnly: Boolean); overload;
procedure SetFormFieldReadOnly(const FieldName: AnsiString; ReadOnly: Boolean); overload;
procedure RenameFormField(FieldIndex: Integer; const NewName: AnsiString); overload;
procedure RenameFormField(const FieldName, NewName: AnsiString); overload;
procedure RemoveFormField(FieldIndex: Integer); overload;
procedure RemoveFormField(const FieldName: AnsiString); overload;
procedure FlattenFormFields;
procedure SaveLoadedDocument(const TargetFile: TFileName);
Description
Ces méthodes inspectent et mettent à jour les champs AcroForm qui existent déjà dans
un PDF chargé avec LoadFromFile ou
BeginIncrementalUpdate. Elles prennent en charge les champs texte
(/FT /Tx), les champs bouton (/FT /Btn), les champs liste
(/FT /Ch), les champs de signature
(/FT /Sig) et les types de champs inconnus
GetLoadedAcroForm renvoie le dictionnaire
/AcroForm chargé résolu pour les appelants qui ont besoin d’une
inspection directe du dictionnaire avant d’utiliser les méthodes de champs de haut niveau
HasFormFields indique si le PDF chargé ou le document en cours
possède des champs AcroForm. FormFieldExists
vérifie un arbre de champs chargé ou la liste de champs d’écriture par nom de champ
sans lever d’exception lorsque le champ est absent
GetFormFieldDescription lit le nom de champ alternatif
/TU du champ chargé, couramment utilisé par les lecteurs PDF comme
infobulle du champ. Il renvoie une chaîne vide lorsque le champ n’a pas
de description
GetFormFieldOptionCount et
GetFormFieldOptionValue lisent le tableau /Opt
des champs liste chargés. Les entrées chaîne simples sont renvoyées directement ;
les tableaux d’options à deux éléments renvoient la première valeur d’export
IsFormFieldReadOnly lit le bit 1 du flag
/Ff du champ chargé. RenameFormField met à jour le nom
/T local du champ chargé et rejette les noms complets
dupliqués dans le même arbre de formulaire chargé
Le cache de relations de formulaire chargé projette les champs, noms qualifiés,
automatiquement. Appelez InvalidateLoadedFormRelationshipCache
après des modifications de relations effectuées via les API d’objets bruts
RecalculateLoadedFormFields parcourt le tableau chargé
/AcroForm /CO dans l’ordre du document et évalue les opérations
bornées AFSimple_Calculate SUM,
AVG, PRD, MIN et
MAX. Les valeurs mises à jour reçoivent des apparences régénérées
RemoveFormField supprime un champ de formulaire chargé du
ses pages. FlattenLoadedFormFields ne peint que les champs nommés
annotations, et préserve les champs et pages intacts. Un tableau de noms
vide sélectionne tous les champs. La porte de permission par défaut refuse
tout changement structurel interdit par des signatures DocMDP ou FieldMDP
FlattenFormFields conserve le contrat de commodité tous-champs
et délègue les documents chargés au même chemin conscient des signatures et
local à la page. Il renvoie le nombre de champs aplatis, ou zéro
lorsqu’aucun champ de formulaire correspondant n’était présent
Utilisez SaveLoadedDocument pour écrire une copie entièrement
enregistrée du graphe d’objets chargé après des éditions directes de champs
Pour les flux en ajout seul tels que les PDF signés, chargez avec
BeginIncrementalUpdate, éditez les champs, puis appelez
SaveIncrementalUpdate
Exemple
PDF.LoadFromFile('InputForm.pdf');
for I := 0 to PDF.GetFormFieldCount - 1 do
Writeln(PDF.GetFormFieldName(I), ' = ', PDF.GetFormFieldValue(I));
for I := 0 to PDF.GetFormFieldOptionCount('Plan') - 1 do
Writeln('Plan option ', I, ': ', PDF.GetFormFieldOptionValue('Plan', I));
Writeln('Customer description: ', PDF.GetFormFieldDescription('CustomerName'));
PDF.SetFormFieldValue('CustomerName', 'Bob');
PDF.SetFormFieldReadOnly('CustomerName', True);
PDF.RenameFormField('CustomerName', 'ClientName');
PDF.RemoveFormField('Approved');
PDF.SaveLoadedDocument('UpdatedForm.pdf');
PDF.LoadFromFile('UpdatedForm.pdf');
PDF.FlattenFormFields;
Writeln('Plan exists: ', PDF.FormFieldExists('Plan'));
FlattenedCount := PDF.FlattenFormFields;
PDF.SaveLoadedDocument('FlattenedForm.pdf');
PDF.BeginIncrementalUpdate('SignedForm.pdf');
FlattenedCount := PDF.FlattenLoadedFormFields(['CalculatedTotal']);
PDF.SaveLoadedDocument('FlattenedForm.pdf');
Voir aussi
|