步骤摘要

要根据片段渲染表单,请执行以下任务:

  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 Service 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值

    • 创建 URLSpec 使用其构造函数存储URI值的对象。
    • 调用 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.
    • A com.adobe.idp.Document 包含要与表单合并的数据的对象。 如果不想合并数据,请传递一个空 com.adobe.idp.Document 对象。
    • A PDFFormRenderSpec 用于存储运行时选项的对象。
    • A URLSpec 包含Forms服务根据片段渲染表单所需URI值的对象。
    • A java.util.HashMap 用于存储文件附件的对象。 这是一个可选参数,您可以指定 null 如果您不想将文件附加到表单。

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

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

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