كيفية إجراء العمليات الحسابية على حقول محددة في نموذج PDF باستخدام ماكرو ONLYOFFICE

١٣ مارس ٢٠٢٥بواسطة Moncif MEFTAH

تتميز ماكرو ONLYOFFICE بالقوة والتنوع، مما يجعلها مفيدة ليس فقط لأتمتة المهام في المستندات وجداول البيانات والعروض التقديمية، ولكن أيضًا في نماذج PDF. في منشور المدونة هذا، سنوضح لك كيفية إنشاء وتشغيل ماكرو فريد يقوم بإجراء عمليات حسابية على حقول محددة داخل النموذج. في هذا المثال، يساعد الماكرو في حساب الضرائب، مما يجعل العملية أسرع وأكثر دقة.

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

بناء الماكرو

استرداد جميع النماذج من المستند

أولاً، لنسترجع جميع الحقول من المستند:

// Get all forms from the document
    const document = Api.GetDocument();
    let forms = document.GetAllForms();
  • Api.GetDocument() التحصل على المستند النشط.
  • GetAllForms() يسترد جميع حقول النماذج في المستند.

تحديد مفاتيح النماذج

ثم، نحدد مفاتيح النماذج:

  // 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, و taxFormkey تخزين معرفات حقول الإدخال.
  • sumResultKey و taxResultKey تخزين معرفات حقول الإخراج حيث سيتم إدخال النتائج.

استرداد قيم النماذج

تتكرر دالة getFormValue عبر النماذج للعثور على نموذج يطابق 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() يسترد القيمة النصية للنموذج.
  • parseFloat() يحول النص إلى رقم.

إذا فشل التحويل، فإنه يعود إلى 0 لمنع الأخطاء في العمليات الحسابية.

إدخال القيم في النماذج

تبحث دالة setFormValue عن حقل نموذج يطابق formKey. تقوم طريقة SetText() بتحديث الحقل بقيمة رقمية منسقة (منزلتان عشريتان).

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

الحساب الرئيسي

داخل دالة الحساب الرئيسية، نقوم بما يلي:

  • استرداد قيم إدخال المستخدم من حقول النماذج.
  • حساب مجموع input1 و input2.
  • حساب الضريبة كنسبة مئوية من المجموع.
  • استدعاء setFormValue() لإدخال النتائج في حقولها الخاصة.
 // 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);
    }

كود الماكرو بالكامل كالتالي:

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

الآن، دعونا نشغل الماكرو ونرى كيف يعمل!

في ONLYOFFICE، نسعى جاهدين لتزويد المستخدمين بأدوات متعددة الاستخدامات مصممة لتلبية احتياجاتهم. تعتبر وحدات الماكرو إضافات قوية إلى مجموعة أدواتك، ونأمل أن تصبح هذه الأداة رصيدًا قيمًا لك.

نشجعك أيضًا على استكشاف مكتبتنا الواسعة من طرق API وإنشاء وحدات الماكرو الخاصة بك. إذا كان لديك وحدات ماكرو أو أفكار لمشاركتها، فلا تتردد في التواصل معنا – نحن دائمًا منفتحون على الاقتراحات والتعاون. حظًا سعيدًا في مساعيك الاستكشافية!

ONLYOFFICE ١. أنشئ حسابك المجاني من

،٢. قم بعرض و تحرير أو التعاون على المستندات، الجداول ، العروض التقديمية