|
AcroForm podrška
Pregled
Od HotPDF v2.5.0 biblioteka može da emituje interaktivne obrasce (AcroForm) prema PDF 1.7 ISO 32000-1 odeljku 12.7. Svako polje obrasca se kreira kao Widget anotacija spojena sa rečnikom polja i automatski se registruje sa dokumentom tako da se globalni unos /AcroForm dodaje u Catalog kada se dokument završava u EndDoc
Podržani tipovi polja
- Tekstualna polja (
/FT /Tx) preko THPDFPage.AddTextField. Podržava jednolinijske, višelinijske, lozinke, comb, izbor fajla, rich-text, pomeranje i proveru pravopisa kroz THPDFFormFieldFlags
- Polja za potvrdu (
/FT /Btn, bez Pushbutton/Radio bitova) preko THPDFPage.AddCheckBox sa podesivim imenom izvozne vrednosti i početnim označenim stanjem
- Radio dugmad (
/FT /Btn /Ff Radio) preko THPDFPage.AddRadioButton. Višestruki pozivi sa istim imenom grupe spajaju se pod deljenim roditeljskim poljem sa nizom /Kids, baš kao što zahteva 12.7.4.2
- Combo polja (
/FT /Ch /Ff Combo) preko THPDFPage.AddComboBox. Prosledite otvoreni niz opcija
- List polja (
/FT /Ch) preko THPDFPage.AddListBox. ffMultiSelect omogućava višestruki izbor
- Push dugmad (
/FT /Btn /Ff Pushbutton) preko THPDFPage.AddPushButton sa opcionalnim natpisom (/MK /CA). Od HotPDF v2.31.0, THPDFPage.AddPushButtonWithAction prikačuje PDF akcioni rečnik widgetu tako da klik na dugme pokreće /SubmitForm (slanje vrednosti polja na URL, PDF 1.2 12.7.5.2), /ResetForm (PDF 1.2 12.7.5.3), /JavaScript (pokretanje JS isečka, PDF 1.3 12.6.4.16) ili /URI (otvaranje URL-a u sistemskom pregledaču, PDF 1.1 12.6.4.7)
- Polja za potpis (
/FT /Sig) preko THPDFPage.AddSignatureField od HotPDF v2.12.0. Rečnik AcroForm automatski dobija /SigFlags 3 (SignaturesExist + AppendOnly) kada je prisutno bar jedno polje za potpis. Polje ostaje nepotpisano tako da eksterni alati (Adobe Acrobat, Foxit, namenski CMS / PKCS#7 alati za potpisivanje) mogu da prilože stvarni kriptografski potpis posle čuvanja fajla
- Tok rada za potpisivanje u mestu preko
THPDFPage.AddSignedSignatureField + THotPDF.PreparePDFForSigning + THotPDF.InsertSignatureHex od HotPDF v2.23.0. Prvi poziv rezerviše /V rečnik potpisa sa /ByteRange i /Contents rezervama. Posle čuvanja dokumenta host aplikacija poziva PreparePDFForSigning da zakrpi /ByteRange i sazna koje opsege fajla treba heširati. Posle eksternog pravljenja CMS / PKCS#7 detached potpisa (Windows CryptoAPI, OpenSSL, namenski alati za potpisivanje), poziva InsertSignatureHex da ubaci heks potpisa u rezervu bez narušavanja bilo kog drugog bajta u fajlu
Loaded form-field inspection and updates
Od HotPDF v2.121.9 aplikacije mogu da učitaju postojeći AcroForm PDF pomoću THotPDF.LoadFromFile, da nabroje njegova polja, pročitaju njihova imena, tipove i vrednosti, promene vrednosti polja, prebace zastavicu samo za čitanje i sačuvaju učitani graf objekata pomoću THotPDF.SaveLoadedDocument. Ovaj put je namenjen trajnim izmenama već učitanog dokumenta; ne zovite BeginDoc / EndDoc samo da biste sačuvali promene vrednosti polja
Pomoćne funkcije za polja su GetFormFieldCount, GetFormFieldName, GetFormFieldType, GetFormFieldValue, SetFormFieldValue i SetFormFieldReadOnly. Pretraga polja prihvata ili indeks polja zasnovan na nuli ili potpuno kvalifikovano ime polja. Vraćene vrednosti THPDFLoadedFormFieldType su lfftText, lfftButton, lfftChoice, lfftSignature ili lfftUnknown
Loaded-field Pascal example
HPDF.LoadFromFile('InputForm.pdf');
for I := 0 to HPDF.GetFormFieldCount - 1 do
Writeln(HPDF.GetFormFieldName(I), ' = ', HPDF.GetFormFieldValue(I));
HPDF.SetFormFieldValue('CustomerName', 'Bob');
HPDF.SetFormFieldValue('Plan', 'Premium');
HPDF.SetFormFieldReadOnly('CustomerName', True);
HPDF.SaveLoadedDocument('UpdatedForm.pdf');
Field additional actions
Omotači AttachFieldKeyStrokeAction, AttachFieldFormatAction, AttachFieldValidateAction i AttachFieldCalculateAction prikačuju JavaScript u rečnik /AA polja za PDF okidače /K, /F, /V i /C. Koristite ih posle kreiranja ili učitavanja polja kada filtriranje unosa, prikazno formatiranje, validacija ili ažuriranja izračunatog polja moraju da žive uz polje umesto uz dugme
Appearance generation
Podrazumevano, emitovani rečnik /AcroForm postavlja /NeedAppearances true i prepušta renderovanje appearance tokova pregledaču koji koristi dokument (Adobe Reader, Foxit, Chrome, pregledači, Apple Preview). Postavite THotPDF.AutoFormAppearances na true pre dodavanja polja i HotPDF će unapred napraviti /AP /N Form XObject-e (PDF 1.7 8.10) za svako tekstualno polje, push dugme, izborno polje (combo / list) i stanja Yes / Off za svaku potvrdu / radio ćeliju. Rečnik AcroForm tada nosi /NeedAppearances false i /DR unos podrazumevanih resursa koji upućuje na standardnih 14 osnovnih fontova (Helv Helvetica, ZaDb ZapfDingbats), pa rendereri koji ignorišu /NeedAppearances i dalje ispravno crtaju sadržaj polja. Dostupno od HotPDF v2.28.0
Field flag reference (THPDFFormFieldFlags)
ffReadOnly, ffRequired, ffNoExport — common Table 227 flags applicable to every field type.
ffMultiline, ffPassword, ffFileSelect, ffDoNotSpellCheck, ffDoNotScroll, ffComb, ffRichText — Tx-specific (Table 228).
ffEdit, ffSort, ffMultiSelect, ffDoNotSpellCheck, ffCommitOnSelChange — Ch-specific (Table 230).
Pascal example
HPDF.BeginDoc;
HPDF.AddPage;
HPDF.CurrentPage.AddTextField('Name', '', Rect(50, 100, 250, 120));
HPDF.CurrentPage.AddCheckBox('Agree', 'Yes', Rect(50, 130, 70, 145), True);
HPDF.CurrentPage.AddRadioButton('Color', 'Red', Rect(50, 160, 70, 175), True);
HPDF.CurrentPage.AddRadioButton('Color', 'Green', Rect(80, 160, 100, 175));
HPDF.CurrentPage.AddRadioButton('Color', 'Blue', Rect(110, 160, 130, 175));
HPDF.CurrentPage.AddComboBox('Country', 'CN',
['CN', 'US', 'JP'], Rect(50, 190, 250, 210));
HPDF.EndDoc;
Limitations
- Generator
AutoFormAppearances trenutno raspoređuje samo ASCII / WinAnsi-kodabilne vrednosti; za polja čiji /V sadrži višebajtni (UTF-8) tekst sačuvani /AP prikazuje prazan pravougaonik dok host pregledač ne regeneriše izgled
- Pod-stanja Down (
/D) i rollover (/R) se ne generišu; proizvodi se samo normalno stanje (/N)
- Jedinstvenost imena polja je odgovornost pozivaoca; HotPDF to ne nameće
Vidi i
|