Tips & Tricks

Como adicionar campos de cálculo automático em um formulário PDF preenchível

Um formulário PDF preenchível que soma itens de linha, calcula impostos ou totaliza uma fatura automaticamente é um documento fundamentalmente diferente daquele em que o destinatário precisa fazer as contas sozinho. Os campos de cálculo automático transformam um formulário estático em uma calculadora funcional. O destinatário insere quantidades e taxas, e o formulário calcula os totais em tempo real diante de seus olhos. Para faturas, pedidos de compra, relatórios de despesas e qualquer formulário onde os números precisam ser somados corretamente, o cálculo automático é a diferença entre um formulário que ajuda o usuário e outro que gera trabalho extra.

Adicionar campos de cálculo a um PDF requer um editor de formulário que suporte scripts de campo baseados em JavaScript, porque os cálculos de PDF são executados em uma versão simplificada de JavaScript integrada em todos os principais visualizadores de PDF. A configuração envolve três etapas: criar os campos de entrada onde os usuários digitam os números, criar o campo de saída onde o resultado aparece e escrever o script de cálculo que os vincula. Uma vez configurado, o cálculo é executado automaticamente sempre que o usuário altera um valor. Não é necessário salvar, atualizar ou clicar em botão.

How to Add Auto-Calculation Fields in a Fillable PDF Form

Compreendendo os tipos de campos PDF e como eles funcionam juntos

Antes de escrever qualquer script de cálculo, você precisa entender os três tipos de campos que participam de um cálculo. Os campos de texto aceitam entradas digitadas pelo usuário. Eles podem ser configurados para aceitar apenas números, apenas datas ou qualquer texto. Para formulários de cálculo, os campos de texto somente numéricos são o tipo de entrada padrão. Cada campo possui um nome exclusivo ao qual o script de cálculo faz referência. Nomenclatura consistente, como "Item1_Qty," "Item1_Rate," "Item1_Total," torna a lógica de cálculo legível e sustentável.

Listas suspensas e botões de opção também podem alimentar os cálculos. Um menu suspenso pode permitir que o usuário selecione um produto e o preço correspondente preencha automaticamente um campo de taxa em uma tabela de pesquisa. As caixas de seleção podem alternar se uma cobrança opcional está incluída. O conceito principal é que qualquer campo com um valor pode fazer parte de um cálculo. O script lê o valor atual de cada campo de entrada, realiza as contas e grava o resultado no campo de saída.

Os campos de saída normalmente são definidos como somente leitura para que o usuário não possa substituir acidentalmente o resultado calculado. Um campo calculado somente leitura cria uma separação clara entre os números que o usuário controla e os números que o formulário controla. Essa distinção é importante para a integridade do formulário. Se o usuário pudesse editar o total, o cálculo poderia não existir.

WukongPDF

Experimente Editar PDF

Nenhuma instalação necessária. Funciona diretamente no seu navegador.

Começar agora →

Passo a passo: Criando um formulário simples de cálculo automático

Comece criando seus campos de entrada. No editor Formulários PDF, selecione a ferramenta de campo de formulário e coloque campos de texto para cada valor que o usuário precisa inserir. Para uma fatura, pode ser um campo de quantidade e um campo de preço unitário para cada item de linha. Dê a cada campo um nome claro e exclusivo. Evite espaços e caracteres especiais em nomes de campos porque o JavaScript os refere como nomes de variáveis. Use sublinhados ou camelCase: "item1_qty" não "Item 1 Qtd."

A seguir, crie o campo de saída onde aparecerá o total calculado. Coloque-o em uma posição lógica, normalmente na parte inferior de uma coluna de números ou em uma seção de totais. Defina este campo como somente leitura nas propriedades do campo. Isto é importante. Um campo de cálculo editável prejudica todo o propósito de automatizar a matemática.

