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 con Form.Get() — una referencia obsoleta no ve los cambios realizados en otro lugar.
  • Form.RemoveField() acepta ya sea un identificador Field o 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 su Value.
  • Los cuadros combinados y las listas almacenan el valor seleccionado de export en /V; el texto display es lo que muestra la apariencia generada.

Problemas comunes

ProblemaCausaSolución
El campo añadido con Form.AddTextField() no aparece en la páginaLas coordenadas rect están fuera de las dimensiones de la página objetivoConfirme 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() devueltoLlama a Flatten() en el objeto obtenido directamente del formulario
El cambio de valor del campo no es visible en pantallaLa 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étodoDescripción
Formfachada 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.FieldsCada 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 / RadioFieldEl campo tipado maneja la compartición de Value, ReadOnly, Required
Page.AddTextField() / Page.AddCheckbox()Crea un campo directamente en una página

Ver también

 Español