Como executar cálculos em campos específicos em um formulário PDF usando uma macro do ONLYOFFICE
As macros do ONLYOFFICE são poderosas e versáteis, o que as torna úteis não apenas para automatizar tarefas em documentos, planilhas e apresentações, mas também em formulários PDF. Nesta postagem do blog, mostraremos como criar e executar uma macro exclusiva que realiza cálculos em campos específicos dentro de um formulário. Neste exemplo, a macro ajuda a calcular impostos, tornando o processo mais rápido e preciso.
Construindo a macro
Recuperando todos os formulários do documento
Primeiro recuperamos todos os campos do documento:
// Get all forms from the document
const document = Api.GetDocument();
let forms = document.GetAllForms();
- Api.GetDocument() obtém o documento ativo.
- GetAllForms() recupera todos os campos do formulário no documento
Definindo chaves de formulário
Em seguida, definimos as chaves do formulário:
// Formkeys of input forms
var formkey1 = "Form1";
var formkey2 = "Form2";
var taxFormkey = "TaxForm";
// Formkeys of result forms
var sumResultKey = "SumResult";
var taxResultKey = "TaxResult";
- formkey1, formkey2, e taxFormkey armazena os identificadores dos campos de entrada.
- sumResultKey e taxResultKey armazena os identificadores dos campos de saída onde os resultados serão inseridos.
Recuperando valores de formulário
O getFormValue a função itera pelos formulários para encontrar um formulário correspondente formKey:
// Function to get the value of a form by its key
function getFormValue(formKey) {
for (let form of forms) {
if (form.GetFormKey() === formKey) {
return parseFloat(form.GetText()) || 0;
}
}
}
- GetText() recupera o valor do texto do formulário.
- parseFloat() converte o texto em um número.
Se a conversão falhar, o padrão será 0 para evitar erros nos cálculos.
Inserindo valores em formulários
O setFormValue a função procura um campo de formulário correspondente formKey. O SetText() o método atualiza o campo com um valor numérico formatado (2 casas decimais).
// Function to set the value of a result form
function setFormValue(formKey, value) {
for (let form of forms) {
if (form.GetFormKey() === formKey) {
form.SetText(value.toFixed(2));
}
}
}
Cálculo principal
Dentro da função de cálculo principal nós:
- Recupere valores de entrada do usuário de campos de formulário.
- Calcule a soma de input1 e input2.
- Calcule o imposto como uma porcentagem da soma.
- Chamar setFormValue() para inserir resultados em seus respectivos campos.
// Main calculation function
function calculateAndInsert() {
let input1 = getFormValue(formkey1);
let input2 = getFormValue(formkey2);
let taxInput = getFormValue(taxFormkey);
// Perform calculations
var sum = parseFloat(input1) + parseFloat(input2);
var tax = sum * taxInput / 100; // % tax
// Insert results
setFormValue(sumResultKey, sum);
setFormValue(taxResultKey, tax);
}
O código completo da macro é o seguinte:
(function () {
// Get all forms from the document
const document = Api.GetDocument();
let forms = document.GetAllForms();
// Formkeys of input forms
var formkey1 = "Form1";
var formkey2 = "Form2";
var taxFormkey = "TaxForm";
// Formkeys of result forms
var sumResultKey = "SumResult";
var taxResultKey = "TaxResult";
// Function to get the value of a form by its key
function getFormValue(formKey) {
for (let form of forms) {
if (form.GetFormKey() === formKey) {
return parseFloat(form.GetText()) || 0;
}
}
}
// Function to set the value of a result form
function setFormValue(formKey, value) {
for (let form of forms) {
if (form.GetFormKey() === formKey) {
form.SetText(value.toFixed(2));
}
}
}
// Main calculation function
function calculateAndInsert() {
let input1 = getFormValue(formkey1);
let input2 = getFormValue(formkey2);
let taxInput = getFormValue(taxFormkey);
// Perform calculations
var sum = parseFloat(input1) + parseFloat(input2);
var tax = sum * taxInput / 100; // % tax
// Insert results
setFormValue(sumResultKey, sum);
setFormValue(taxResultKey, tax);
}
// Call the calculation function
calculateAndInsert();
})();
Agora, vamos executar a macro e ver como ela funciona!
No ONLYOFFICE, nos esforçamos para fornecer aos usuários ferramentas versáteis adaptadas às suas necessidades. Macros são adições poderosas ao seu kit de ferramentas, e esperamos que esta se torne um recurso valioso para você.
Também o encorajamos a explorar nossa extensa biblioteca de métodos da API e crie suas próprias macros. Se você tiver macros ou ideias para compartilhar, sinta-se à vontade para falar conosco – estamos sempre abertos a sugestões e colaboração. Boa sorte em seus esforços exploratórios!
Crie sua conta gratuita no ONLYOFFICE
Visualize, edite e colabore em documentos, planilhas, slides, formulários e arquivos PDF online.