本文档中的示例和示例仅适用于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 Client API对象。 同样,由于此工作流调用输出和文档管理服务,因此请同时创建输出客户端API对象和文档管理客户端API对象。
使用Forms服务检索表单数据
检索已提交到Forms服务的表单数据。 您可以处理提交的数据以满足您的业务需求。 例如,您可以将表单数据存储在企业数据库中。 但是,要创建非交互式PDF文档,表单数据将传递到输出服务。
使用“输出”服务创建非交互式PDF文档。
使用“输出”服务创建基于表单设计和XML表单文档的非交互式PDF文档。 在工作流中,从Forms服务检索表单数据。
使用文档管理服务将PDF表单存储在Content Services(已弃用)中
使用文档管理服务API在Content Services中存储PDF文档(已弃用)。
另请参阅
使用Forms、输出和文档管理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
对象。
通过调用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表单存储在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
方法。
另请参阅