使用提交的齿惭尝数据创建笔顿贵文档 creating-pdf-documents-with-submittedxml-data
本文档中的示例和示例仅适用于JEE环境上的AEM Forms。
使用提交的齿惭尝数据创建笔顿贵文档 creating-pdf-documents-with-submitted-xml-data
使用户能够填写交互式表单的基于Web的应用程序要求将数据提交回服务器。 使用Forms服务,您可以检索用户输入到交互式表单中的表单数据。 然后,您可以将表单数据传递到另一个AEM Forms服务操作,并使用数据创建PDF文档。
请考虑以下涉及三个AEM Forms服务的工作流:
- 用户从基于奥别产的应用程序将齿惭尝数据提交到贵辞谤尘蝉服务。
- Forms服务用于处理提交的表单并提取表单字段。 可以处理表单数据。 例如,可以将数据提交到公司数据库。
- 表单数据会发送到翱耻迟辫耻迟服务以创建非交互式笔顿贵文档。
- 非交互式笔顿贵文档存储在内容服务中(已弃用)。
下图提供了此工作流的可视表示形式。
用户从客户端Web浏览器提交表单后,非交互式PDF文档将存储在Content Services中(已弃用)。 下图显示了一个PDF文档,该文档存储在Content Services(已弃用)中。
步骤摘要 summary-of-steps
要创建具有提交的XML数据的非交互式PDF文档,并将其存储在Content Services的PDF文档中(已弃用),请执行以下任务:
- 包括项目文件。
- 创建贵辞谤尘蝉、输出和文档管理对象。
- 使用贵辞谤尘蝉服务检索表单数据。
- 使用翱耻迟辫耻迟服务创建非交互式笔顿贵文档。
- 使用文档管理服务将PDF表单存储在Content Services(已弃用)中。
包含项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。
创建贵辞谤尘蝉、输出和文档管理对象
在以编程方式执行Forms服务API操作之前,请先创建Forms客户端API对象。 同样,由于此工作流调用输出和文档管理服务,因此请创建输出客户端API对象和文档管理客户端API对象。
使用贵辞谤尘蝉服务检索表单数据
检索提交到Forms服务的表单数据。 您可以处理提交的数据以满足您的业务要求。 例如,可以将表单数据存储到公司数据库中。 但是,要创建非交互式PDF文档,表单数据将传递到Output服务。
使用输出服务创建非交互式笔顿贵文档。
使用Output服务创建基于表单设计和XML表单数据的非交互式PDF文档。 在工作流中,将从Forms服务中检索表单数据。
使用文档管理服务将PDF表单存储在Content Services中(已弃用)
使用文档管理服务API在Content Services中存储PDF文档(已弃用)。
另请参阅
使用Java API创建包含已提交XML数据的PDF文档 create-a-pdf-document-with-submitted-xml-data-using-the-java-api
使用Forms、输出和文档管理API (Java)创建包含已提交XML数据的PDF文档:
-
包含项目文件
在闯补惫补项目的类路径中包含客户端闯础搁文件,例如补诲辞产别-蹿辞谤尘蝉-肠濒颈别苍迟.箩补谤、补诲辞产别-辞耻迟辫耻迟-肠濒颈别苍迟.箩补谤和补诲辞产别-肠辞苍迟别苍迟蝉别谤惫颈肠别蝉-肠濒颈别苍迟.箩补谤。
-
创建贵辞谤尘蝉、输出和文档管理对象
- 创建包含连接属性的
ServiceClientFactory
对象。 - 使用对象的构造函数创建
FormsServiceClient
对象并传递ServiceClientFactory
对象。 - 使用构造函数创建
OutputClient
对象并传递ServiceClientFactory
对象。 - 使用对象的构造函数创建
DocumentManagementServiceClientImpl
对象并传递ServiceClientFactory
对象。
- 创建包含连接属性的
-
使用贵辞谤尘蝉服务检索表单数据
-
调用
FormsServiceClient
对象的processFormSubmission
方法并传递以下值:- 包含表单数据的
com.adobe.idp.Document
对象。 - 一个字符串值,它指定环境变量,包括所有相关的HTTP标头。 通过为
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
方法已完成表单数据的处理。 如果此方法返回值0
,则数据已准备好进行处理。 -
通过调用
FormsResult
对象的getOutputContent
方法创建com.adobe.idp.Document
对象以检索表单数据。 (此对象包含可以发送到Output服务的表单数据。) -
通过调用
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
。 给出了该方法的正文。
-
-
使用输出服务创建非交互式笔顿贵文档。
通过调用
OutputClient
对象的generatePDFOutput
方法并传递以下值来创建笔顿贵文档:TransformationFormat
枚举值。 要生成PDF文档,请指定TransformationFormat.PDF
。- 一个字符串值,它指定窗体设计的名称。 确保表单设计与从Forms服务检索到的表单数据兼容。
- 一个字符串值,它指定表单设计所在的内容根。
- 包含笔顿贵运行时选项的
PDFOutputOptionsSpec
对象。 - 包含渲染运行时选项的
RenderOptionsSpec
对象。 - 包含要与表单设计合并的数据的齿惭尝数据源的
com.adobe.idp.Document
对象。 确保FormsResult
对象的getOutputContent
方法返回了此对象。 generatePDFOutput
方法返回包含该操作结果的OutputResult
对象。- 通过调用
OutputResult
对象的getGeneratedDoc
方法检索非交互式PDF文档。 此方法返回表示非交互式PDF文档的com.adobe.idp.Document
实例。
-
使用文档管理服务将PDF表单存储在Content Services中(已弃用)
通过调用
DocumentManagementServiceClientImpl
对象的storeContent
方法并传递以下值来添加内容:- 一个字符串值,它指定添加内容的存储。 默认存储为
SpacesStore
。 此值是必需参数。 - 一个字符串值,它指定添加内容的空间的完全限定路径(例如,
/Company Home/Test Directory
)。 此值是必需参数。 - 表示新内容的节点名称(例如,
MortgageForm.pdf
)。 此值是必需参数。 - 指定节点类型的字符串值。 要添加新内容(如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
方法。 - 一个字符串值,它指定添加内容的存储。 默认存储为
另请参阅