当前位置: 首页 > news >正文

文档在线协同工具ONLYOFFICE教程:如何使用宏对 PDF 表单中的特定字段执行计算

ONLYOFFICE Docs,作为一款功能强大的在线编辑器,适用于您使用的平台的文本文档、电子表格、演示文稿、表单和 PDF 阅读器。此次 ONLYOFFICE发布全新版本8.3,整个套件具有多项增强功能↓↓↓

ONLYOFFICE Docs 最新下载

ONLYOFFICE 宏功能强大且用途广泛,不仅可用于自动执行文档、电子表格和演示文稿中的任务,还可用于 PDF 表单中的任务。在这篇博文中,我们将向您展示如何创建和运行一个独特的宏,该宏对表单中的特定字段执行计算。在此示例中,宏有助于计算税款,使流程更快、更准确。

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

构建宏

从文档中检索所有表格

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

// 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 formkey2taxFormkey存储输入字段的标识符。
  • 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,以防止计算错误。

表单插入 

setFormValue函数搜索与formKey匹配的表单字段。SetText() 方法使用格式化的数值(2 位小数)更新该字段。

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

主要计算

在主计算函数中我们:

  • 从表单字段检索用户输入的值。
  • 计算输入1 输入2的总和。
  • 按总额的百分比计算税额。
  • 调用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();
})();

相关文章:

  • 设计模式之美
  • LeetCode-移动零
  • 如何配置Socks5代理
  • 56.HarmonyOS NEXT 登录模块开发教程(十):总结与展望
  • 游戏引擎学习第156天
  • [leetcode] 面试经典 150 题——篇1:数组/字符串
  • 【redis】redis的单线程模型为什么效率高?
  • 为什么使用 XML Schema?
  • Linux websocket服务器、配网方法、QT客户端程序
  • deepseek+kimi做ppt教程记录
  • 我的创作纪念日 打造高效 Python 日记本应用:从基础搭建到功能优化全解析
  • 深度学习篇---Opencv中的Haar级联分类器
  • 【Python运维】用Python编写云服务监控工具:实时监测和报警
  • Android 列表页面终极封装:SmartRefreshLayout + BRVAH 实现下拉刷新和加载更多
  • PGSQL基本使用
  • 深圳南柯电子|净水器EMC测试整改:水质安全与电磁兼容性的双赢
  • Word文档标题关联图片提取工具实现原理
  • React学习笔记15
  • MySQL行列转化
  • Vision Mamba论文精读笔记
  • 企业所得税怎么收的/深圳seo网站优化公司
  • 网站开发后端技术/百度推广点击一次多少钱
  • theme wordpress/宁波seo咨询
  • ckplayer 视频网站/百度登录页
  • 成都龙泉建设发展有限公司网站/seo优化首页
  • wap微信网站模板/分类达人介绍