Cómo realizar cálculos en campos específicos en un formulario PDF usando una macro de ONLYOFFICE
Las macros de ONLYOFFICE son potentes y versátiles, lo que las hace útiles no solo para automatizar tareas en documentos, hojas de cálculo y presentaciones, sino también en formularios PDF. En este artículo, te mostraremos cómo crear y ejecutar una macro única que realice cálculos en campos específicos dentro de un formulario. En este ejemplo, la macro ayuda a calcular impuestos, haciendo el proceso más rápido y preciso.
Construyendo la macro
Recuperando todos los campos del documento
Primero, recuperamos todos los campos del documento:
// Get all forms from the document
const document = Api.GetDocument();
let forms = document.GetAllForms();
- Api.GetDocument() obtiene el documento activo.
- GetAllForms() recupera todos los campos de formulario en el documento
Definición de las claves de formulario
Luego, definimos las claves de formulario:
// 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, y taxFormkey almacenan los identificadores de los campos de entrada.
- sumResultKey and taxResultKey almacenan los identificadores de los campos de salida donde se insertarán los resultados.
Recuperando los valores del formulario
La función getFormValue recorre los formularios para encontrar uno que coincida con 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 el valor de texto del formulario..
- parseFloat() convierte el texto en un número.
Si la conversión falla, se asigna el valor 0 por defecto para evitar errores en los cálculos.
Insertando valores en los formularios
La función setFormValue busca un campo de formulario que coincida con formKey. El método SetText() actualiza el campo con un valor numérico formateado (2 decimales).
// 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 de la función de cálculo principal:
- Recuperamos los valores de entrada del usuario desde los campos del formulario.
- Calculamos la suma de input1 y input2.
- Calculamos el impuesto como un porcentaje de la suma.
- Llamamos a setFormValue() para insertar los resultados en sus 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);
}
El código completo de la macro es el siguiente:
(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();
})();
Ahora, ¡vamos a ejecutar la macro y ver cómo funciona!
En ONLYOFFICE, nos esforzamos por ofrecer a los usuarios herramientas versátiles adaptadas a sus necesidades. Las macros son adiciones poderosas a tu conjunto de herramientas, y esperamos que esta se convierta en un activo valioso para ti.
También te animamos a explorar nuestra extensa biblioteca de métodos de la API y crear tus propias macros. Si tienes macros o ideas que compartir, no dudes en ponerte en contacto con nosotros: siempre estamos abiertos a sugerencias y colaboración. ¡Te deseamos mucho éxito en tus proyectos exploratorios!
Crea tu cuenta gratuita de ONLYOFFICE
Visualiza, edita y colabora en documentos, hojas, diapositivas, formularios y archivos PDF en línea.