Forms

Forms

Esta página cobre a criação e o gerenciamento de campos interativos AcroForm. Form, acessado através de doc.Form, é a fachada para cada tipo de campo; cada método Add*() cria um campo vinculado a uma página e a um retângulo de widget e retorna um manipulador tipado (TextField, CheckboxField, ChoiceField, ButtonField ou RadioField) que compartilha as propriedades comuns Field Value, ReadOnly e Required.


Criando Campos

Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox() e seus irmãos cada um aceita um objeto de opções nomeando o page alvo (baseado em 0), o rect do widget, um name de campo e estilos como 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() criam os mesmos tipos de campo diretamente em uma página, sem nomear doc.Form ou um número page no objeto de opções.


Lendo e Modificando Campos

Form.Fields é uma matriz de todos os Field no documento; Form.Get() procura um pelo nome totalmente qualificado. O Value de cada campo pode ser lido ou reatribuído, e ReadOnly / Required são propriedades booleanas simples.

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

Aplanamento de Campos

O método Flatten() de cada tipo de campo incorpora sua aparência atual ao conteúdo estático da página e a remove do AcroForm — o mesmo efeito permanente e não interativo que Annotation.Flatten() tem para anotações.

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

Dicas e Melhores Práticas

  • Modifique o identificador de campo retornado diretamente pela chamada Add*(), ou um obtido recentemente com Form.Get() — uma referência obsoleta não vê as alterações feitas em outro lugar.
  • Form.RemoveField() aceita ou um identificador Field ou uma string com o nome do campo.
  • Chame Form.GenerateAppearances() após alterar os valores dos campos em massa para que a aparência na tela de cada campo permaneça sincronizada com seu Value.
  • Caixas de combinação e caixas de lista armazenam o valor export selecionado em /V; o texto display é o que a aparência gerada exibe.

Problemas Comuns

ProblemaCausaCorreção
Campo adicionado com Form.AddTextField() não aparece na páginaAs coordenadas rect estão fora das dimensões da página alvoConfirme que o retângulo está dentro dos limites da página
O campo ainda aparece interativo após Flatten()Flatten() foi chamado em uma cópia em vez do handle Add*() / Form.Get() retornadoChame Flatten() no objeto obtido diretamente do formulário
A alteração do valor do campo não é visível na telaA aparência do campo não foi regenerada após a mudança do valorChame Form.GenerateAppearances(), ou o próprio GenerateAppearance() do campo

FAQ

Como leio ou altero o valor de um campo após criá-lo?

Procure-o com Form.Get('fieldName') (ou use o identificador que a chamada Add*() retornou) e leia ou atribua sua propriedade Value diretamente.

Quais tipos de campo a fachada Form suporta?

Campos de texto, caixas de seleção, grupos de rádio, caixas combinadas, caixas de lista e botões de pressão, via Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox() e Form.AddPushButton().

Como removo um campo?

Chame Form.RemoveField() com o identificador ou o nome do campo.

Como tornar um campo de formulário permanente e não editável?

Chame Flatten() no manipulador de campo — o mesmo padrão usado para anotações — que incorpora sua aparência atual na página e a remove do AcroForm.


API Reference Resumo

Classe/MétodoDescrição
Formfachada AcroForm, alcançada através de doc.Form
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton()Crie um campo do tipo correspondente
Form.FieldsCada Field no documento, como um array
Form.Get()Localize um campo pelo seu nome totalmente qualificado
Form.RemoveField()Remova um campo por identificador ou nome
Form.GenerateAppearances()Regenerar a aparência na tela de cada campo
TextField / CheckboxField / ChoiceField / ButtonField / RadioFieldO campo tipado lida com o compartilhamento de Value, ReadOnly, Required
Page.AddTextField() / Page.AddCheckbox()Criar um campo diretamente em uma página

Ver também

 Português