THotPDF Loaded Form Field Methods

Söz dizimi

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

Açıklama

Bu methodlar, LoadFromFile veya BeginIncrementalUpdate ile loaded PDF içinde zaten bulunan AcroForm fieldlarını inspect ve update eder. Text field (/FT /Tx), button field (/FT /Btn), choice field (/FT /Ch), signature field (/FT /Sig) ve bilinmeyen field typelarını destekler

GetLoadedAcroForm üst düzey alan yöntemlerinden önce doğrudan inceleme için çözümlenmiş yüklü /AcroForm sözlüğünü döndürür

HasFormFields, yüklenen PDF'in veya sürmekte olan belgenin AcroForm fieldları olup olmadığını raporlar. FormFieldExists, alan yokken exception fırlatmadan loaded field tree'sini veya authoring field listesini alan adına göre kontrol eder

GetFormFieldDescription, loaded field için PDF viewerlar tarafından field tooltip olarak sık kullanılan /TU alternate field name değerini okur. Field description yoksa boş string döndürür

GetFormFieldOptionCount ve GetFormFieldOptionValue, loaded choice fieldlar üzerindeki /Opt arrayini okur. Basit string entryler doğrudan döndürülür; iki öğeli option arrayleri ilk export value değerini döndürür

IsFormFieldReadOnly, loaded field için /Ff flag bit 1 değerini okur. RenameFormField, loaded fieldın local /T adını günceller ve aynı loaded form tree içinde duplicate fully qualified nameleri reddeder

Loaded form relationship cache; tek bir lazy linear build sonrasında fieldları, qualified adları, widgetları, annotationları ve sayfaları iki yönlü eşler. Üst düzey mutation metotları bu cache'i otomatik günceller veya geçersiz kılar. Raw object API'leri üzerinden relationship değiştiren düzenlemelerden sonra InvalidateLoadedFormRelationshipCache'i çağırın

RecalculateLoadedFormFields, yüklenen /AcroForm /CO dizisini belge sırasına göre ziyaret eder ve sınırlı AFSimple_Calculate işlemlerini SUM, AVG, PRD, MIN ve MAX olarak değerlendirir. Güncellenen değerler yeniden üretilmiş appearance'ları alır

RemoveFormField, loaded form fieldı AcroForm field tree içinden siler ve matching widget annotationları sayfalarından kaldırır. FlattenFormFields, loaded fieldların current visible value değerlerini static page content içine boyar, ardından AcroForm catalog entry ve widget annotationları kaldırır; böylece saved PDF artık interactive fieldları expose etmez

FlattenFormFields, all-fields kolaylık sözleşmesini korur ve loaded belgeleri aynı imza farkında, sayfa yerel yola devreder. Düzleştirilen field sayısını döndürür; eşleşen form fieldı yoksa sıfır döndürür

Direct field edit sonrası loaded object graphın tam saved copy değerini yazmak için SaveLoadedDocument kullanın. Signed PDF gibi append-only workflowlar için BeginIncrementalUpdate ile load edin, fieldları edit edin ve ardından SaveIncrementalUpdate çağırın

Örnek

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');
PDF.BeginIncrementalUpdate('SignedForm.pdf');
FlattenedCount := PDF.FlattenLoadedFormFields(['CalculatedTotal']);
PDF.SaveIncrementalUpdate('SignedForm-flattened.pdf');

Ayrıca bkz.