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 med Form.Get() — en föråldrad referens ser inte förändringar som gjorts någon annanstans.
  • Form.RemoveField() accepterar antingen ett Field-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 dess Value.
  • Kombinationsrutor och listrutor lagrar det valda export-värdet i /V; texten i display är vad den genererade visningen visar.

Vanliga problem

ProblemOrsakLösning
Fältet som lades till med Form.AddTextField() visas inte på sidanKoordinaterna rect ligger utanför mål sidans dimensionerBekrä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() returneradesAnropa Flatten() på objektet som erhålls direkt från formuläret
Ändring av fältvärde syns inte på skärmenFältets utseende regenererades inte efter att värdet ändradesAnropa 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/MetodBeskrivning
FormAcroForm 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.FieldsVarje 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 / RadioFieldSkrivet fält hanterar delning av Value, ReadOnly, Required
Page.AddTextField() / Page.AddCheckbox()Skapa ett fält direkt på en sida

Se även

 Svenska