用户指南 取消(C)

将计算型字段添加到表单

 

Adobe Acrobat Sign 指南

新增功能

快速入门

管理

发送、签署和管理协议

高级协议功能和工作流程

与其他产品集成

Acrobat Sign 开发人员

支持和故障排除

计算型字段在高级表单中使用,因此仅包含在多重授权服务级别中。


概述

Adobe Acrobat Sign 能够根据签名者在签署协议时输入的数据动态更新文档(协议)中的字段。这可使用计算型字段来完成。在发送文档以供签名之前,您可以使用计算型字段在文档(或文档模板)中设置规则。这些规则在签名者与文档进行交互时得到处理,并且会根据字段/值动态更新文档。

可使用以下任一机制在文档中定义计算型字段:


计算型字段用例

在签名时需要动态更新文档的任何情况下,均可使用计算型字段。下面是可使用计算型字段的几个用例的示例。这些用例仅供举例说明。

1. 设置订货表单 - 计算型字段可用于设置一个订货表单,在该表单中,签名者可以从可订购商品的列表中选择并指定数量。从列表中选择商品后,将在表单上自动更新选定商品的价格。此外,签名者选择数量后,还会自动计算商品的总成本。表单也可以包含其他计算,用于确定订单上应交的总税额或根据向客户提供折扣的业务规则计算数量折扣。

2. 自动填充合同期限到期日 - 对于允许客户在签名时选择合同期限长度(6 个月、12 个月、24 个月等)的协议,计算型字段可用于根据客户在签署合同时做出的选择自动填充合同的结束日期。

3. 包含多种选择的注册表单 - 计算型字段可用于设置注册表单(如成员注册表单),在这些表单中,为表单签名的人员可以从一组可用选项中选择。签名者做出的选择可以驱动表单的其他动态方面,如签名者同意的条款、合同的持续时间以及总成本。


计算型字段基础

Acrobat Sign 表单中的任何表单字段、复选框字段或单选按钮字段均可标记为计算型字段。在签名时,签名者不能直接在指定为计算型字段的字段中输入值,此类字段的值将根据在表单中定义的规则自动计算。

计算型字段定义由两部分组成:表达式和格式。

表达式

必填

定义有关如何计算所指定字段的值的公式/规则。Acrobat Sign 将在签名时对表达式求值,所得值将显示在字段中。

格式

可选

通过指定格式,也可将计算型字段所得值的格式设置为日期、数字或货币。

可使用 Acrobat Sign 文本标记、Acrobat Sign Web 应用程序或 PDF 表单字段定义计算型字段。使用 Acrobat Sign 文本标记或 PDF 表单字段定义计算型字段时,可使用一个名为“calc”的指令定义计算的表达式。可使用一个名为“format”的指令指定计算型字段的格式设置。

示例

{{someCalculatedField_es_:signer1:calc(someExpn):format(formatType, someFormat)}}

此示例显示的是使用文本标记在文档中定义一个名为“someCalculatedField”的字段。此字段分配给标识为 signer1 的接收者。此字段的值将根据在“someExpn”中指定的公式进行计算。所得值的类型由参数“formatType”指定,其格式设置基于定义为“someFormat”的格式。

Acrobat Sign Web 应用程序的编制环境提供了一个功能齐全的表达式构建器,用于定义计算型字段的公式。有关构建表达式的更多详细信息,请参见使用表达式构建器指定计算型字段


计算型字段表达式

表达式定义用于确定计算型字段的值的公式/规则。表达式可以由下面的一个或多个元素组成:

文字

指定用作表达式一部分的实际值。表达式可以是字符串值、数字或日期。例如:

  • {{helloField_es_:signer1:calc(“Hello”)}} – 此文字将名为“helloField”的字段的值设置为 Hello。
  • {{numField_es_:signer1:calc(10)}} – 此文字将名为“numField”的字段的值设置为 10。
  • {{date_es_:isdate(format="mmm d, yyyy")}} - 此文本包含逗号,而逗号是特殊的分隔符。要使逗号成为格式化字符串的一部分,就必须将表达式转换为字面值。
  • {{date_es_:isdate(format='d "day of" mmmm, yyyy')}} - 可以将字符的文本字符串插入到日期计算中。  文本字符串必须用单引号或双引号引起来。 
    • 上述计算将产生一个字符串,如:12 day of December, 2012

