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 comForm.Get()— uma referência obsoleta não vê as alterações feitas em outro lugar. Form.RemoveField()aceita ou um identificadorFieldou 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 seuValue. - Caixas de combinação e caixas de lista armazenam o valor
exportselecionado em/V; o textodisplayé o que a aparência gerada exibe.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
Campo adicionado com Form.AddTextField() não aparece na página | As coordenadas rect estão fora das dimensões da página alvo | Confirme 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() retornado | Chame Flatten() no objeto obtido diretamente do formulário |
| A alteração do valor do campo não é visível na tela | A aparência do campo não foi regenerada após a mudança do valor | Chame 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étodo | Descrição |
|---|---|
Form | fachada 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.Fields | Cada 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 / RadioField | O campo tipado lida com o compartilhamento de Value, ReadOnly, Required |
Page.AddTextField() / Page.AddCheckbox() | Criar um campo diretamente em uma página |