步骤摘要

要呈现基于片段的表单,请执行以下任务:

  1. 包括项目文件。
  2. 创建Forms客户端API对象。
  3. 指定URI值。
  4. 呈现表单。
  5. 将表单数据流写入客户端Web浏览器。

包含项目文件

在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。

创建Forms客户端API对象

您必须先创建Forms服务客户端,然后才能以编程方式执行Forms服务客户端API操作。

指定URI值

要成功呈现基于片段的表单,您必须确保Forms服务能够找到表单和表单设计引用的片段(XDP文件)。 例如,假设表单名为PO.xdp,并且此表单使用名为FooterUS.xdp和FooterCanada.xdp的两个片段。 在这种情况下,Forms服务必须能够找到所有三个XDP文件。

您可以通过将表单放置在一个位置而将片段放置在另一个位置来组织表单及其片段,也可以将所有XDP文件放置在同一位置。 在本节中,假设所有XDP文件都在AEM Forms存储库中。 有关将XDP文件放入AEM Forms存储库的信息,请参阅写入资源

呈现基于片段的表单时,必须仅引用表单本身,而不引用片段。 例如,您必须引用PO.xdp,而不是FooterUS.xdp或FooterCanada.xdp。 确保将片段放置在Forms服务可以找到它们的位置。

渲染表单

基于片段的表单可以以与非片段表单相同的方式呈现。 也就是说,您可以将表单渲染为PDF、HTML或表单参考线(已弃用)。 本节中的示例将基于片段的表单渲染为交互式PDF表单。 (请参阅渲染交互式PDF forms。)

将表单数据流写入客户端Web浏览器

Forms服务渲染表单时,会返回一个您必须写入客户端Web浏览器的表单数据流。 在写入客户端Web浏览器时,该表单对用户可见。

另请参阅

使用Java API呈现基于片段的表单

使用Web服务API呈现基于片段的表单

包括AEM Forms Java库文件

设置连接属性

Forms服务API快速启动

呈现交互式PDF forms

创建可渲染Forms的Web应用程序

使用Java API呈现基于片段的表单

使用Forms API (Java)呈现基于片段的表单:

  1. 包含项目文件

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

  2. 创建Forms客户端API对象

    • 创建包含连接属性的ServiceClientFactory对象。
    • 使用构造函数创建FormsServiceClient对象并传递ServiceClientFactory对象。
  3. 指定URI值

    • 使用构造函数创建存储URI值的URLSpec对象。
    • 调用URLSpec对象的setApplicationWebRoot方法,并传递表示应用程序的Web根的字符串值。
    • 调用URLSpec对象的setContentRootURI方法,并传递一个指定内容根URI值的字符串值。 确保表单设计和片段位于内容根URI中。 否则,Forms服务会引发异常。 要引用存储库,请指定repository://
    • 调用URLSpec对象的setTargetURL方法,并传递一个字符串值,该值指定将表单数据发布到的目标URL值。 如果您在表单设计中定义目标URL,则可以传递空字符串。 您还可以指定将表单发送到哪个URL来执行计算。
  4. 渲染表单

    调用FormsServiceClient对象的renderPDFForm方法并传递以下值:

    • 一个字符串值,它指定窗体设计名称,包括文件扩展名。 如果您引用的表单设计是Forms应用程序的一部分,请确保指定完整路径,如Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
    • 包含要与表单合并的数据的com.adobe.idp.Document对象。 如果不想合并数据,请传递一个空的com.adobe.idp.Document对象。
    • 存储运行时选项的PDFFormRenderSpec对象。
    • 一个URLSpec对象,它包含Forms服务基于片段呈现表单所需的URI值。
    • 存储文件附件的java.util.HashMap对象。 这是一个可选参数,如果您不想将文件附加到表单,则可以指定null

    renderPDFForm方法返回的FormsResult对象包含必须写入客户端Web浏览器的表单数据流。

  5. 将表单数据流写入客户端Web浏览器

    • 通过调用FormsResult对象的getOutputContent方法创建com.adobe.idp.Document对象。
    • 通过调用其getContentType方法获取com.adobe.idp.Document对象的内容类型。
    • 通过调用其setContentType方法并传递com.adobe.idp.Document对象的内容类型来设置javax.servlet.http.HttpServletResponse对象的内容类型。
    • 通过调用javax.servlet.http.HttpServletResponse对象的getOutputStream方法,创建用于将表单数据流写入客户端Web浏览器的javax.servlet.ServletOutputStream对象。
    • 通过调用com.adobe.idp.Document对象的getInputStream方法创建java.io.InputStream对象。
    • 通过调用InputStream对象的read方法并将该字节数组作为参数传递,创建字节数组以表单数据流填充该字节数组。
    • 调用javax.servlet.ServletOutputStream对象的write方法将表单数据流发送到客户端Web浏览器。 将字节数组传递给write方法。