需要包含在表达式中的字符串必须用引号(双引号 (") 或单引号 ('))引起来。如果所得值需要包含引号(单引号或双引号),实现方法是使用反斜杠 (\) 来结束引号。

重要说明:对于后面的所有示例,将仅显示表达式,而不显示文本标记的完整语法。

运算符

运算符用于执行作为表达式一部分的一项或多项运算。例如:

• 6 + 4 – 此运算符的结果是在计算型字段中填充值 10。

• 5/22/2016 - 3 – 此运算符的结果是在计算型字段中填充值 5/19/2016。

有关表达式中所支持运算符的列表,请参见支持的运算符

字段

文档中的现有字段可用于定义表达式,方法是通过字段名称来引用字段。字段可以是 Acrobat Sign 字段(如签名、日期字段、签名者姓名、签名者公司等),或者是在文档中定义的字段或其他计算型字段。例如:

• price * quantity – 此表达式引用文档中名为“price”和“quantity”的其他两个字段。这两个字段的值相乘的结果将填充在计算型字段中。

• signerName & “employee of “ & signerCompany – 此表达式引用文档中的两个字段“signerName”和“signerCompany”(如果有,将由 Acrobat Sign 预先填充),并将它们连接在一起。如果签名者的姓名为“Casey Jones”且签名者的公司为“Acme Corp”,则此表达式的结果是在计算型字段中填充值“Casey Jones employee of Acme Corp”。

如果字段名称包含空格,则字段名称必须放在方括号 ([]) 中,才能在表达式中引用它。例如,[field name with spaces] 将引用文档中一个名为“field name with spaces”的字段。

函数

表达式也可以包含 Acrobat Sign 支持的函数列表中的一个或多个函数。指定的函数将在协议签署过程中求值,所得值将显示在计算型字段中。例如:

• dateAdd(d, signedDate, 3) – 此表达式使用“dateAdd”函数,指定在签署此协议的日期上加上 3 天。所以,如果在 5/22/2016 对文档进行签名,则此表达式得出的值将为 5/25/2016。

使用负数可有效地减掉日期。

有关表达式中所支持函数的列表,请参见支持的函数


支持的运算符

计算型字段支持以下运算符。

+

把两个数字相加。

-

把两个数字相减。

/

把两个数字相除。

*

把两个数字相乘。

&

将两个字符串连接到一起。

=

等于。比较两个值,如果两个值相等,返回 true;如果它们不相等,返回 false。

! =

不等于。比较两个值,如果两个值不相等,返回 true;如果它们相等,返回 false。

小于。比较两个值,如果第一个值小于第二个值,返回布尔值(true 或 false)。

>=

大于或等于。比较两个值,如果第一个值大于或等于第二个值,返回布尔值(true 或 false)。

<=

小于或等于。比较两个值,如果第一个值小于或等于第二个值,返回布尔值(true 或 false)。

大于。比较两个值,如果第一个值大于第二个值,返回布尔值(true 或 false)。

%

模运算符。返回两个数字相除的余数。

^

指数运算符。返回指定数字的指数值。


支持的函数

在计算型字段中指定表达式时,支持以下函数。

函数

类别

说明

abs(number1)

数学

返回数字“number1”的绝对值。

roundUp(number1)

数学

将数字“number1”向上舍入。

roundDown(number1)

数学

将数字“number1”向下舍入。

round(number1)

数学

将数字“number1”舍入到最接近的整数。

min(number1,number2)

数学

返回两个数字“number1”和“number2”中较小的一个。

max(number1,number2)

数学

返回两个数字“number1”和“number2”中较大的一个。

datePart(part, date)

日期

以整数形式返回由第一个参数指定的日期部分。例如:datePart(m, 5/22/2016) 将返回 5,即日期的月部分。

有关 part 属性可接受的值的信息,请参见下文的“日期部分接受的值”。

dateAdd(part, date, addition)

日期

在一个日期上加上指定的部分数(例如,“d”表示日,“m”表示月,“y”表示年)以计算出一个未来的日期。您可以使用数字或字段名称。

例如:dateAdd("m", "Jan 1, 2016", 3) 将返回日期 Apr 1, 2016。在本例中,公式在指定的日期上加上了 3 个月。

使用负数可有效地减掉日期。

dateDiff(part, date1, date2)

日期

返回两个日期之间相差的部分数(例如,“d”表示天,“h”表示小时,“n”表示分钟)。您可以使用数字或字段名称。

例如:dateDiff("d", "Jan 1, 2016", "Jan 2, 2016") 将返回值 1,表示 1 月 1 日和 1 月 2 日之间相差 1 天。

daysIn(part, date)

日期

返回指定日期的部分(例如,“d”表示日,“m”表示月,“y”表示年)包含的天数。您可以使用数字或字段名称。

例如:daysIn("m", "Feb 1, 2016”) 将返回值 29,表示 2016 年 2 月包含 29 天;daysIn("y", "02/01/2015") 将返回值 365,表示 2015 年包含 365 天。

date(string)

日期

将字符串值(如“1/1/2016”)转换为可在其他函数中使用的日期对象。

now()

日期

返回对公式求值的日期和时间,大多数情况下是加载电子签名页面的时间。

if(logical_test, value_if_true, value_if_false)

逻辑

对“logical_test”求值。“logical_test”可以是另一个表达式。如果为 TRUE,将返回在“value_if_true”中指定的值。如果为 FALSE,将返回值“value_if_false”。“value_if_true”和“value_if_false”属性也可以是表达式。

例如:if (1>0, "Correct", "Incorrect") 将返回“Correct”。

and(logical1, logical2, ...)

逻辑

仅当所有逻辑参数均求值为 TRUE 时,才返回 true。否则,将返回 false。

例如:and (1>0, 2>1) 将返回“true”,and (1>0, 2=1) 将返回“false”。

or(logical1, logical2, ...)

逻辑

如果任一逻辑参数(logical1、logical2 等)求值为 TRUE,将返回 true。如果所有逻辑参数均求值为 FALSE,将返回 false。

例如:or (1>0, 2>1) 将返回“true”。or (1>0, 2=1) 将返回“false”。

not(logical)

逻辑

返回“logical”的相反值。所以,如果“logical”求值为 FALSE,将返回 true。如果求值为 TRUE,将返回 false。例如:not (1>0) 将返回“false”。
lookup(sourceField,("value1=return1,value2=return2", "default_value") 逻辑

计算源字段“返回值”(用于下拉框和单选按钮)以根据可能的值列表在计算字段中填充默认值。

例如:lookup(stateField, "CA=California,UT=Utah,MA=Massachusetts,WA=Washington","None")

如果 stateField 是 CA,则将返回 California,或者如果 stateField 是 UT,则将返回 Utah,等等。  如果未找到匹配项,则将返回 None


日期部分接受的值

指定函数应该对日期的哪一部分执行运算时,可以在与日期相关的函数中使用以下值。

部分

函数将应用于的日期部分

y

q

季度

m

d

h

n

s


计算型字段格式设置

除了指定计算型字段的表达式之外,还可以设置输出值的格式。输出的格式可以设置为文本(默认设置),也可以设置为数字或日期。

与文本标记一起使用时,格式指令有两个参数:FormatType 和 Format。

FormatType

指定计算型字段表示的值的类型。此参数接受的值为数字和日期。

格式

指定要放入计算型字段的输出值的结构。


将计算型字段的格式设置为数字

以下字符可用于指定输出的格式设置为数字形式。

格式字符

说明

_

(下划线。)表示任何数字占位符。

9

表示任何数字占位符。

.

必需小数点(或适合区域设置的符号)的位置。

0

位于必需小数点的左侧或右侧。用零填充。

( )

如果数字小于零,用圆括号将掩码括起来。

+

在正数前面添加一个正号;在负数前面添加一个负号。

-

在正数前面添加一个空格;在负数前面添加一个负号。

,

每三个小数位用逗号(或适合区域设置的分隔符)分隔。

$

在设置了格式的数字前面添加一个美元符号(或适合区域设置的符号)。如果指定,它必须是格式字符串的第一个字符。

%

将字段中的数值转换为百分比。把它乘以 100,并在末尾

添加 % 符号。如果指定,它必须是格式字符串的最后一个字符。


将计算型字段的格式设置为日期

以下字符可用于指定输出的格式设置为日期形式。

格式

说明

示例

s

某分几秒,介于 0 到 59 之间。

“0”到“59”

ss

某分几秒,带前导零(如果需要)。

“00”到“59”

n

某时几分,介于 0 到 59 之间。

“0”到“59”

nn

某时几分,带前导零(如果需要)。

“00”到“59”

h

某日几时,介于 1 到 12 之间。

“1”到“12”

hh

某日几时,带前导零(如果需要)。

“01”到“12”

H

某日几时,介于 0 到 23 之间。

“0”到“23”

HH

某日几时,带前导零(如果需要)。

“00”到“23”

d

某月几日,介于 1 到 31 之间。

“1”到“31”

dd

某月几日,带前导零(如果需要)。

“01”到“31”

ddd

星期几简称。

“Mon”到“Sun”

dddd

星期几全称。

“Monday”到“Sunday”

m

某年几月,介于 1 到 12 之间。

“1”到“12”

mm

某年几月,带前导零(如果需要)。

“01”到“12”

mmm

月份简称。

“Jan”到“Dec”

mmmm

月份全称。

“January”到“December”

yy

以两位数表示的年份。

“99”或“15”

yyyy

完整的四位数年份。

“1999”或“2015”

t

显示 A.M./P.M. 标志符的第一个字符。

“A”或“P”

tt

显示 A.M./P.M. 标志符。

“AM”或“PM”


格式设置示例

以下示例显示了如何设置日期和数字格式的计算型字段。

  • 格式设置为日期的计算型字段:

{{myField_es_:calc(otherDateField + 3):format(date, "mmm dd, yyyy")}}

输出将类似于“May 22, 2016”。

  • 格式设置为数字的计算型字段:

{{myTax_es_:calc(total * taxrate):format(number, "$,.00") }}

输出将类似于“$1,987.65”。


使用表达式构建器指定计算型字段

计算型字段可通过 Acrobat Sign 编制环境来指定。以下过程将引导您完成在编制环境中定义计算型字段的各个步骤。

1. 在文档中拖放一个字段。双击刚刚添加的字段,以显示字段属性对话框。为字段指定一个适当的名称。在下拉式列表中将值类型属性更改为计算值类型。这表明将根据签名时的计算确定字段值。

“值类型”字段

 

2. 在名为公式的文本字段中键入计算表达式,或单击函数按钮 (fx) 以显示表达式构建器。

公式构建器

 

3. 使用表达式构建器定义计算型字段的表达式(参见下图)。顶部的表达式区域显示了将用于计算字段值的公式。您可以在表达式区域中键入公式或使用编制环境构造公式。表达式构建器提供了所有可用函数的列表、文档中现有表单字段的列表以及受支持运算符的列表来帮助构造表达式。您可以在表达式构建器中双击列表区域中的项目,向公式中添加字段函数。您也可以单击运算符列表中的特定运算符,向表达式中添加运算符

4. 完成表达式的定义后,您可以单击检查语法按钮来检查表达式的语法,然后保存更改。

5. 在显示为下拉式列表中,设置计算型字段的类型。

“显示为”字段

 

6. 如果显示为的值为“日期”或“数字”,在下拉式列表中设置字段值的日期格式/数字格式。您也可以选择“自定义”格式设置,以便为字段定义自定义格式设置。

“数字格式”字段


具有“货币”格式的计算型字段

计算型字段的“货币”格式会在计算值之前插入一个货币符号。(否则,计算只是按公式进行的简单数学运算。)

插入的符号基于以下规则:

  • 如果源字段包含美国的“货币”验证,则显示的符号为美元符号:$
  • 如果源字段包含英国的“货币”验证,则显示的符号为英镑符号:£

要正常使用“货币”格式,必须对计算型字段进行以下配置:

  • 将“显示为”值设置为数字
  • 将“数字格式”值设置为货币
计算型字段 - 货币格式

在计算中使用的源字段可以是“数字”或“货币”验证源字段:

计算字段 - 源数字
数字验证源字段

计算字段 - 源货币
货币验证源字段

注意:

在设置为货币格式的字段中计算值时,Acrobat Sign 考虑任何类型的货币兑换(外汇)。

  • 计算型字段仅执行计算的数学运算
  • 字段的格式(“货币”)仅插入货币符号



计算型字段示例

 

  • {{shipState_es_:signer1:calc([billingState]):showif(sameAs=unchecked)}}
    • 文档中的一个字段,分配给第一个签名者,仅当取消选中另一个名为“sameAs”的字段(一个复选框)时,才会显示此字段。将以签名者在文档中的字段“billingState”中输入的值自动填充此字段的值。
  • {{total_es_:signer1:calc(q1*pr1):format(Number,”$,0.00”):align(right)}}
    • 文档中的一个字段,分配给第一个签名者。此字段的值将自动计算为字段“q1”和“pr1”中的值的乘积。所得值的格式设置为货币值,所得值前面显示有美元 ($) 符号,并且包含两位小数。此外,所得值在字段中右对齐。
  • price_es_:signer1:calc(if(pn1=”W1”,9.99,if(pn1=”W2”,5.99,if(pn1=”W3”,24.99,0))))}
    • 文档中一个名为“price”的字段,将根据签名者在文档中的另一个字段“pn1”中选择的值计算此字段的值。在本例中,如果字段“pn1”等于 W1,则“price”字段中显示的值为 9.99;如果字段“pn1”等于 W2,则“price”字段中显示的值为 5.99,依此类推。如果没有任何值与字段“pn1”的值匹配,则“price”字段中显示的值为 0。使用此机制,计算型字段可用于根据签名者在签名过程中做出的选择自动填充商品的价格。

 

更快、更轻松地获得帮助

新用户?