本文档中的示例和示例仅适用于JEE环境中的AEM Forms。
使用户能够填写交互式表单的基于Web的应用程序需要将数据提交回服务器。 使用Forms服务,您可以检索用户在交互式表单中输入的表单数据。 然后,您可以将表单数据传递到另一个AEM Forms服务操作,并使用该数据创建PDF文档。
在阅读此内容之前,建议您对处理提交的表单有更深入的了解。 表单设计与提交的XML数据之间的关系等概念在处理提交的Forms中进行了介绍。
请考虑以下涉及三项AEM Forms服务的工作流:
下图提供了此工作流的可视化表示形式。
用户从客户端Web浏览器提交表单后,非交互式PDF文档将存储在Content Services中(已弃用)。 下图显示了存储在Content Services中的PDF文档(已弃用)。
要使用提交的XML数据创建非交互式PDF文档并将其存储在Content Services的PDF文档中(已弃用),请执行以下任务:
包含项目文件
在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必需的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。
创建Forms、输出和文档管理对象
在以编程方式执行Forms服务API操作之前,请先创建Forms客户端API对象。 同样,由于此工作流会调用输出和文档管理服务,因此请创建输出客户端API对象和文档管理客户端API对象。
使用Forms服务检索表单数据
检索已提交到Forms服务的表单数据。 您可以处理提交的数据以满足您的业务要求。 例如,您可以将表单数据存储在企业数据库中。 但是,要创建非交互式PDF文档,表单数据将传递到输出服务。
使用输出服务创建非交互式PDF文档。
使用输出服务创建基于表单设计和XML表单数据的非交互式PDF文档。 在工作流中,将从Forms服务中检索表单数据。
使用文档管理服务在内容服务中存储PDF表单(已弃用)
使用文档管理服务API在Content Services中存储PDF文档(已弃用)。
另请参阅
使用Forms、输出和文档管理API(Java)创建包含已提交XML数据的PDF文档:
包含项目文件
将客户端JAR文件(如adobe-forms-client.jar、adobe-output-client.jar和adobe-contentservices-client.jar)包含到您Java项目的类路径中。
创建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
对象,其中包含表单提交的结果。
通过调用FormsResult
对象的getAction
方法,确定Forms服务是否已完成表单数据的处理。 如果此方法返回值0
,则数据可供处理。
通过调用FormsResult
对象的getOutputContent
方法,创建com.adobe.idp.Document
对象以检索表单数据。 (此对象包含可发送到输出服务的表单数据。)
通过调用java.io.DataInputStream
构造函数并传递com.adobe.idp.Document
对象来创建java.io.InputStream
对象。
通过调用静态org.w3c.dom.DocumentBuilderFactory
对象的newInstance
方法创建org.w3c.dom.DocumentBuilderFactory
对象。
通过调用org.w3c.dom.DocumentBuilderFactory
对象的newDocumentBuilder
方法创建org.w3c.dom.DocumentBuilder
对象。
通过调用org.w3c.dom.DocumentBuilder
对象的parse
方法并传递java.io.InputStream
对象来创建org.w3c.dom.Document
对象。
检索XML文档中每个节点的值。 完成此任务的一种方法是创建一个接受两个参数的自定义方法:org.w3c.dom.Document
对象以及要检索其值的节点的名称。 此方法会返回表示节点值的字符串值。 在此过程后面的代码示例中,此自定义方法称为getNodeText
。 此方法的正文如下。
使用输出服务创建非交互式PDF文档。
通过调用OutputClient
对象的generatePDFOutput
方法并传递以下值来创建PDF文档:
TransformationFormat
枚举值。 要生成PDF文档,请指定TransformationFormat.PDF
。PDFOutputOptionsSpec
对象。RenderOptionsSpec
对象。com.adobe.idp.Document
对象,其中包含要与表单设计合并的数据的XML数据源。 确保此对象是由FormsResult
对象的getOutputContent
方法返回的。generatePDFOutput
方法返回一个包含操作结果的OutputResult
对象。OutputResult
对象的getGeneratedDoc
方法来检索非交互式PDF文档。 此方法会返回一个com.adobe.idp.Document
实例,该实例表示非交互式PDF文档。使用文档管理服务在内容服务中存储PDF表单(已弃用)
通过调用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
方法。
另请参阅