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 GetFormFieldDescripción(FieldIndex: Integer): AnsiString; overload;
function GetFormFieldDescripción(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 selecció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

GetFormFieldDescripción lee el nombre alternativo /TU del campo cargado, que los visores PDF suelen usar como información sobre herramientas del campo. Devuelve una cadena vacía cuando el campo no tiene descripción

GetFormFieldOptionCount y GetFormFieldOptionValue leen la matriz /Opt de los campos de selección cargados. Las entradas simples de cadena se devuelven directamente; las matrices de opción de dos elementos devuelven el primer valor de exportación

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

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

Usa SaveLoadedDocument para escribir una copia completamente guardada del grafo de objetos cargado después de editar campos directamente. Para flujos de solo anexado, como los PDFs firmados, carga con BeginIncrementalUpdate, edita los campos y luego llama 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.GetFormFieldDescripción('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