Forms
Forms
Esta página cubre la creación y gestión de campos interactivos AcroForm. Form, al que se accede a través de doc.Form, es la fachada de cada tipo de campo; cada método Add*() crea un campo vinculado a una página y a un rectángulo de widget y devuelve un manejador tipado (TextField, CheckboxField, ChoiceField, ButtonField o RadioField) que comparte las propiedades comunes Field Value, ReadOnly y Required.
Creando campos
Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox() y sus hermanos aceptan cada uno un objeto de opciones que nombra el page objetivo (basado en 0), el rect del widget, un name de campo y estilos como borderColor y 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() y Page.AddCheckbox() crean los mismos tipos de campo directamente en una página, sin nombrar doc.Form ni un número page en el objeto de opciones.
Lectura y modificación de campos
Form.Fields es una matriz de cada Field en el documento; Form.Get() busca uno por su nombre totalmente calificado. El Value de cada campo puede leerse o reasignarse, y ReadOnly / Required son simples propiedades booleanas.
const nameField = doc.Form.Get('FullName');
if (nameField) {
console.log(nameField.Value);
nameField.Value = 'Bob Sample';
}Aplanado de campos
El método Flatten() de cada tipo de campo incorpora su apariencia actual en el contenido estático de la página y lo elimina del AcroForm — el mismo efecto permanente y no interactivo que Annotation.Flatten() tiene para las anotaciones.
const tb = form.AddTextField({
page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten();Consejos y buenas prácticas
- Modifique el identificador de campo devuelto directamente por la llamada
Add*(), o uno buscado de nuevo conForm.Get()— una referencia obsoleta no ve los cambios realizados en otro lugar. Form.RemoveField()acepta ya sea un identificadorFieldo una cadena con el nombre del campo.- Llame a
Form.GenerateAppearances()después de cambiar los valores de los campos en bloque para que la apariencia en pantalla de cada campo permanezca sincronizada con suValue. - Los cuadros combinados y las listas almacenan el valor seleccionado de
exporten/V; el textodisplayes lo que muestra la apariencia generada.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
El campo añadido con Form.AddTextField() no aparece en la página | Las coordenadas rect están fuera de las dimensiones de la página objetivo | Confirme que el rectángulo está dentro de los límites de la página |
El campo sigue apareciendo interactivo después de Flatten() | Flatten() se llamó sobre una copia en lugar del handle Add*() / Form.Get() devuelto | Llama a Flatten() en el objeto obtenido directamente del formulario |
| El cambio de valor del campo no es visible en pantalla | La apariencia del campo no se regeneró después de que el valor cambió | Llama a Form.GenerateAppearances(), o al propio GenerateAppearance() del campo |
FAQ
¿Cómo leo o cambio el valor de un campo después de crearlo?
Búscalo con Form.Get('fieldName') (o usa el identificador que devolvió la llamada Add*()) y lee o asigna directamente su propiedad Value.
¿Qué tipos de campo admite la fachada Form?
Campos de texto, casillas de verificación, grupos de botones de radio, cuadros combinados, cuadros de lista y botones de acción, a través de Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox() y Form.AddPushButton().
¿Cómo elimino un campo?
Llama a Form.RemoveField() con el identificador del campo o su nombre.
¿Cómo se hace permanente e ineditable un campo de formulario?
Llamar a Flatten() en el manejador de campo — el mismo patrón usado para anotaciones — que incorpora su apariencia actual en la página y lo elimina del AcroForm.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
Form | fachada AcroForm, alcanzada a través de doc.Form |
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton() | Crear un campo del tipo correspondiente |
Form.Fields | Cada Field en el documento, como un array |
Form.Get() | Buscar un campo por su nombre totalmente calificado |
Form.RemoveField() | Eliminar un campo por identificador o nombre |
Form.GenerateAppearances() | Regenera la apariencia en pantalla de cada campo |
TextField / CheckboxField / ChoiceField / ButtonField / RadioField | El campo tipado maneja la compartición de Value, ReadOnly, Required |
Page.AddTextField() / Page.AddCheckbox() | Crea un campo directamente en una página |