THotPDF-methoden voor geladen formuliervelden

Syntaxis

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 GetFormFieldBeschrijving(FieldIndex: Integer): AnsiString; overload;
function GetFormFieldBeschrijving(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);

Beschrijving

Deze methoden inspecteren en actualiseren AcroForm-velden die al bestaan in een PDF die is geladen met LoadFromFile of BeginIncrementalUpdate. Ze ondersteunen tekstvelden (/FT /Tx), knopvelden (/FT /Btn), keuzevelden (/FT /Ch), handtekeningvelden (/FT /Sig) en onbekende veldtypen

GetLoadedAcroForm geeft het opgeloste geladen /AcroForm-woordenboek terug voor directe inspectie vóór de hogere veldmethoden

GetFormFieldBeschrijving leest de alternatieve veldnaam /TU van het geladen veld, die PDF-viewers vaak als veldtooltip gebruiken. De methode geeft een lege tekenreeks terug wanneer het veld geen beschrijving heeft

GetFormFieldOptionCount en GetFormFieldOptionValue lezen de /Opt-array op geladen keuzevelden. Eenvoudige tekenreeksvermeldingen worden direct teruggegeven; optie-arrays met twee elementen geven de eerste exportwaarde terug

IsFormFieldReadOnly leest bit 1 van de /Ff-vlag van het geladen veld. RenameFormField werkt de lokale /T-naam van het geladen veld bij en weigert dubbele volledig gekwalificeerde namen in dezelfde geladen formulierboom

RemoveFormField verwijdert een geladen formulierveld uit de AcroForm-veldboom en verwijdert de bijbehorende widgetannotaties van hun pagina's. FlattenFormFields tekent de huidige zichtbare waarden van geladen velden in statische pagina-inhoud en verwijdert daarna de AcroForm-catalogusinvoer en widgetannotaties zodat de opgeslagen PDF geen interactieve velden meer blootstelt

Gebruik SaveLoadedDocument om een volledig opgeslagen kopie van de geladen objectgrafiek weg te schrijven na directe veldwijzigingen. Voor append-only workflows zoals ondertekende PDF's, laad met BeginIncrementalUpdate, bewerk velden en roep daarna SaveIncrementalUpdate aan

Voorbeeld

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.GetFormFieldBeschrijving('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');

Zie ook