So führen Sie Berechnungen für bestimmte Felder in einem PDF-Formular mithilfe eines ONLYOFFICE-Makros durch

13 März 2025Von Ksenija

ONLYOFFICE-Makros sind leistungsstark und vielseitig und eignen sich daher nicht nur zur Automatisierung von Aufgaben in Dokumenten, Tabellen und Präsentationen, sondern auch in PDF-Formularen. In diesem Blogbeitrag zeigen wir Ihnen, wie Sie ein einzigartiges Makro erstellen und ausführen, das Berechnungen für bestimmte Felder in einem Formular durchführt. In diesem Beispiel hilft das Makro bei der Berechnung von Steuern und macht den Prozess schneller und genauer.

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

Erstellen des Makros

Abrufen aller Formulare aus dem Dokument

Zuerst rufen wir alle Felder aus dem Dokument ab:

// Get all forms from the document
    const document = Api.GetDocument();
    let forms = document.GetAllForms();
  • Api.GetDocument() ruft das aktive Dokument ab.
  • GetAllForms() ruft alle Formularfelder im Dokument ab.

Formularschlüssel definieren

Dann definieren wir die Formularschlüssel:

  // 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 und taxFormkey speichern die Kennungen der Eingabefelder.
  • sumResultKey und taxResultKey speichern die Kennungen der Ausgabefelder, in die die Ergebnisse eingefügt werden.

Abrufen von Formularwerten

Die Funktion getFormValue durchläuft Formulare, um ein Formular zu finden, das mit formKey übereinstimmt:

  // 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() ruft den Textwert des Formulars ab.
  • parseFloat() wandelt den Text in eine Zahl um.

Wenn die Konvertierung fehlschlägt, wird standardmäßig 0 verwendet, um Berechnungsfehler zu vermeiden.

Einfügen von Werten in Formulare

Die Funktion setFormValue sucht nach einem Formularfeld, das mit formKey übereinstimmt. Die Methode SetText() aktualisiert das Feld mit einem formatierten numerischen Wert (2 Dezimalstellen).

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

Hauptberechnung

Innerhalb der Hauptberechnungsfunktion führt man Folgendes aus:

  • Ruft Benutzereingabewerte aus Formularfeldern ab.
  • Berechnet die Summe aus input1 und input2.
  • Berechnet den Steuerbetrag als Prozentsatz der Summe.
  • Ruft setFormValue() auf, um die Ergebnisse in die entsprechenden Felder einzufügen.
 // 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);
    }

Der gesamte Makrocode lautet wie folgt:

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

Lassen Sie uns nun das Makro ausführen und sehen, wie es funktioniert!

Bei ONLYOFFICE sind wir bestrebt, unseren Benutzern vielseitige, auf ihre Bedürfnisse zugeschnittene Tools bereitzustellen. Makros sind eine leistungsstarke Ergänzung Ihres Werkzeugkastens, und wir hoffen, dass dieses für Sie von Nutzen sein wird.

Wir empfehlen Ihnen außerdem, unsere umfangreiche Bibliothek mit API-Methoden zu erkunden und eigene Makros zu erstellen. Wenn Sie Makros oder Ideen haben, die Sie teilen möchten, melden Sie sich gerne bei uns – wir sind immer offen für Vorschläge und Zusammenarbeit. Viel Erfolg bei Ihren Erkundungsvorhaben!

Erstellen Sie Ihr kostenloses ONLYOFFICE-Konto

Öffnen und bearbeiten Sie gemeinsam Dokumente, Tabellen, Folien, Formulare und PDF-Dateien online.