|
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 de texte (/FT /Tx), les champs bouton (/FT /Btn), les champs de choix (/FT /Ch), les champs de signature (/FT /Sig) et les types de champ inconnus
GetLoadedAcroForm renvoie le dictionnaire /AcroForm chargé et résolu pour inspection directe avant les méthodes de champ de niveau supérieur
GetFormFieldDescription lit le nom de champ alternatif /TU du champ chargé, généralement utilisé par les lecteurs PDF comme info-bulle 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 de choix chargés. Les entrées simples sous forme de chaîne sont renvoyées directement ; les tableaux d’options à deux éléments renvoient la première valeur d’export
IsFormFieldReadOnly lit le bit 1 du drapeau /Ff du champ chargé. RenameFormField met à jour le nom local /T du champ chargé et refuse les doublons de noms pleinement qualifiés dans le même arbre de formulaire chargé
RemoveFormField supprime un champ de formulaire chargé de l’arbre de champs AcroForm et retire des pages les annotations widget correspondantes. FlattenFormFields applique les valeurs visibles actuelles des champs chargés au contenu statique des pages, puis supprime l’entrée du catalogue AcroForm et les annotations widget afin que le PDF enregistré n’expose plus de champs interactifs
Utilisez SaveLoadedDocument pour écrire une copie entièrement enregistrée du graphe d’objets chargé après des modifications directes de champs. Pour les flux de travail en ajout seul, comme les PDF signés, chargez avec BeginIncrementalUpdate, modifiez 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;
PDF.SaveLoadedDocument('FlattenedForm.pdf');
Voir aussi
|