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å