如何使用 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

相关推荐
serve the people13 分钟前
python环境搭建 (六) Makefile 简单使用方法
java·服务器·python
重生之后端学习16 分钟前
146. LRU 缓存
java·数据结构·算法·leetcode·职场和发展
萧曵 丶18 分钟前
懒加载单例模式中DCL方式和原理解析
java·开发语言·单例模式·dcl
回忆是昨天里的海21 分钟前
k8s部署的微服务动态扩容
java·运维·kubernetes
萧曵 丶22 分钟前
单例模式 7 种实现方式对比表
java·单例模式
lang2015092832 分钟前
Tomcat Maven插件全解析:开发部署一体化
java·tomcat·maven
JHC_binge38 分钟前
国内Ubuntu 22.04 LTS安装Milvus向量数据库
java·linux·ubuntu
占疏44 分钟前
pdf文件解析
pdf
码农六六1 小时前
js函数柯里化
开发语言·前端·javascript
2501_941148151 小时前
C++ map / multimap 保姆级教程
java·开发语言·c++