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.
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 kontaktirajte – uvek 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.