Forms
Forms
Deze pagina behandelt het maken en beheren van interactieve AcroForm velden. Form, bereikbaar via doc.Form, is de façade voor elk veldtype; elke Add*() methode maakt een veld dat is gekoppeld aan een pagina en een widget-rechthoek en retourneert een getypeerde handle (TextField, CheckboxField, ChoiceField, ButtonField of RadioField) die de gemeenschappelijke Field eigenschappen Value, ReadOnly en Required deelt.
Velden maken
Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox() en hun verwanten nemen elk een opties-object dat de doel-page (0-gebaseerd), de widget rect, een veld name, en styling zoals borderColor en backgroundColor benoemt.
const form = doc.Form;
const pageNum = page.Number;
form.AddTextField({
page: pageNum, rect: [200, 670, 450, 690], name: 'FullName', value: 'Alice Sample',
borderColor: [0.05, 0.1, 0.3], backgroundColor: [0.9, 0.93, 1], borderWidth: 1,
font: 'Helvetica', fontSize: 12,
});
form.AddCheckbox({
page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe',
checked: true, borderColor: [0.05, 0.1, 0.3], borderWidth: 1,
});
form.AddComboBox({
page: pageNum, rect: [200, 550, 350, 570], name: 'Country', value: 'US',
options: [
{ export: 'US', display: 'United States' },
{ export: 'UK', display: 'United Kingdom' },
{ export: 'DE', display: 'Germany' },
],
});Page.AddTextField() en Page.AddCheckbox() maken dezelfde veldtypen direct op een pagina, zonder doc.Form of een page nummer te benoemen in het opties-object.
Velden lezen en wijzigen
Form.Fields is een array van elke Field in het document; Form.Get() zoekt er één op via de volledig gekwalificeerde naam. De Value van elk veld kan worden gelezen of opnieuw toegewezen, en ReadOnly / Required zijn eenvoudige booleaanse eigenschappen.
const nameField = doc.Form.Get('FullName');
if (nameField) {
console.log(nameField.Value);
nameField.Value = 'Bob Sample';
}Vlak maken van velden
Elke veldtype’s Flatten() methode bakt zijn huidige weergave in de statische inhoud van de pagina en verwijdert het uit de AcroForm — hetzelfde permanente, niet-interactieve effect dat Annotation.Flatten() heeft voor annotaties.
const tb = form.AddTextField({
page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten();Tips en best practices
- Wijzig de veldhandle die rechtstreeks wordt geretourneerd door de
Add*()oproep, of een die vers wordt opgezocht metForm.Get()— een verouderde referentie ziet de elders aangebrachte wijzigingen niet. Form.RemoveField()accepteert ofwel eenFieldhandle of een veldnaam-string.- Roep
Form.GenerateAppearances()aan na het massaal wijzigen van veldwaarden zodat de weergave van elk veld op het scherm synchroon blijft met zijnValue. - Comboboxen en lijstvakjes slaan de geselecteerde
exportwaarde op in/V; dedisplaytekst is wat de gegenereerde weergave toont.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
Veld toegevoegd met Form.AddTextField() verschijnt niet op de pagina | De rect coördinaten vallen buiten de afmetingen van de doelpagina | Bevestig dat het rechthoek binnen de grenzen van de pagina ligt |
Veld blijft interactief verschijnen na Flatten() | Flatten() werd aangeroepen op een kopie in plaats van de handle Add*() / Form.Get() die werd geretourneerd | Roep Flatten() aan op het object dat rechtstreeks uit het formulier is verkregen |
| Wijziging van veldwaarde is niet zichtbaar op het scherm | Het uiterlijk van het veld werd niet opnieuw gegenereerd nadat de waarde was gewijzigd | Roep Form.GenerateAppearances() aan, of het eigen GenerateAppearance() van het veld |
FAQ
Hoe lees of wijzig ik de waarde van een veld nadat ik het heb aangemaakt?
Zoek het op met Form.Get('fieldName') (of gebruik de handle die de Add*()-aanroep heeft geretourneerd) en lees of wijs de Value-eigenschap direct toe.
Welke veldtypes ondersteunt de Form-facade?
Tekstvelden, selectievakjes, radiogroepen, comboboxen, lijstvakken en drukknoppen, via Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox() en Form.AddPushButton().
Hoe verwijder ik een veld?
Roep Form.RemoveField() aan met de handle of de naam van het veld.
Hoe wordt een formulierveld permanent en niet-bewerkbaar gemaakt?
Roep Flatten() op de veldhandvat — hetzelfde patroon dat voor annotaties wordt gebruikt — die de huidige weergave in de pagina verwerkt en het verwijdert uit de AcroForm.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
Form | AcroForm facade, bereikt via doc.Form |
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton() | Maak een veld van het overeenkomstige type |
Form.Fields | Elke Field in het document, als een array |
Form.Get() | Zoek een veld op via zijn volledig gekwalificeerde naam |
Form.RemoveField() | Verwijder een veld op basis van handle of naam |
Form.GenerateAppearances() | Genereer de weergave op het scherm opnieuw voor elk veld |
TextField / CheckboxField / ChoiceField / ButtonField / RadioField | Getypt veld behandelt het delen van Value, ReadOnly, Required |
Page.AddTextField() / Page.AddCheckbox() | Maak een veld direct op een pagina |