THotPDF Loaded Form Field Methods

Sintaxis

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);

Descripción

Estos métodos inspeccionan y actualizan campos AcroForm que ya existen en un PDF cargado con LoadFromFile o BeginIncrementalUpdate. Admiten campos de texto (/FT /Tx), campos de botón (/FT /Btn), campos de opción (/FT /Ch), campos de firma (/FT /Sig) y tipos de campo desconocidos

GetLoadedAcroForm devuelve el diccionario /AcroForm cargado y resuelto para inspección directa antes de usar los métodos de campo de nivel superior

GetFormFieldDescription lee el nombre de campo alternativo /TU cargado, que los visores PDF usan habitualmente como tooltip del campo. Devuelve una cadena vacía cuando el campo no tiene descripción

GetFormFieldOptionCount y GetFormFieldOptionValue leen el array /Opt en campos de opción cargados. Las entradas de string simples se devuelven directamente; los arrays de opción de dos elementos devuelven el primer valor de exportación

IsFormFieldReadOnly lee el bit 1 de la bandera /Ff del campo cargado. RenameFormField actualiza el nombre local /T del campo cargado y rechaza nombres totalmente cualificados duplicados en el mismo árbol de formulario cargado

RemoveFormField elimina un campo de formulario cargado del árbol de campos AcroForm y quita de sus páginas las anotaciones widget correspondientes FlattenFormFields pinta los valores visibles actuales de los campos cargados en contenido de página estático, luego elimina la entrada AcroForm del catálogo y las anotaciones widget para que el PDF guardado ya no exponga campos interactivos

Utilice SaveLoadedDocument para escribir una copia completamente guardada del grafo de objetos cargado después de ediciones directas de campos. Para flujos append-only como PDFs firmados, cargue con BeginIncrementalUpdate, edite campos y luego llame a SaveIncrementalUpdate

Ejemplo

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');

Véase también