Como executar cálculos em campos específicos em um formulário PDF usando uma macro do ONLYOFFICE

12 março 2025Por Klaibson

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.

Como executar cálculos em campos específicos em um formulário PDF usando uma macro do ONLYOFFICE

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.