Forms

Forms

Diese Seite behandelt das Erstellen und Verwalten interaktiver AcroForm-Felder. Form, über doc.Form erreicht, ist die Fassade für jeden Feldtyp; jede Add*()-Methode erzeugt ein Feld, das an eine Seite und ein Widget-Rechteck gebunden ist, und gibt einen typisierten Handle (TextField, CheckboxField, ChoiceField, ButtonField oder RadioField) zurück, der die gemeinsamen Field-Eigenschaften Value, ReadOnly und Required teilt.


Felder erstellen

Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox() und ihre Geschwister erhalten jeweils ein Options-Objekt, das das Ziel-page (0-basiert), das Widget-rect, ein Feld-name und Stil-Angaben wie borderColor und backgroundColor benennt.

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() und Page.AddCheckbox() erzeugen dieselben Feldtypen direkt auf einer Seite, ohne doc.Form oder eine page-Nummer im Options-Objekt zu benennen.


Felder lesen und ändern

Form.Fields ist ein Array aller Field im Dokument; Form.Get() sucht eines anhand seines vollqualifizierten Namens. Die Value jedes Feldes kann gelesen oder neu zugewiesen werden, und ReadOnly / Required sind einfache boolesche Eigenschaften.

const nameField = doc.Form.Get('FullName');
if (nameField) {
  console.log(nameField.Value);
  nameField.Value = 'Bob Sample';
}

Felder flachlegen

Die Flatten()-Methode jedes Feldtyps bettet ihr aktuelles Erscheinungsbild in den statischen Inhalt der Seite ein und entfernt es aus dem AcroForm – derselbe permanente, nicht-interaktive Effekt, den Annotation.Flatten() für Anmerkungen hat.

const tb = form.AddTextField({
  page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten();

Tipps und bewährte Vorgehensweisen

  • Ändern Sie das Feld-Handle, das direkt vom Aufruf Add*() zurückgegeben wird, oder eines, das frisch mit Form.Get() nachgeschlagen wird – eine veraltete Referenz sieht Änderungen, die an anderer Stelle vorgenommen wurden, nicht.
  • Form.RemoveField() akzeptiert entweder ein Field-Handle oder einen Feldnamen-String.
  • Rufen Sie Form.GenerateAppearances() auf, nachdem Sie Feldwerte massenhaft geändert haben, damit das Bild jedes Feldes auf dem Bildschirm mit seinem Value synchron bleibt.
  • Kombinationsfelder und Listenfelder speichern den ausgewählten export-Wert in /V; der display-Text ist das, was die erzeugte Darstellung zeigt.

Häufige Probleme

ProblemUrsacheLösung
Feld, das mit Form.AddTextField() hinzugefügt wurde, erscheint nicht auf der SeiteDie rect-Koordinaten liegen außerhalb der Abmessungen der ZielseiteStellen Sie sicher, dass das Rechteck innerhalb der Seitenbegrenzungen liegt
Feld bleibt nach Flatten() interaktivFlatten() wurde an einer Kopie aufgerufen, anstatt an dem zurückgegebenen Handle Add*() / Form.Get()Rufen Sie Flatten() für das direkt aus dem Formular erhaltene Objekt auf
Änderung des Feldwerts ist auf dem Bildschirm nicht sichtbarDas Aussehen des Feldes wurde nach der Wertänderung nicht neu generiertRufen Sie Form.GenerateAppearances() auf, oder das eigene GenerateAppearance() des Feldes

FAQ

Wie lese oder ändere ich den Wert eines Feldes, nachdem ich es erstellt habe?

Rufe es mit Form.Get('fieldName') ab (oder verwende den Handle, den der Aufruf Add*() zurückgab) und lese oder weise seine Value-Eigenschaft direkt zu.

Welche Feldtypen unterstützt die Form-Fassade?

Textfelder, Kontrollkästchen, Radiogruppen, Kombinationsfelder, Listenfelder und Schaltflächen, über Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox() und Form.AddPushButton().

Wie entferne ich ein Feld?

Rufe Form.RemoveField() mit dem Handle des Feldes oder dessen Namen auf.

Wie wird ein Formularfeld dauerhaft und nicht editierbar gemacht?

Rufen Sie Flatten() für den Feld-Handle auf — dasselbe Muster, das für Anmerkungen verwendet wird — das sein aktuelles Erscheinungsbild in die Seite einbettet und es aus dem AcroForm entfernt.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
FormAcroForm-Fassade, erreicht über doc.Form
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton()Erstelle ein Feld des entsprechenden Typs
Form.FieldsJedes Field im Dokument, als Array
Form.Get()Suche ein Feld anhand seines vollqualifizierten Namens
Form.RemoveField()Entferne ein Feld anhand von Handle oder Name
Form.GenerateAppearances()Erstelle das Bildschirmeerscheinungsbild jedes Feldes neu
TextField / CheckboxField / ChoiceField / ButtonField / RadioFieldEingabefeld verwaltet das Teilen von Value, ReadOnly, Required
Page.AddTextField() / Page.AddCheckbox()Erstelle ein Feld direkt auf einer Seite

Siehe auch

 Deutsch