|
AcroForm-understøttelse
Oversigt
Siden HotPDF v2.5.0 kan biblioteket generere interaktive formularer (AcroForm) i henhold til
PDF 1.7 ISO 32000-1 afsnit 12.7. Hvert formularfelt oprettes som en Widget
annotation flettet med felt-ordbogen og registreres automatisk
i dokumentet, så det globale/AcroFormindgang tilføjes til
Catalog, når dokumentet færdiggøres iEndDoc.
Understøttede felttyper
- Tekstfelter (
/FT /Tx) via THPDFPage.AddTextField. Understøtter enkeltlinje, flerlinje, adgangskode, kam, filvalg, RTF, rulle og stavekontrol viaTHPDFFormFieldFlags.
- Afkrydsningsfelter (
/FT /Btn, ingen Pushbutton/Radio bits) viaTHPDFPage.AddCheckBoxmed et konfigurerbart eksportværdi-navn og indledende markeret tilstand
- Radioknapper (
/FT /Btn /Ff Radio) via THPDFPage.AddRadioButton. Flere kald med samme gruppenavn flettes under et fælles overordnet felt med et/Kidsarray, præcis som krævet i 12.7.4.2
- Kombinationsbokse (
/FT /Ch /Ff Combo) via THPDFPage.AddComboBox. Overfør et åbent array af indstillinger
- Listebokse (
/FT /Ch) via THPDFPage.AddListBox. ffMultiSelectaktiverer multivalg
- Trykknapper (
/FT /Btn /Ff Pushbutton) via THPDFPage.AddPushButtonmed valgfri billedtekst (/MK /CA). Siden HotPDF v2.31.0THPDFPage.AddPushButtonWithActionknytter en PDF handlingsordbog til widgetten, så et klik på knappen kører/SubmitForm(send feltværdier to en URL, PDF 1.2 12.7.5.2),/ResetForm(PDF 1.2 12.7.5.3),/JavaScript(kør et JS kodestykke, PDF 1.3 12.6.4.16) eller/URI(åbn en URL i systemets browser, PDF 1.1 12.6.4.7)
- Signaturpladsholderfelter (
/FT /Sig) via THPDFPage.AddSignatureFieldsiden HotPDF v2.12.0. AcroForm-ordbogen får automatisk/SigFlags 3(SignaturesExist + AppendOnly), når mindst ét signaturfelt er til stede. Feltet efterlades usigneret, så eksterne værktøjer (Adobe Acrobat, Foxit, dedikerede CMS / PKCS#7 signeringsbiblioteker) kan tilføje den faktiske kryptografiske signatur, efter at filen er gemt
- Arbejdsgang til in-place-signering via THPDFPage.AddSignedSignatureField + THotPDF.PreparePDFForSigning + THotPDF.InsertSignatureHex siden HotPDF v2.23.0. Første kald reserverer en /V-signaturordbog med pladsholdere til /ByteRange og /Contents. Efter gemning af dokumentet bruger værtsapplikationen PreparePDFForSigning til at patche /ByteRange og afgøre, hvilke filområder der skal hashes. Når en ekstern CMS / PKCS#7-signatur er oprettet (Windows CryptoAPI, OpenSSL eller dedikerede signeringsbiblioteker), bruges InsertSignatureHex til at placere signaturens hex i pladsholderen uden at ændre andre bytes i filen
Inspektion og opdatering af indlæste formularfelter
Siden HotPDF v2.121.9 kan applikationer indlæse en eksisterende AcroForm PDF
medTHotPDF.LoadFromFile, gennemgå dens felter, læse deres
navne, typer og værdier, ændre feltværdier, slå skrivebeskyttet flaget til eller fra,
og gemme den indlæste objektgraf medTHotPDF.SaveLoadedDocumentDenne sti er beregnet til vedvarende redigeringer af et allerede indlæst dokument;
kald ikkeBeginDoc / EndDockun for at gemme indlæste
ændringer i feltværdier
Felt-hjælperne erGetFormFieldCount,
GetFormFieldName, GetFormFieldType,
GetFormFieldValue, SetFormFieldValue, and
SetFormFieldReadOnly. Feltsøgning accepterer enten et nulbaseret
feltindeks eller det fuldt kvalificerede feltnavn. De returneredeTHPDFLoadedFormFieldTypeværdier erlfftText,
lfftButton, lfftChoice,
lfftSignature, or lfftUnknown.
Pascal-eksempel for indlæst felt
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');
Yderligere felthandlinger
Wrapperne AttachFieldKeyStrokeAction, AttachFieldFormatAction, AttachFieldValidateAction og AttachFieldCalculateAction knytter JavaScript til et felts /AA-ordbog ved PDF /K-, /F-, /V- og /C-triggere. Brug dem efter oprettelse eller indlæsning af et felt, når tastaturfiltrering, visningsformatering, validering eller opdateringer af beregnede felter skal høre til feltet snarere end til en knaphandling
Gengivelse af udseende
Som standard sætter den genererede/AcroFormordbog/NeedAppearances trueog uddelegerer gengivelse af udseendestrømmen til den
forbrugende fremviser (Adobe Reader, Foxit, Chrome, browsere, Apple Preview). IndstilTHotPDF.AutoFormAppearances to truefør tilføjelse af felter
og HotPDF vil præ-bygge/AP /NForm XObjects (PDF 1.7 8.10) for
hvert tekstfelt, trykknap, valg (kombi / liste) ogYes /
Offtilstande for hvert afkrydsningsfelt / radioknap-barn. AcroForm-ordbogen
bærer derefter/NeedAppearances falseog en/DRstandard
ressourceindgang, der refererer til de standard 14 standardskrifttyper (Helv
Helvetica, ZaDbZapfDingbats), så gengivere, der ignorerer/NeedAppearancesstadig tegner feltindholdet korrekt. Tilgængelig
siden HotPDF v2.28.0
Feltflag-reference (THPDFFormFieldFlags)
ffReadOnly, ffRequired, ffNoExport— almindelige Tabel 227 flag gældende for enhver felttype
ffMultiline, ffPassword, ffFileSelect, ffDoNotSpellCheck, ffDoNotScroll, ffComb, ffRichText— Tx-specifikke (Tabel 228)
ffEdit, ffSort, ffMultiSelect, ffDoNotSpellCheck, ffCommitOnSelChange— Ch-specifikke (Tabel 230)
Pascal eksempel
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
- AutoFormAppearances-generatoren layouter i øjeblikket kun værdier, der kan kodes med ASCII / WinAnsi; ved felter, hvis /V indeholder flerbyte (UTF-8) tekst, gengiver den gemte /AP et tomt rektangel, indtil værtsviseren regenererer udseendet
- Down (
/D) og rollover (/R) undertilstande genereres ikke; kun den normale (/N) tilstand produceres
- Feltnavnets unikhed er kalderens ansvar; HotPDF gennemtvinger det ikke
Se også
|