|
AcroForm-ondersteuning
Overzicht
Sinds HotPDF v2.5.0 kan de bibliotheek interactieve formulieren (AcroForm) uitvoeren volgens
PDF 1.7 ISO 32000-1 sectie 12.7. Elk formulierveld wordt gemaakt als een Widget-
annotatie die wordt samengevoegd met de veldwoordenlijst en automatisch bij het
document wordt geregistreerd, zodat de globale /AcroForm-vermelding
aan de Catalog wordt toegevoegd wanneer het document in EndDoc wordt afgerond
Ondersteunde veldtypen
- Tekstvelden (
/FT /Tx) via THPDFPage.AddTextField. Ondersteunt één regel, meerdere regels, wachtwoord, comb, bestandsselectie, rich text, scroll en spellcheck via THPDFFormFieldFlags
- Selectievakjes (
/FT /Btn, zonder Pushbutton/Radio-bits) via THPDFPage.AddCheckBox met een instelbare exportwaardenaam en initiële aangevinkte status
- Radioknoppen (
/FT /Btn /Ff Radio) via THPDFPage.AddRadioButton. Meerdere aanroepen met dezelfde groepsnaam worden samengevoegd onder een gedeeld ouderveld met een /Kids-array, precies zoals 12.7.4.2 vereist
- Keuzelijsten (
/FT /Ch /Ff Combo) via THPDFPage.AddComboBox. Geef een open array met opties door
- Lijstvakken (
/FT /Ch) via THPDFPage.AddListBox. ffMultiSelect schakelt meerkeuze in
- Drukknoppen (
/FT /Btn /Ff Pushbutton) via THPDFPage.AddPushButton met optioneel bijschrift (/MK /CA). Sinds HotPDF v2.31.0 koppelt THPDFPage.AddPushButtonWithAction een PDF-actiewoordenlijst aan de widget, zodat klikken op de knop /SubmitForm uitvoert (veldwaarden naar een URL posten, PDF 1.2 12.7.5.2), /ResetForm (PDF 1.2 12.7.5.3), /JavaScript (een JS-fragment uitvoeren, PDF 1.3 12.6.4.16) of /URI (een URL openen in de systeembrowser, PDF 1.1 12.6.4.7)
- Handtekeningplaatsaanduidingen (
/FT /Sig) via THPDFPage.AddSignatureField sinds HotPDF v2.12.0. De AcroForm-woordenlijst krijgt automatisch /SigFlags 3 (SignaturesExist + AppendOnly) zodra ten minste één handtekeningveld aanwezig is. Het veld blijft ongetekend zodat externe tools (Adobe Acrobat, Foxit, speciale CMS / PKCS#7-signingbibliotheken) de echte cryptografische handtekening kunnen toevoegen nadat het bestand is opgeslagen
- In-place ondertekeningsworkflow via
THPDFPage.AddSignedSignatureField + THotPDF.PreparePDFForSigning + THotPDF.InsertSignatureHex sinds HotPDF v2.23.0. De eerste aanroep reserveert een /V-handtekeningwoordenlijst met /ByteRange- en /Inhoud-plaatsaanduidingen. Na het opslaan van het document roept de hostapplicatie PreparePDFForSigning aan om /ByteRange te patchen en te zien welke bestandsbereiken gehasht moeten worden. Na het extern maken van een losgekoppelde CMS / PKCS#7-handtekening (Windows CryptoAPI, OpenSSL, speciale signingbibliotheken) roept het InsertSignatureHex aan om de handtekeninghex in de plaatsaanduiding te schrijven zonder andere bytes in het bestand te wijzigen
Inspectie en updates van geladen formuliervelden
Sinds HotPDF v2.121.9 kunnen toepassingen een bestaande AcroForm-PDF laden
met THotPDF.LoadFromFile, de velden opsommen, namen, typen en
waarden lezen, veldwaarden wijzigen, de alleen-lezen-vlag omschakelen en de
geladen objectgrafiek opslaan met THotPDF.SaveLoadedDocument
Dit pad is bedoeld voor blijvende bewerkingen aan een al geladen document;
roep BeginDoc / EndDoc niet aan alleen om geladen
veldwaardewijzigingen op te slaan
De veldhelpers zijn GetFormFieldCount,
GetFormFieldName, GetFormFieldType,
GetFormFieldValue, SetFormFieldValue en
SetFormFieldReadOnly. Veldopzoeking accepteert zowel een
veldindex vanaf nul als de volledig gekwalificeerde veldnaam. De geretourneerde
THPDFLoadedFormFieldType-waarden zijn lfftText,
lfftButton, lfftChoice,
lfftSignature of lfftUnknown
Pascal-voorbeeld voor geladen velden
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');
Extra veldacties
AttachFieldKeyStrokeAction, AttachFieldFormatAction, AttachFieldValidateAction en AttachFieldCalculateAction koppelen JavaScript aan de /AA-woordenlijst van een veld voor de PDF-triggers /K, /F, /V en /C. Gebruik ze na het maken of laden van het veld wanneer filter, opmaak, validatie of berekening bij het veld moet horen
Generatie van verschijningen
Standaard zet de uitgegeven /AcroForm-woordenlijst
/NeedAppearances true en laat de rendering van appearance streams over aan
de viewer (Adobe Reader, Foxit, Chrome, browsers, Apple Preview). Zet
THotPDF.AutoFormAppearances op true vóór het toevoegen van velden
en HotPDF bouwt vooraf /AP /N-Form XObjects (PDF 1.7 8.10) voor elk
tekstveld, elke drukknop, elke keuze-omgeving (combo / list) en de Yes /
Off-standen van elk selectievakje / radiokind. De AcroForm-woordenlijst
bevat dan /NeedAppearances false en een standaard
/DR-bronnenvermelding die verwijst naar de 14 standaard basislettertypen
(Helv Helvetica, ZaDb ZapfDingbats), zodat renderers die
/NeedAppearances negeren de veldinhoud toch correct tekenen. Beschikbaar
sinds HotPDF v2.28.0
Veldvlagreferentie (THPDFFormFieldFlags)
ffReadOnly, ffRequired, ffNoExport — algemene tabel-227-vlaggen die op elk veldtype van toepassing zijn
ffMultiline, ffPassword, ffFileSelect, ffDoNotSpellCheck, ffDoNotScroll, ffComb, ffRichText — specifiek voor Tx (tabel 228)
ffEdit, ffSort, ffMultiSelect, ffDoNotSpellCheck, ffCommitOnSelChange — specifiek voor Ch (tabel 230)
Pascal-voorbeeld
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;
Beperkingen
- De
AutoFormAppearances-generator legt momenteel alleen ASCII / WinAnsi-codeerbare waarden vast; voor velden waarvan /V meerbyte-tekst (UTF-8) bevat, tekent de opgeslagen /AP een leeg rechthoekje totdat de hostviewer de verschijning opnieuw genereert
- Down- (
/D) en rollover- (/R) substanden worden niet gemaakt; alleen de normale (/N) stand wordt uitgegeven
- Unieke veldnamen zijn de verantwoordelijkheid van de aanroeper; HotPDF dwingt dit niet af
Zie ook
|