Agora abra as propriedades de cálculo do campo de saída. No editor de WukongPDF, selecione o campo total, abra a aba Calcular nas propriedades do campo e escolha "Script de cálculo personalizado." Isso abre um editor de script onde você escreve o JavaScript que executa o cálculo. Um total simples de item de linha se parece com isto: event.value = this.getField("item1_qty").value * this.getField("item1_rate").value;. O "evento.valor" é o resultado exibido no campo. "this.getField()" recupera o valor atual de outro campo por nome. Você pode encadear vários cálculos e adicioná-los para um total geral: event.value = this.getField("line1_total").value + this.getField("line2_total").value + this.getField("line3_total").value;.

Depois de escrever o script, teste-o imediatamente. Salve o formulário, abra-o em um visualizador de PDF, digite números nos campos de entrada e observe a atualização do campo calculado. Pressione Tab para mover-se entre os campos, o que aciona o recálculo. Digite uma letra em um campo numérico e veja o que acontece. O script deve manipular ou ignorar normalmente entradas não numéricas. Se o total mostrar "NaN" (Não é um número), um dos campos de entrada contém algo que não é um número e o script precisa de uma verificação de validação. Adicione uma cláusula de guarda como: var qty = Number(this.getField("item1_qty").value) || 0; Isso converte o valor do campo em um número e o padrão é zero se a conversão falhar, evitando que NaN se espalhe pelo cálculo.

Tratamento de casos extremos: campos vazios, números negativos e divisão por zero

Um script de cálculo que funciona perfeitamente com dados de teste pode falhar de maneiras embaraçosas quando um usuário real preenche o formulário. A falha mais comum é o campo vazio. Quando um usuário ainda não digitou nada em um campo, seu valor é uma string vazia, não zero. Multiplicar uma string vazia por um número produz NaN, que então se propaga para todos os cálculos que dependem desse resultado.

