Tips & Tricks

如何在可填写的 PDF 表单中添加自动计算字段

可自动添加行项目、计算税款或合计发票的可填写 PDF 表单与收件人必须自己进行数学运算的文档有着本质上的不同。自动计算字段将静态表单转变为工作计算器。收件人输入数量和费率,表格会在他们眼前实时计算总数。对于发票、采购订单、费用报告以及任何需要正确添加数字的表单,自动计算是帮助用户的表单与创建额外工作的表单之间的区别。

将计算字段添加到 PDF 需要支持基于 JavaScript 的字段脚本的表单编辑器,因为 PDF 计算在每个主要 PDF 查看器中内置的 JavaScript 简化版本上运行。该设置涉及三个步骤:创建用户键入数字的输入字段、创建显示结果的输出字段以及编写将它们链接在一起的计算脚本。配置完成后,只要用户更改值,计算就会自动运行。无需保存、无需刷新、无需单击按钮。

How to Add Auto-Calculation Fields in a Fillable PDF Form

了解 PDF 字段类型及其如何协同工作

在编写任何计算脚本之前,您需要了解参与计算的三种字段类型。文本字段接受用户键入的输入。它们可以配置为仅接受数字、日期或任何文本。对于计算表单,纯数字文本字段是标准输入类型。每个字段都有计算脚本引用的唯一名称。一致的命名,例如“Item1_Qty” “项目1_率”, “项目1_总计,”使计算逻辑可读、可维护。

下拉列表和单选按钮也可以输入到计算中。下拉列表可以让用户选择产品,相应的价格会自动填充查找表中的费率字段。复选框可以切换是否包含可选费用。关键概念是任何具有值的字段都可以成为计算的一部分。该脚本读取每个输入字段的当前值,执行数学运算,并将结果写入输出字段。

输出字段通常设置为只读,因此用户不会意外覆盖计算结果。只读计算字段在用户控制的数字和表单控制的数字之间创建了清晰的分隔。这种区别对于形式完整性很重要。如果用户可以编辑总计,则该计算也可能不存在。

WukongPDF

尝试编辑 PDF

无需安装。直接在您的浏览器中工作。

立即开始 →

分步:创建简单的自动计算表格

首先创建您的输入字段。在PDF表单编辑器中,选择表单字段工具并为用户需要输入的每个值放置文本字段。对于发票,这可能是每个行项目的数量字段和单价字段。为每个字段指定一个清晰、唯一的名称。避免在字段名称中使用空格和特殊字符,因为 JavaScript 将它们引用为变量名称。使用下划线或驼峰命名法代替:“item1_qty”不是“商品 1 数量”。

接下来,创建将显示计算总数的输出字段。将其放置在逻辑位置,通常位于数字列的底部或总计部分。在字段属性中将此字段设置为只读。这很重要。可编辑的计算字段破坏了数学自动化的整个目的。

现在打开输出字段的计算属性。在WukongPDF的编辑器中,选择总计字段,打开字段属性中的计算选项卡,然后选择“自定义计算脚本”。这将打开一个脚本编辑器,您可以在其中编写执行计算的 JavaScript。简单的行项目总计如下所示:event.value = this.getField(“item1_qty”).value * this.getField(“item1_rate”).value;。 “事件.值”是字段中显示的结果。 “this.getField()”按名称检索另一个字段的当前值。您可以链接多个计算并将它们加在一起以获得总计:event.value = this.getField(“line1_total”).value + this.getField(“line2_total”).value + this.getField(“line3_total”).value;。

写完脚本后,立即测试。保存表单,在 PDF 查看器中打开它,在输入字段中键入数字,然后观察计算字段的更新。按 Tab 键在字段之间移动,这会触发重新计算。在数字字段中输入一个字母,看看会发生什么。脚本应该处理或优雅地忽略非数字输入。如果总数显示“NaN” (不是数字),输入字段之一包含非数字的内容,并且脚本需要进行验证检查。添加一个保护子句,例如: var qty = Number(this.getField(“item1_qty”).value) || 0;这会将字段值转换为数字,如果转换失败,则默认为零,从而防止 NaN 在计算中级联。

处理边缘情况:空字段、负数和除以零

当真实用户填写表单时,与测试数据完美配合的计算脚本可能会以令人尴尬的方式失败。最常见的故障是空字段。当用户尚未在字段中输入任何内容时,其值为空字符串,而不是零。将空字符串乘以数字会产生 NaN,然后它会传播到依赖于该结果的每个计算。

解决方法是在每个输入值为空时将其标准化为零。在每个计算脚本的顶部,检索每个字段值并将其转换:var qty = this.getField(“qty”).value; if (qty === "" || isNaN(qty)) qty = 0;这种模式一致地应用于每个输入字段,消除了空字段问题。它还可以处理用户不小心在数字字段中输入字母的情况,否则会产生 NaN。

