Tips & Tricks

如何在分发表单之前验证 PDF 表单字段计算

带有计算字段的PDF表格可填写文档使用户免于手动算术。订单表格会自动对行项目进行总计。费用报告对类别进行汇总。时间表计算从开始时间到结束时间的工作时间。仅当在表单设计器中正确设置每个公式、字段引用和条件逻辑规则,并且在将表单分发给用户之前使用一系列输入值对其进行测试时,这些计算才能正常工作。

表格流通后发现的计算错误会造成信任问题。注意到错误的用户可能会停止使用该表单。没有注意到它的用户会提交错误的数据,这些数据会传播到下游系统。在分发之前验证表单字段计算可以捕获公式错误、字段引用错误和边缘情况故障,否则这些错误在真实用户数据暴露之前不会被检测到。

WukongPDF 的可填充 PDF 工具包括计算字段设置和验证功能。

How to Validate PDF Form Field Calculations Before Distributing the Form

PDF 表单计算如何工作

PDF 表单计算使用字段属性中嵌入的简化 JavaScript 语法。每个计算字段都有一个按名称引用其他字段的公式。该公式可以执行基本算术,使用 if-else 语句应用条件逻辑,并将结果格式化为数字、货币、百分比或日期。当用户更改公式引用的任何字段时,PDF 阅读器会自动重新计算相关字段。

计算顺序对于多步骤公式很重要。如果字段 C 依赖于字段 B,字段 B 依赖于字段 A,则计算必须先处理 A,然后处理 B,然后处理 C。PDF 阅读器会根据字段依赖关系自动确定计算顺序,但字段 A 依赖于字段 B 且字段 B 依赖于字段 A 的循环引用会产生错误或无限循环。在分发表单之前,必须验证计算顺序以确保所有依赖关系正确解析。

WukongPDF

尝试编辑 PDF

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

立即开始 →

有条不紊地测试每个计算字段

创建一个测试计划,列出表单中的每个计算字段及其特定输入值的预期输出。对于包含数量、单价和行总计字段的简单订单,测试计划指定:数量=5,单价=10.00,预期行总计=50.00。测试计划的每一行并记录实际输出是否与预期输出匹配。

测试一系列输入值,而不仅仅是一组。对于数字字段,请使用零、典型值、非常大的值以及负值(如果字段接受负数)进行测试。正确处理单位数输入的公式可能会溢出或在处理六位数输入时产生意外结果。除以字段值的公式必须处理该字段为零的情况。

验证表单字段中的条件逻辑

许多表单包含条件逻辑,可根据用户选择显示、隐藏或修改字段。当国家/地区字段为美国时,运送表单可能会显示国内运送选项,否则可能会显示国际运送选项。每个条件路径必须独立测试。对于具有三个条件字段的表单,每个条件字段都有两种可能的状态,即需要测试八种组合。

测试条件之间的边界。当用户选择触发条件的下拉列表中的最后一个选项时会发生什么?当他们选择第一个选项时会发生什么?当他们在做出选择后清除字段时会发生什么?状态之间的转换是错误最常隐藏的地方。满足条件时正确显示的字段可能无法在随后清除条件时消失。

检查字段参考完整性

计算字段通过内部字段名称引用其他字段,这可能与用户可见的标签不同。表单上标记为“电子邮件地址”的字段可能具有内部名称“Email_Address”或“email1”。如果计算字段引用 EmailAddress 但实际字段名称为 Email_Address,则计算会自动中断。表格没有显示任何错误。计算字段仅显示零或空白。

打开每个计算字段的字段属性,并根据“字段”面板中的实际字段名称验证每个字段引用。字段引用中的单个拼写错误(例如 Qty 与 Qtty)会中断整个字段的计算。使用“准备表单”工具中的字段列表可以在一个视图中查看所有字段名称,并根据计算公式交叉引用它们。

计算类型示例验证方法
字段总和小计 + 税 = 总计手动验证示例计算
条件逻辑如果复选框 A,则启用字段 B测试每个条件路径
日期计算结束日期 = 开始日期 + 30 天测试边缘日期,包括闰年

在多个 PDF 阅读器中测试表单