A solução é normalizar cada valor de entrada para zero quando estiver vazio. No topo de cada script de cálculo, recupere cada valor de campo e converta-o: var qty = this.getField("qty").value; if (qtd === " || isNaN(qtd)) qtd = 0; Este padrão, aplicado consistentemente a todos os campos de entrada, elimina o problema do campo vazio. Ele também trata do caso em que um usuário digita acidentalmente uma letra em um campo numérico, o que de outra forma produziria NaN.

Números negativos exigem uma decisão política. O formulário deve aceitar quantidades negativas? Na maioria das formas de negócios, a resposta é não, e o script de cálculo deve impor isso: if (qty < 0) qty = 0;. A divisão por zero é um problema mais sutil que aparece em cálculos de porcentagem e taxa. Se um campo que serve como denominador pode ser zero, o script deve verificar antes de dividir: if (denominador !== 0) { resultado = numerador / denominador; } senão { resultado = 0; }. Essas cláusulas de proteção adicionam algumas linhas de código e evitam que o formulário exiba valores de erro confusos para o usuário.

Cálculos Avançados: Lógica Condicional e Tabelas de Pesquisa

A aritmética básica lida com totais de itens de linha e totais gerais. Formulários mais sofisticados precisam de cálculos condicionais que mudam com base nas seleções do usuário. Um exemplo comum é o cálculo de impostos em que a alíquota depende do estado ou província selecionado. O script de cálculo lê o valor de um campo suspenso e aplica a taxa correspondente: var state = this.getField("state").value; taxa var = 0; taxa if (estado === "CA") = 0,0725; senão if (estado === "NY") taxa = 0,04; evento.valor = subtotal * taxa;

Para tabelas de pesquisa maiores com muitas opções, uma instrução switch ou um objeto de pesquisa é mais limpo do que uma cadeia de condições if-else. taxas var = { "CA": 0,0725, "NY": 0,04, "TX": 0,0625, "FL": 0,06 }; var taxa = taxas[estado] || 0; Esse padrão é dimensionado para dezenas de entradas sem se tornar ilegível. O valor padrão de zero, fornecido pelo || operador, lida com estados que não estão na tabela de pesquisa normalmente.

Os níveis de desconto são outro caso de uso condicional comum. Se o subtotal exceder um limite, aplique um desconto percentual: var desconto = 0; if (subtotal > 1000) desconto = subtotal * 0,10; caso contrário, se (subtotal > 500) desconto = subtotal * 0,05; event.value = subtotal - desconto + imposto;. O cálculo é executado sempre que algum campo é alterado, de forma que o desconto é atualizado automaticamente conforme o usuário adiciona ou remove itens. O usuário vê o ajuste do preço em tempo real, que é exatamente a experiência interativa que faz com que um formulário PDF preenchível pareça um aplicativo e não um pedaço de papel.

Testando seu formulário de cálculo antes de enviá-lo

Um formulário de cálculo que não foi testado é um formulário que produzirá números errados. O teste sistemático detecta erros antes que eles cheguem a um cliente ou consumidor. Teste primeiro com valores normais: insira números que você pode calcular mentalmente e verifique se a saída corresponde. Em seguida, teste casos extremos: deixe os campos vazios, insira zero, insira números negativos se as regras de negócios os rejeitarem, insira números muito grandes para verificar se há excesso e insira texto em campos numéricos.

Teste em vários visualizadores de PDF. Um formulário calculado corretamente no Adobe Acrobat pode se comportar de maneira diferente na Visualização no Mac, no visualizador de PDF integrado de um navegador da Web ou em um aplicativo de PDF móvel. Cada visualizador implementa o mecanismo JavaScript de maneira um pouco diferente. Alguns visualizadores móveis não suportam PDF JavaScript e exibirão os campos do formulário sem qualquer funcionalidade de cálculo. Se o seu público incluir usuários móveis, adicione uma nota no formulário indicando que os cálculos exigem um visualizador de PDF para desktop ou forneça uma tabela de referência pré-calculada como alternativa.

Por fim, teste o fluxo de trabalho do usuário do início ao fim. Abra o formulário como se você fosse o destinatário. Preencha-o na ordem que um usuário real faria. Salve-o. Reabra a cópia salva e verifique se os cálculos ainda estão corretos. Imprima e certifique-se de que os valores calculados apareçam no papel. Um formulário que parece correto na tela, mas imprime campos calculados em branco, é um modo de falha surpreendentemente comum causado pelo mecanismo de impressão que processa os valores dos campos de maneira diferente do renderizador de tela. A hora gasta em testes completos não é nada comparada ao dano de enviar a 500 clientes um formulário de fatura que calcula mal seus totais.

Quando uma planilha é a melhor ferramenta

Os cálculos em formulários PDF são poderosos, mas têm limites que podem tornar uma planilha a escolha mais apropriada. Os cálculos PDF não podem fazer referência a fontes de dados externas. Eles não podem obter taxas de câmbio em tempo real, preços de ações ou valores de banco de dados. Eles não podem realizar cálculos iterativos, como busca de metas ou funções de resolução. Eles não podem gerar gráficos ou tabelas dinâmicas a partir dos dados inseridos. Se o seu formulário exigir algum desses recursos, crie a lógica de cálculo no Excel ou no Planilhas Google e exporte o resultado para PDF, em vez de tentar replicar a funcionalidade da planilha dentro de um PDF.

Os cálculos em PDF são ideais para formulários onde a matemática é simples e as entradas são limitadas: faturas com itens de linha fixos, formulários de pedidos com preços de produtos conhecidos, relatórios de despesas com categorias predefinidas e planilhas de horas com taxas horárias padrão. O formulário faz uma coisa, é confiável e não requer treinamento para uso do destinatário. O PDF Editor de WukongPDF lida bem com esse ponto ideal, combinando a criação de campos de formulário com suporte de cálculo JavaScript em uma única ferramenta baseada em navegador. Para o caso de uso correto, um formulário de cálculo em PDF bem construído elimina e-mails de acompanhamento sobre erros matemáticos, acelera o tempo de processamento e apresenta uma experiência mais profissional do que um formulário estático acompanhado por uma calculadora separada.

WukongPDF

Experimente Editar PDF

Nenhuma instalação necessária. Funciona diretamente no seu navegador.

Começar agora →