本文档中的示例和示例仅适用于AEM Forms on JEE环境。
使用户能够填写交互式表单的基于Web的应用程序要求将数据提交回服务器。 使用Forms服务,您可以检索用户输入交互式表单的表单数据。 然后,您可以将表单数据传递到另一个AEM Forms服务操作,并使用这些数据创建PDF文档。
在阅读本内容之前,建议您对处理提交的表单有一定的了解。 处理提交的Forms中介绍了一些概念,例如表单设计和提交的XML数据之间的关系。
请考虑以下涉及三种AEM Forms服务的工作流:
下图提供了此工作流的可视表示形式。
用户从客户端Web浏览器提交表单后,非交互式PDF文档将存储在Content Services中(已弃用)。 下图显示了一个PDF文档,该文档存储在Content Services中(已弃用)。
要创建具有提交的XML数据的非交互式PDF文档,并将其存储在Content Services的PDF文档中(已弃用),请执行以下任务:
包括项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。
创建Forms、输出和文档管理对象
在以编程方式执行Forms服务API操作之前,请先创建Forms客户端API对象。 同样,由于此工作流调用输出和文档管理服务,因此请创建输出客户端API对象和文档管理客户端API对象。
使用Forms服务检索表单数据
检索提交到Forms服务的表单数据。 您可以处理提交的数据以满足业务要求。 例如,可以将表单数据存储到企业数据库中。 但是,要创建非交互式PDF文档,表单数据将传递到Output服务。
使用Output服务创建非交互式PDF文档。
使用Output服务创建基于表单设计和XML表单数据的非交互式PDF文档。 在工作流中,将从Forms服务中检索表单数据。
使用PDF管理服务将文档表单存储在Content Services(已弃用)中
使用文档管理服务API在Content Services中存储PDF文档(已弃用)。
另请参阅
使用Forms、Output和Document Management API (Java)创建包含提交的XML数据的PDF文档:
包括项目文件
在Java项目的类路径中包含客户端JAR文件,如adobe-forms-client.jar、adobe-output-client.jar和adobe-contentservices-client.jar。
创建Forms、输出和文档管理对象
ServiceClientFactory
包含连接属性的对象。FormsServiceClient
对象,使用它的构造函数传递 ServiceClientFactory
对象。OutputClient
对象,使用它的构造函数传递 ServiceClientFactory
对象。DocumentManagementServiceClientImpl
对象,使用它的构造函数传递 ServiceClientFactory
对象。使用Forms服务检索表单数据
调用 FormsServiceClient
对象的 processFormSubmission
方法,并传递以下值:
com.adobe.idp.Document
包含表单数据的对象。CONTENT_TYPE
环境变量。 例如,要处理XML数据,请为此参数指定以下字符串值: CONTENT_TYPE=text/xml
.HTTP_USER_AGENT
标头值,例如 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
.RenderOptionsSpec
存储运行时选项的对象。此 processFormSubmission
方法返回 FormsResult
包含表单提交结果的对象。
确定Forms服务是否通过调用 FormsResult
对象的 getAction
方法。 如果此方法返回值 0
,则数据已准备好处理。
通过创建 com.adobe.idp.Document
对象 FormsResult
对象的 getOutputContent
方法。 (此对象包含可以发送到Output服务的表单数据。)
创建 java.io.InputStream
对象 java.io.DataInputStream
构造函数并传递 com.adobe.idp.Document
对象。
创建 org.w3c.dom.DocumentBuilderFactory
对象(通过调用静态 org.w3c.dom.DocumentBuilderFactory
对象的 newInstance
方法。
创建 org.w3c.dom.DocumentBuilder
对象 org.w3c.dom.DocumentBuilderFactory
对象的 newDocumentBuilder
方法。
创建 org.w3c.dom.Document
对象 org.w3c.dom.DocumentBuilder
对象的 parse
方法和传递 java.io.InputStream
对象。
检索XML文档中每个节点的值。 完成此任务的一种方法是创建接受两个参数的自定义方法: org.w3c.dom.Document
对象以及要检索其值的节点的名称。 此方法返回表示节点值的字符串值。 在此过程后的代码示例中,调用此自定义方法 getNodeText
. 显示了该方法的主体。
使用Output服务创建非交互式PDF文档。
PDF通过调用 OutputClient
对象的 generatePDFOutput
方法,并传递以下值:
TransformationFormat
枚举值。 要生成PDF单据,请指定 TransformationFormat.PDF
.PDFOutputOptionsSpec
包含PDF运行时选项的对象。RenderOptionsSpec
包含渲染运行时选项的对象。com.adobe.idp.Document
包含要与表单设计合并的数据的XML数据源的对象。 确保此对象由 FormsResult
对象的 getOutputContent
方法。generatePDFOutput
方法返回 OutputResult
包含操作结果的对象。OutputResult
对象的 getGeneratedDoc
方法。 此方法会返回 com.adobe.idp.Document
表示非交互式PDF文档的实例。使用PDF管理服务将文档表单存储在Content Services(已弃用)中
通过调用 DocumentManagementServiceClientImpl
对象的 storeContent
方法,并传递以下值:
SpacesStore
. 此值是必需参数。/Company Home/Test Directory
)。 此值是必需参数。MortgageForm.pdf
)。 此值是必需参数。{https://www.alfresco.org/model/content/1.0}content
. 此值是必需参数。com.adobe.idp.Document
表示内容的对象。 此值是必需参数。UTF-8
)。 此值是必需参数。UpdateVersionType
指定如何处理版本信息的枚举值(例如, UpdateVersionType.INCREMENT_MAJOR_VERSION
以递增内容版本。 )此值是必需参数。java.util.List
指定与内容相关的方面的实例。 此值是一个可选参数,您可以指定 null
.java.util.Map
存储内容属性的对象。此 storeContent
方法返回 CRCResult
描述内容的对象。 使用 CRCResult
对象,例如,您可以获取内容的唯一标识符值。 要执行此任务,请调用 CRCResult
对象的 getNodeUuid
方法。
另请参阅