使用提交的XML数据创建PDF单据

本文档中的示例和示例仅适用于AEM Forms on JEE环境。

使用提交的XML数据创建PDF单据

使用户能够填写交互式表单的基于Web的应用程序要求将数据提交回服务器。 使用Forms服务,您可以检索用户输入交互式表单的表单数据。 然后,您可以将表单数据传递到另一个AEM Forms服务操作,并使用这些数据创建PDF文档。

注意

在阅读本内容之前,建议您对处理提交的表单有一定的了解。 处理提交的Forms中介绍了一些概念,例如表单设计和提交的XML数据之间的关系。

请考虑以下涉及三种AEM Forms服务的工作流:

  • 用户将XML数据从基于Web的应用程序提交到Forms服务。
  • Forms服务用于处理提交的表单并提取表单字段。 可以处理表单数据。 例如,可以将数据提交到企业数据库。
  • 表单数据会发送到Output服务以创建非交互式PDF文档。
  • 非交互式PDF文档存储在Content Services中(已弃用)。

下图提供了此工作流的可视表示形式。

cd_cd_finsrv_architecture_xml_pdf1

用户从客户端Web浏览器提交表单后,非交互式PDF文档将存储在Content Services中(已弃用)。 下图显示了一个PDF文档,该文档存储在Content Services中(已弃用)。

cd_cd_cs_gui

步骤摘要

要创建具有提交的XML数据的非交互式PDF文档,并将其存储在Content Services的PDF文档中(已弃用),请执行以下任务:

  1. 包括项目文件。
  2. 创建Forms、输出和文档管理对象。
  3. 使用Forms服务检索表单数据。
  4. 使用Output服务创建非交互式PDF文档。
  5. 使用文档管理服务将PDF表单存储在Content Services中(已弃用)。

包括项目文件

在开发项目中包含必要的文件。 如果要使用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文档(已弃用)。

另请参阅

包括AEM Forms Java库文件

设置连接属性

Forms服务API快速启动

使用Java API创建包含已提交XML数据的PDF文档

使用Forms、Output和Document Management API (Java)创建包含提交的XML数据的PDF文档:

  1. 包括项目文件

    在Java项目的类路径中包含客户端JAR文件,如adobe-forms-client.jar、adobe-output-client.jar和adobe-contentservices-client.jar。

  2. 创建Forms、输出和文档管理对象

    • 创建 ServiceClientFactory 包含连接属性的对象。
    • 创建 FormsServiceClient 对象,使用它的构造函数传递 ServiceClientFactory 对象。
    • 创建 OutputClient 对象,使用它的构造函数传递 ServiceClientFactory 对象。
    • 创建 DocumentManagementServiceClientImpl 对象,使用它的构造函数传递 ServiceClientFactory 对象。
  3. 使用Forms服务检索表单数据

    • 调用 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).
      • A 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. 显示了该方法的主体。

  4. 使用Output服务创建非交互式PDF文档。

    PDF通过调用 OutputClient 对象的 generatePDFOutput 方法,并传递以下值:

    • A TransformationFormat 枚举值。 要生成PDF单据,请指定 TransformationFormat.PDF.
    • 一个字符串值,它指定表单设计的名称。 确保表单设计与从Forms服务检索的表单数据兼容。
    • 一个字符串值,它指定表单设计所在的内容根。
    • A PDFOutputOptionsSpec 包含PDF运行时选项的对象。
    • A RenderOptionsSpec 包含渲染运行时选项的对象。
    • com.adobe.idp.Document 包含要与表单设计合并的数据的XML数据源的对象。 确保此对象由 FormsResult 对象的 getOutputContent 方法。
    • generatePDFOutput 方法返回 OutputResult 包含操作结果的对象。
    • PDF通过调用 OutputResult 对象的 getGeneratedDoc 方法。 此方法会返回 com.adobe.idp.Document 表示非交互式PDF文档的实例。
  5. 使用PDF管理服务将文档表单存储在Content Services(已弃用)中

    通过调用 DocumentManagementServiceClientImpl 对象的 storeContent 方法,并传递以下值:

    • 一个字符串值,它指定添加内容的存储。 默认存储为 SpacesStore. 此值是必需参数。
    • 一个字符串值,指定添加内容的空间的完全限定路径(例如, /Company Home/Test Directory)。 此值是必需参数。
    • 表示新内容的节点名称(例如, MortgageForm.pdf)。 此值是必需参数。
    • 指定节点类型的字符串值。 要添加新内容(如PDF文件),请指定 {https://www.alfresco.org/model/content/1.0}content. 此值是必需参数。
    • A com.adobe.idp.Document 表示内容的对象。 此值是必需参数。
    • 指定编码值的字符串值(例如, UTF-8)。 此值是必需参数。
    • An UpdateVersionType 指定如何处理版本信息的枚举值(例如, UpdateVersionType.INCREMENT_MAJOR_VERSION 以递增内容版本。 )此值是必需参数。
    • A java.util.List 指定与内容相关的方面的实例。 此值是一个可选参数,您可以指定 null.
    • A java.util.Map 存储内容属性的对象。

    storeContent 方法返回 CRCResult 描述内容的对象。 使用 CRCResult 对象,例如,您可以获取内容的唯一标识符值。 要执行此任务,请调用 CRCResult 对象的 getNodeUuid 方法。

另请参阅

包括AEM Forms Java库文件

设置连接属性

在此页面上