|
เมธอดฟิลด์ฟอร์มที่โหลดของ THotPDF
ไวยากรณ์
function GetLoadedAcroForm: THPDFDictionaryObject;
function HasFormFields: Boolean;
function FormFieldExists(const FieldName: AnsiString): Boolean;
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;
function FlattenFormFields: Integer;
procedure SaveLoadedDocument(const TargetFile: TFileName);
คำอธิบาย
methods เหล่านี้ตรวจสอบและอัปเดต AcroForm fields ที่มีอยู่แล้วใน PDF ที่โหลดด้วย LoadFromFile หรือ BeginIncrementalUpdate รองรับ text fields (/FT /Tx), button fields (/FT /Btn), choice fields (/FT /Ch), signature fields (/FT /Sig), และ unknown field types
GetLoadedAcroForm คืนค่า loaded /AcroForm dictionary ที่ resolve แล้ว สำหรับ callers ที่ต้องการ inspect dictionary โดยตรงก่อนใช้ higher-level field methods
HasFormFields รายงานว่า loaded PDF หรือ current in-progress document มี AcroForm fields หรือไม่ FormFieldExists ตรวจ field tree ที่โหลดแล้วหรือ authoring field list ตาม field name โดยไม่ raise เมื่อไม่มี field
GetFormFieldDescription อ่าน /TU alternate field name ของ loaded field ซึ่ง PDF viewers มักใช้เป็น field tooltip และคืน empty string เมื่อ field ไม่มี description
GetFormFieldOptionCount และ GetFormFieldOptionValue อ่าน /Opt array บน loaded choice fields simple string entries จะถูก return โดยตรง ส่วน two-element option arrays จะ return export value ตัวแรก
IsFormFieldReadOnly อ่าน bit 1 ของ flag /Ff ของ loaded field RenameFormField อัปเดต local /T name ของ loaded field และปฏิเสธ duplicate fully qualified names ใน loaded form tree เดียวกัน
RemoveFormField ลบ loaded form field จาก AcroForm field tree และลบ widget annotations ที่ตรงกันออกจาก pages FlattenFormFields วาด current visible values ของ loaded หรือ in-progress fields เป็น static page content แล้วลบ AcroForm catalog entry และ widget annotations เพื่อให้ PDF ที่ save แล้วไม่เปิดเผย interactive fields อีกต่อไป ค่าที่ return คือจำนวน fields ที่ flatten หรือ zero เมื่อไม่มี form fields
ใช้ SaveLoadedDocument เพื่อเขียน copy ที่ save เต็มของ loaded object graph หลังจากแก้ field โดยตรง สำหรับ append-only workflows เช่น signed PDFs ให้ load ด้วย BeginIncrementalUpdate, แก้ fields, แล้วเรียก SaveIncrementalUpdate
ตัวอย่าง
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');
if PDF.HasFormFields then
Writeln('Plan exists: ', PDF.FormFieldExists('Plan'));
FlattenedCount := PDF.FlattenFormFields;
PDF.SaveLoadedDocument('FlattenedForm.pdf');
ดูเพิ่มเติม
- การสนับสนุน AcroForm
- LoadFromFile
- SaveIncrementalUpdate
|