PDF 表单计算依赖于 PDF 阅读器中的 JavaScript 执行。不同的读者实现 Acrobat JavaScript API 的完整性程度不同。在 Adobe Acrobat Reader 中运行的计算可能无法在基于浏览器的 PDF 查看器、Mac 上的预览或移动 PDF 应用程序中执行。该表格应包含一条注释,说明哪些 PDF 阅读器支持该计算。

至少在三个阅读器中测试表单:Adobe Acrobat Reader、基于浏览器的查看器(例如 Chrome 或 Edge)以及 Mac 上的 Preview。对于每个读者,填写测试值并确认计算正确执行。如果计算在特定阅读器中不起作用,请决定是否添加兼容性说明,指导用户在 Acrobat Reader 中打开表单,或者修改计算以使用更广泛支持的 JavaScript 功能。

创建表单分发的验证清单

在分发计算表格之前,请先完成最终验证清单。验证每个计算字段为至少三个输入组合生成正确的输出。确认公式中的所有字段引用均与实际字段名称匹配。测试所有条件逻辑路径。在多个 PDF 阅读器中验证计算。检查 Tab 键顺序是否按逻辑顺序在字段中移动。

记录验证结果,包括使用了哪些测试值、测试了哪些读卡器以及发现和解决的任何问题。验证记录可作为未来表单更新和必须证明表单准确性的合规性要求的文档。通过验证并记录结果的表单比简单地假设可以正常工作的表单更能激发人们的信心。

在分发之前验证 PDF 表单计算可以发现错误,否则信任表单准确的用户会悄悄生成不正确的数据。验证过程比表格流通数周后纠正数据错误所需的时间更少。

处理形式计算中的浮点精度

PDF 表单计算使用 JavaScript 数字类型,即浮点型。添加 0.1 和 0.2 可能会产生 0.30000000000000004 而不是 0.3。对于财务计算,请使用 toFixed() 对结果进行舍入:event.value = (field1 + field2).toFixed(2)。这会四舍五入到小数点后两位并避免精度意外。

使用已知的可产生精确边缘情况的值来测试计算。添加 0.1 和 0.2,并在四舍五入后验证 0.3。将 0.1 乘以 3 并验证 0.3。将这些精度测试与标准算术测试一起纳入验证测试计划中。

为未来的表单维护者记录计算逻辑

在实践中,继承复杂PDF表单的人需要了解计算逻辑。记录每个计算字段及其公式和依赖项。列出字段名称、公式和依赖关系的简单电子表格可用作排除故障或修改表单的计算图。

将文档作为隐藏页面包含在 PDF 中或作为配套文件。当需要修改时,维护人员会查阅文档,而不是从字段属性中逆向工程公式。当原始创建者之外的其他人第一次更新表单时,这项投资就会得到回报。

表格计算验证是数据收集的质量保证。分发前花费的测试时间可以避免在数百名用户提交有计算错误的表单后纠正错误数据所需的更大时间成本。经过验证的表单可以激发用户信心,并保护整个工作流程中的数据完整性,而整个工作流程取决于准确的表单提交。

实际上,此处描述的验证技术适用于任何带有计算的 PDF 表单,无论用于创建表单的工具如何。系统测试、边缘案例覆盖、现场参考验证和多读者测试的原则是通用的。将它们构建到表单开发过程中,并且发布的每个表单都将正确计算。

验证过程应记录在案且可重复。今天通过验证的表单明天也应该通过相同的验证。记录下来的测试计划使任何团队成员都可以验证表单,而不仅仅是创建表单的人。

影响用户的表单计算错误会产生数据质量问题,并波及下游系统。提交的表格中总计不正确将成为会计差异。通过验证进行预防比提交后纠正要便宜得多。

在大多数工具中,表单验证所花费的时间只是纠正数百个提交表单中的错误数据所需时间的一小部分。分发前进行彻底的验证是文件准备过程中回报最高的质量保证活动之一。

经过验证的 PDF 表单可以激发用户的信心。当用户看到计算正确且一致地运行时,他们就会信任该表单并提交准确的数据。这种信任一旦建立,就会延伸到发布该表格的组织。

WukongPDF

尝试编辑 PDF

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

立即开始 →