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