Kako izvršiti proračune na određenim poljima u PDF obrascu koristeći ONLYOFFICE makroe

ONLYOFFICE makroi su moćni i svestrani, što ih čini korisnim ne samo za automatizaciju zadataka u dokumentima, tabelama i prezentacijama, već i u PDF obrascima. U ovom blog postu pokazaćemo vam kako da napravite i pokrenete jedinstveni makro koji vrši proračune na određenim poljima unutar obrasca. U ovom primeru, makro pomaže u izračunavanju poreza, čineći proces bržim i preciznijim.

How to perform calculations on specific fields in a PDF form using an ONLYOFFICE macro

Izrada makroa

Preuzimanje svih obrazaca iz dokumenta

Prvo preuzimamo sva polja iz dokumenta:

// Get all forms from the document
    const document = Api.GetDocument();
    let forms = document.GetAllForms();
  • Api.GetDocument() dobija aktivni dokument.
  • GetAllForms() preuzima sva polja obrazaca u dokumentu.

Definisanje ključeva obrazaca

Zatim, definišemo ključeve obrazaca:

  // 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, i taxFormkey čuvaju identifikatore ulaznih polja.
  • sumResultKey i taxResultKey čuvaju identifikatore izlaznih polja u koja će se unositi rezultati.

Preuzimanje vrednosti iz obrazaca

Funkcija getFormValue prolazi kroz obrasce da bi pronašla onaj koji odgovara 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() preuzima tekstualnu vrednost obrasca.
  • parseFloat() konvertuje tekst u broj.

Ako konverzija ne uspe, podrazumevana vrednost je 0 kako bi se sprečile greške u proračunima.

Unošenje vrednosti u obrasce

Funkcija setFormValue pretražuje polja obrasca koja odgovaraju formKey. Metod SetText() ažurira polje formatiranom numeričkom vrednošću (2 decimalna mesta).

  // 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));
            }
        }
    }

Glavni proračun

U glavnoj funkciji za proračun:

  • Preuzimamo vrednosti unete od strane korisnika iz polja obrasca.
  • Izračunavamo zbir input1 i input2.
  • Računamo porez kao procenat zbira.
  • Pozivamo setFormValue() kako bismo uneli rezultate u odgovarajuća polja.
 // 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);
    }

Kompletan makro kod je sledeći:

(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();
})();

Sada pokrenimo makro i vidimo kako funkcioniše!

U ONLYOFFICE-u se trudimo da korisnicima obezbedimo svestrane alate prilagođene njihovim potrebama. Makroi su moćan dodatak vašem alatu, i nadamo se da će vam ovaj makro biti od koristi.

Podstičemo vas da istražite našu opsežnu biblioteku API metoda i kreirate sopstvene makroe. Ako imate makroe ili ideje koje želite da podelite, slobodno nas kontaktirajteuvek smo otvoreni za predloge i saradnju. Srećno u istraživanju novih mogućnosti!

Create your free ONLYOFFICE account

View, edit and collaborate on docs, sheets, slides, forms, and PDF files online.