步骤摘要
要计算表单数据,请执行以下任务:
- 包括项目文件。
- 创建Forms客户端API对象。
- 检索包含计算脚本的表单。
- 将表单数据流写回客户端Web浏览器
包含项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。
创建Forms客户端API对象
您必须先创建Forms服务客户端,然后才能以编程方式执行Forms服务客户端API操作。 如果您使用的是Java API,请创建一个FormsServiceClient
对象。 如果您使用的是Forms Web服务API,请创建一个FormsServiceService
对象。
检索包含计算脚本的表单
您可以使用Forms服务客户端API创建应用程序逻辑,该逻辑处理包含配置为在服务器上运行的脚本的表单。 该过程与处理提交的表单类似。 (请参阅处理提交的Forms。)
验证与已提交表单关联的处理状态为1
(Calculate)
,这意味着Forms服务正在对表单数据执行计算操作,并且必须将结果写回用户。 在这种情况下,将自动执行配置为在服务器上运行的脚本。
将表单数据流写回客户端Web浏览器
验证与提交的表单关联的处理状态为1
后,必须将结果写回客户端Web浏览器。 显示表单时,计算值将显示在相应的字段中。
另请参阅
包括AEM Forms Java库文件
使用Java API计算表单数据
使用Web服务API计算表单数据
正在设置连接属性
Forms服务API快速启动
渲染交互式PDF forms
创建呈现Forms的Web应用程序
使用Java API计算表单数据
使用Forms API (Java)计算表单数据:
-
包含项目文件
将客户端JAR文件(如adobe-forms-client.jar)包含在Java项目的类路径中。
-
创建Forms客户端API对象
- 创建包含连接属性的
ServiceClientFactory
对象。 - 使用构造函数创建
FormsServiceClient
对象并传递ServiceClientFactory
对象。
- 创建包含连接属性的
-
检索包含计算脚本的表单
-
要检索包含计算脚本的表单数据,请使用其构造函数创建
com.adobe.idp.Document
对象,并从构造函数中调用javax.servlet.http.HttpServletResponse
对象的getInputStream
方法。 -
调用
FormsServiceClient
对象的processFormSubmission
方法并传递以下值:- 包含表单数据的
com.adobe.idp.Document
对象。 - 一个字符串值,它指定包含所有相关HTTP标头的环境变量。 通过为
CONTENT_TYPE
环境变量指定一个或多个值来指定要处理的内容类型。 例如,要处理XML和PDF数据,请为此参数指定以下字符串值:CONTENT_TYPE=application/xml&CONTENT_TYPE=application/pdf
- 指定
HTTP_USER_AGENT
标头值的字符串值;例如,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
。 - 存储运行时选项的
RenderOptionsSpec
对象。
processFormSubmission
方法返回包含表单提交结果的FormsResult
对象。 - 包含表单数据的
-
通过调用
FormsResult
对象的getAction
方法,验证与已提交表单关联的处理状态为1
。 如果此方法返回值1
,则执行计算,并且数据可以写回客户端Web浏览器。
-
-
将表单数据流写回客户端Web浏览器
- 创建用于将表单数据流发送到客户端Web浏览器的
javax.servlet.ServletOutputStream
对象。 - 通过调用
FormsResult
对象的getOutputContent
方法创建com.adobe.idp.Document
对象。 - 通过调用
com.adobe.idp.Document
对象的getInputStream
方法创建java.io.InputStream
对象。 - 通过调用
InputStream
对象的read
方法并将字节数组作为参数传递,创建字节数组并使用表单数据流填充该数组。 - 调用
javax.servlet.ServletOutputStream
对象的write
方法将表单数据流发送到客户端Web浏览器。 将字节数组传递给write
方法。
- 创建用于将表单数据流发送到客户端Web浏览器的
使用Web服务API计算表单数据
使用Forms API(Web服务)计算表单数据:
-
包含项目文件
- 创建使用Forms服务WSDL的Java代理类。
- 将Java代理类包含在类路径中。
-
创建Forms客户端API对象
创建
FormsService
对象并设置身份验证值。 -
检索包含计算脚本的表单
-
要检索发布到Java Servlet的表单数据,请使用其构造函数创建
BLOB
对象。 -
使用
javax.servlet.http.HttpServletResponse
对象的getInputStream
方法创建java.io.InputStream
对象。 -
使用对象的构造函数创建
java.io.ByteArrayOutputStream
对象并传递java.io.InputStream
对象的长度。 -
将
java.io.InputStream
对象的内容复制到java.io.ByteArrayOutputStream
对象中。 -
通过调用
java.io.ByteArrayOutputStream
对象的toByteArray
方法创建字节数组。 -
通过调用其
setBinaryData
方法并将字节数组作为参数传递来填充BLOB
对象。 -
使用构造函数创建
RenderOptionsSpec
对象。 通过调用RenderOptionsSpec
对象的setLocale
方法并传递指定区域设置值的字符串值来设置区域设置值。 -
调用
FormsServiceClient
对象的processFormSubmission
方法并传递以下值:- 包含表单数据的
BLOB
对象。 - 一个字符串值,它指定包含所有相关HTTP标头的环境变量。 例如,您可以指定以下字符串值:
HTTP_REFERER=referrer&HTTP_CONNECTION=keep-alive&CONTENT_TYPE=application/xml
- 指定
HTTP_USER_AGENT
标头值的字符串值;例如,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
。 - 存储运行时选项的
RenderOptionsSpec
对象。 有关更多信息, 。 - 方法填充的空
BLOBHolder
对象。 - 方法填充的空
javax.xml.rpc.holders.StringHolder
对象。 - 方法填充的空
BLOBHolder
对象。 - 方法填充的空
BLOBHolder
对象。 - 方法填充的空
javax.xml.rpc.holders.ShortHolder
对象。 - 方法填充的空
MyArrayOf_xsd_anyTypeHolder
对象。 此参数用于存储与表单一起提交的文件附件。 - 用提交表单的方法填充的空
FormsResultHolder
对象。
processFormSubmission
方法使用表单提交结果填充FormsResultHolder
参数。processFormSubmission
方法返回包含表单提交结果的FormsResult
对象。 - 包含表单数据的
-
通过调用
FormsResult
对象的getAction
方法,验证与已提交表单关联的处理状态为1
。 如果此方法返回值1
,则执行计算,并且数据可以写回客户端Web浏览器。
-
-
将表单数据流写回客户端Web浏览器
- 创建用于将表单数据流发送到客户端Web浏览器的
javax.servlet.ServletOutputStream
对象。 - 通过调用
FormsResult
对象的getOutputContent
方法,创建包含表单数据的BLOB
对象。 - 创建字节数组,并通过调用
BLOB
对象的getBinaryData
方法填充该数组。 此任务将FormsResult
对象的内容分配给字节数组。 - 调用
javax.servlet.http.HttpServletResponse
对象的write
方法将表单数据流发送到客户端Web浏览器。 将字节数组传递给write
方法。
- 创建用于将表单数据流发送到客户端Web浏览器的