如何使用 ONLYOFFICE 宏对 PDF 表单中的特定字段执行计算

ONLYOFFICE 宏功能强大且用途广泛,不仅可用于自动执行文本文档、电子表格和演示文稿中的任务,还能应用于 PDF 表单。在本文中,我们将介绍如何创建并运行一个宏,用于对表单中的特定字段进行计算,以快速准确地处理税款计算。

关于 ONLYOFFICE

ONLYOFFICE 是一个国际开源项目,专注于高级和安全的文档处理,可提供文本文档、电子表格、幻灯片、表单和 PDF 编辑器。ONLYOFFICE 文档高度兼容微软 Office 格式,并提供数百种格式化和样式工具,帮助您实现复杂的编辑功能。

ONLYOFFICE 不仅适合个人用户,更为企业和商业开发提供了强大的支持。如果您需要为您的企业集成强大的编辑功能,或是为您的应用程序、网站或其他解决方案提供强大的编辑功能,您可以选择企业版 / 开发者版。观看下方视频,了解关于我们的更多信息:

ONLYOFFICE,兼顾协作与安全的开源办公套件

什么是 ONLYOFFICE 宏

如果您是一名资深 Microsoft Excel 用户,那么相信您已对于 VBA 宏非常熟悉了。这些宏是帮助您自动执行日常任务的小型脚本。无论是重构数据,还是在单元格区域中插入多个值。ONLYOFFICE 宏 的基础是 JavaScript 语法文档生成器 API方法。基于 JavaSript 的宏易于使用,具有跨平台特性且十分安全。这就使得其与 VBA 相比有着显著的优势。

下面一起来看看如何创建宏,帮助您对表单中的特定字段进行计算。

构建宏

从文档中检索所有表单

首先,我们从文档中检索所有字段:

复制代码
// 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 用于存储输入字段的标识符。
  • sumResultKeytaxResultKey 用于存储输出结果的字段标识符。

检索表单值

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,以避免计算错误。

将值插入表单

setFormValu e 函数搜索与 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));
            }
        }
    }

主要计算

在主要计算函数中,我们执行以下步骤:

  • 从表单字段中获取用户输入值。

  • 计算 input1input2的总和。

  • 计算总和的百分比以得出税额。

  • 调用 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 宏

如何使用 ONLYOFFICE 宏将 TextForms 添加到表单模板

GitHub 上的 ONLYOFFICE

相关推荐
计算机-秋大田12 分钟前
基于Spring Boot的小区疫情购物系统的设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·课程设计
爱看书的小沐16 分钟前
【小沐学Web3D】three.js 加载三维模型(vue3)
javascript·vue·vue3·webgl·three.js·opengl·web3d
loveking623 分钟前
SpringBoot调用华为云短信实现发短信功能
java·spring boot·华为云
李长渊哦30 分钟前
Spring Boot 约定大于配置:实现自定义配置
java·spring boot·后端
上官美丽32 分钟前
单一责任原则在Java设计模式中的深度解析
java·开发语言·设计模式
敲敲敲敲暴你脑袋34 分钟前
高德地图自定义canvas实现聚类分析
javascript·数据可视化·canvas
橙序研工坊36 分钟前
Java基础语法练习42(基本绘图-基本的事件处理机制-小坦克的绘制-键盘控制坦克移动)
java·开发语言
一个处女座的程序猿O(∩_∩)O37 分钟前
Vue 计算属性与 Data 属性同名问题深度解析
前端·javascript·vue.js
等什么君!1 小时前
学习springboot 的自动配置原理
java·spring boot·学习
白晨并不是很能熬夜1 小时前
【JVM】性能监控与调优概述篇
java·jvm·经验分享·后端·面试·求职招聘