负数需要政策决定。表格应该接受负数吗?在大多数业务形式中,答案是否定的,计算脚本应强制执行:if (qty < 0) qty = 0;。除零是百分比和比率计算中出现的一个更微妙的问题。如果用作分母的字段可以为零,则脚本必须在除法之前进行检查: if (denominator !== 0) { result = numerator / denominator; } 否则{ 结果 = 0; }。这些保护子句添加了几行代码,并防止表单向用户显示令人困惑的错误值。

高级计算:条件逻辑和查找表

基本算术处理行项目总计和总计。更复杂的表单需要根据用户选择而变化的条件计算。一个常见的例子是税收计算,其中税率取决于所选的州或省。计算脚本读取下拉字段的值并应用相应的比率:var state = this.getField(“state”).value;无功率 = 0; if (状态===“CA”)率=0.0725;否则 if (state === "NY") 率 = 0.04; event.value = 小计 * 比率;

对于具有许多选项的较大查找表,switch 语句或查找对象比 if-else 条件链更清晰。 var rates={“CA”:0.0725,“NY”:0.04,“TX”:0.0625,“FL”:0.06}; var 利率 = 利率[状态] || 0;这种模式可以扩展到数十个条目而不会变得不可读。默认值为零,由 || 提供运算符,优雅地处理不在查找表中的状态。

折扣等级是另一个常见的条件用例。如果小计超过阈值,则应用百分比折扣:vardiscount=0;如果(小计> 1000)折扣=小计* 0.10; else if (小计 > 500) 折扣 = 小计 * 0.05; event.value = 小计 - 折扣 + 税;。每次任何字段更改时都会运行计算,因此当用户添加或删除商品时折扣会自动更新。用户可以实时看到价格调整,这正是交互式体验,使得Fillable PDF表单感觉像一个应用程序而不是一张纸。

发送计算表格之前测试

未经测试的计算形式会产生错误的数字。系统测试可以在错误到达客户或消费者之前发现错误。首先使用正常值进行测试:输入您可以在头脑中计算的数字并验证输出是否匹配。然后测试边缘情况:将字段留空,输入零,如果业务规则拒绝负数,则输入负数,输入非常大的数字以检查溢出,然后在数字字段中输入文本。

在多个 PDF 查看器上进行测试。在 Adobe Acrobat 中正确计算的表单在 Mac 上的预览、Web 浏览器的内置 PDF 查看器或移动 PDF 应用程序中的表现可能有所不同。每个查看器实现 JavaScript 引擎的方式都略有不同。某些移动查看器根本不支持 PDF JavaScript,并且将显示表单字段,而没有任何计算功能。如果您的受众包括移动用户,请在表单上添加注释,表明计算需要桌面 PDF 查看器,或提供预先计算的参考表作为后备。

最后,从头到尾测试用户工作流程。像收件人一样打开表格。按照真实用户的顺序填写。保存起来。重新打开保存的副本并验证计算仍然正确。打印它并确保计算值出现在纸上。在屏幕上看起来正确但打印空白计算字段的表单是一种令人惊讶的常见故障模式,这是由于打印引擎处理字段值的方式与屏幕渲染器不同而导致的。与向 500 名客户发送错误计算总数的发票表格所造成的损失相比,在彻底测试上花费的时间根本不算什么。

何时电子表格是更好的工具

PDF 表单计算功能强大,但也有局限性,这使得电子表格成为更合适的选择。 PDF 计算无法引用外部数据源。他们无法获取实时汇率、股票价格或数据库值。它们无法执行迭代计算,例如目标搜索或求解器函数。他们无法根据输入的数据生成图表或数据透视表。如果您的表单需要任何这些功能,请在 Excel 或 Google Sheets 中创建计算逻辑并将结果导出到 PDF,而不是尝试在 PDF 中复制电子表格功能。

PDF 计算非常适合数学简单且输入有限的表单:具有固定行项目的发票、具有已知产品价格的订单、具有预定义类别的费用报告以及具有标准小时费率的时间表。该表单只做一件事,并且可靠,并且不需要接收者进行使用培训。 WukongPDF 的PDF 编辑器 很好地处理了这一点,将表单字段创建与 JavaScript 计算支持结合在一个基于浏览器的工具中。对于正确的用例,精心构建的 PDF 计算表单可以消除有关数学错误的后续电子邮件,加快处理时间,并提供比带有单独计算器的静态表单更专业的体验。

WukongPDF

尝试编辑 PDF

无需安装。直接在您的浏览器中工作。

立即开始 →