Forms
Forms
Questa pagina tratta la creazione e la gestione di campi interattivi AcroForm. Form, raggiungibile tramite doc.Form, è la facciata per ogni tipo di campo; ogni metodo Add*() crea un campo associato a una pagina e a un rettangolo widget e restituisce un handle tipizzato (TextField, CheckboxField, ChoiceField, ButtonField o RadioField) che condivide le proprietà comuni Field Value, ReadOnly e Required.
Creazione dei campi
Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox() e i loro fratelli accettano ciascuno un oggetto di opzioni che specifica il page di destinazione (basato su 0), il widget rect, un campo name e lo stile come borderColor e 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() e Page.AddCheckbox() creano gli stessi tipi di campo direttamente su una pagina, senza specificare doc.Form o un numero page nell’oggetto di opzioni.
Lettura e modifica dei campi
Form.Fields è un array di tutti i Field nel documento; Form.Get() ne cerca uno per nome completamente qualificato. Il Value di ogni campo può essere letto o riassegnato, e ReadOnly / Required sono semplici proprietà booleane.
const nameField = doc.Form.Get('FullName');
if (nameField) {
console.log(nameField.Value);
nameField.Value = 'Bob Sample';
}Appiattimento dei campi
Il metodo Flatten() di ogni tipo di campo incorpora la sua apparenza corrente nel contenuto statico della pagina e lo rimuove dal AcroForm — lo stesso effetto permanente e non interattivo che Annotation.Flatten() ha per le annotazioni.
const tb = form.AddTextField({
page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten();Suggerimenti e migliori pratiche
- Modifica l’handle del campo restituito direttamente dalla chiamata
Add*(), oppure quello recuperato di nuovo conForm.Get()— un riferimento obsoleto non vede le modifiche apportate altrove. Form.RemoveField()accetta sia un handleFieldsia una stringa con il nome del campo.- Chiama
Form.GenerateAppearances()dopo aver modificato i valori dei campi in blocco affinché l’aspetto visualizzato di ogni campo rimanga sincronizzato con il suoValue. - Le caselle combinate e le caselle di riepilogo memorizzano il valore
exportselezionato in/V; il testodisplayè ciò che l’aspetto generato mostra.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
Il campo aggiunto con Form.AddTextField() non appare nella pagina | Le coordinate rect sono al di fuori delle dimensioni della pagina di destinazione | Verifica che il rettangolo sia all’interno dei limiti della pagina |
Il campo appare ancora interattivo dopo Flatten() | Flatten() è stato chiamato su una copia anziché sull’handle Add*() / Form.Get() restituito | Chiama Flatten() sull’oggetto ottenuto direttamente dal modulo |
| La modifica del valore del campo non è visibile sullo schermo | L’aspetto del campo non è stato rigenerato dopo il cambiamento del valore | Chiama Form.GenerateAppearances(), oppure il GenerateAppearance() del campo |
FAQ
Come leggo o modifico il valore di un campo dopo averlo creato?
Cercalo con Form.Get('fieldName') (o usa l’handle restituito dalla chiamata Add*()) e leggi o assegna direttamente la sua proprietà Value.
Quali tipi di campo supporta la facciata Form?
Campi di testo, caselle di controllo, gruppi di radio, caselle combinate, elenchi a discesa e pulsanti, tramite Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox() e Form.AddPushButton().
Come rimuovo un campo?
Chiama Form.RemoveField() passando l’handle del campo o il suo nome.
Come si rende un campo di modulo permanente e non modificabile?
Chiama Flatten() sulla maniglia del campo — lo stesso schema usato per le annotazioni — che incorpora il suo aspetto attuale nella pagina e lo rimuove dal AcroForm.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
Form | AcroForm facade, raggiunta tramite doc.Form |
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton() | Crea un campo del tipo corrispondente |
Form.Fields | Ogni Field nel documento, come un array |
Form.Get() | Cerca un campo per il suo nome completamente qualificato |
Form.RemoveField() | Rimuovi un campo per handle o nome |
Form.GenerateAppearances() | Rigenera l’aspetto sullo schermo per ogni campo |
TextField / CheckboxField / ChoiceField / ButtonField / RadioField | Il campo digitato gestisce la condivisione di Value, ReadOnly, Required |
Page.AddTextField() / Page.AddCheckbox() | Crea un campo direttamente su una pagina |