Forms
Forms
Den här sidan täcker skapande och hantering av interaktiva AcroForm fält. Form, nås via doc.Form, är fasaden för varje fälttyp; varje Add*() metod skapar ett fält kopplat till en sida och en widget-rektangel och returnerar ett typat handtag (TextField, CheckboxField, ChoiceField, ButtonField eller RadioField) som delar de gemensamma Field egenskaperna Value, ReadOnly och Required.
Skapa fält
Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox() och deras syskon tar var och en ett options-objekt som namnger det mål page (0-baserat), widget-rect, ett fält name och styling såsom borderColor och backgroundColor.
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() och Page.AddCheckbox() skapar samma fälttyper direkt på en sida, utan att namnge doc.Form eller ett page-nummer i options-objektet.
Läsa och modifiera fält
Form.Fields är en array med alla Field i dokumentet; Form.Get() letar upp en genom dess fullständigt kvalificerade namn. Varje fälts Value kan läsas eller tilldelas på nytt, och ReadOnly / Required är enkla booleska egenskaper.
const nameField = doc.Form.Get('FullName');
if (nameField) {
console.log(nameField.Value);
nameField.Value = 'Bob Sample';
}Fältplattning
Varje fälttyps Flatten()-metod bakar in dess nuvarande utseende i sidans statiska innehåll och tar bort det från AcroForm — samma permanenta, icke-interaktiva effekt som Annotation.Flatten() har för kommentarer.
const tb = form.AddTextField({
page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten();Tips och bästa praxis
- Modifiera fälthandtaget som returneras direkt av
Add*()-anropet, eller ett som hämtas på nytt medForm.Get()— en föråldrad referens ser inte förändringar som gjorts någon annanstans. Form.RemoveField()accepterar antingen ettField-handtag eller en fältnamnssträng.- Anropa
Form.GenerateAppearances()efter att ha ändrat fältvärden i bulk så att varje fälts skärmvisning förblir synkroniserad med dessValue. - Kombinationsrutor och listrutor lagrar det valda
export-värdet i/V; texten idisplayär vad den genererade visningen visar.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
Fältet som lades till med Form.AddTextField() visas inte på sidan | Koordinaterna rect ligger utanför mål sidans dimensioner | Bekräfta att rektangeln ligger inom sidans gränser |
Fältet visas fortfarande som interaktivt efter Flatten() | Flatten() anropades på en kopia istället för handtaget Add*() / Form.Get() returnerades | Anropa Flatten() på objektet som erhålls direkt från formuläret |
| Ändring av fältvärde syns inte på skärmen | Fältets utseende regenererades inte efter att värdet ändrades | Anropa Form.GenerateAppearances(), eller fältets egen GenerateAppearance() |
FAQ
Hur läser eller ändrar jag ett fälts värde efter att det har skapats?
Sök upp det med Form.Get('fieldName') (eller använd handtaget som Add*()-anropet returnerade) och läs eller tilldela dess Value egenskap direkt.
Vilka fälttyper stöder Form-fasaden?
Textfält, kryssrutor, radiogrupper, kombinationsrutor, listrutor och tryckknappar, via Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox() och Form.AddPushButton().
Hur tar jag bort ett fält?
Anropa Form.RemoveField() med antingen fältets handtag eller dess namn.
Hur gör man ett formulärfält permanent och ej redigerbart?
Anropa Flatten() på fälthandtaget — samma mönster som används för annotationer — vilket inbakar dess nuvarande utseende i sidan och tar bort det från AcroForm.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
Form | AcroForm fasad, nådd via doc.Form |
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton() | Skapa ett fält av motsvarande typ |
Form.Fields | Varje Field i dokumentet, som en array |
Form.Get() | Sök upp ett fält med dess fullständigt kvalificerade namn |
Form.RemoveField() | Ta bort ett fält med handtag eller namn |
Form.GenerateAppearances() | Regenerera det visuella utseendet för varje fält |
TextField / CheckboxField / ChoiceField / ButtonField / RadioField | Skrivet fält hanterar delning av Value, ReadOnly, Required |
Page.AddTextField() / Page.AddCheckbox() | Skapa ett fält direkt på en sida |