Come eseguire calcoli su campi specifici in un modulo PDF utilizzando una macro ONLYOFFICE
Le macro di ONLYOFFICE sono potenti e versatili, rendendole utili non solo per automatizzare attività in documenti, fogli di calcolo e presentazioni, ma anche in moduli PDF. In questo post del blog, ti mostreremo come creare ed eseguire una macro unica che effettua calcoli su campi specifici all’interno di un modulo. In questo esempio, la macro aiuta a calcolare le imposte, rendendo il processo più veloce e preciso.
Costruzione della macro
Recupero di tutti i campi dal documento
Prima recuperiamo tutti i campi dal documento:
// Get all forms from the document
const document = Api.GetDocument();
let forms = document.GetAllForms();
- Api.GetDocument() recupera il documento attivo.
- GetAllForms() recupera tutti i campi del modulo nel documento.
Definire le chiavi dei moduli
Poi, definiamo le chiavi dei moduli:
// 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 memorizzano gli identificatori dei campi di input.
- sumResultKey e taxResultKey memorizzano gli identificatori dei campi di output dove verranno inseriti i risultati.
Recuperare i valori dei moduli
La funzione getFormValue itera attraverso i moduli per trovare un modulo che corrisponde alla 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 il valore testuale del modulo.
- parseFloat() converte il testo in un numero.
Se la conversione fallisce, il valore di default è 0 per evitare errori nei calcoli.
Inserire i valori nei moduli
La funzione setFormValue cerca un campo modulo che corrisponde alla formKey. Il metodo SetText() aggiorna il campo con un valore numerico formattato (2 decimali).
// 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));
}
}
}
Calcolo principale
All’interno della funzione di calcolo principale:
- Recuperiamo i valori inseriti dall’utente dai campi del modulo.
- Calcoliamo la somma di input1 e input2.
- Calcoliamo l’imposta come percentuale della somma.
- Chiamiamo setFormValue() per inserire i risultati nei rispettivi campi.
// 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);
}
L’intero codice della macro è il seguente:
(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();
})();
Ora eseguiamo la macro e vediamo come funziona!
In ONLYOFFICE, ci impegniamo a fornire agli utenti strumenti versatili adattati alle loro esigenze. Le macro sono aggiunte potenti al tuo toolkit e speriamo che questa diventi una risorsa preziosa per te.
Ti invitiamo anche a esplorare la nostra vasta libreria di metodi API e a creare le tue macro. Se hai macro o idee da condividere, non esitare a contattarci: siamo sempre aperti a suggerimenti e collaborazioni. Buon lavoro!
Crea il tuo account ONLYOFFICE gratuito
Visualizza, modifica e collabora su documenti, fogli, diapositive, moduli e file PDF online.