优化Forms服务的性能

优化Forms服务的性能

呈现表单时,您可以设置运行时选项,以优化Forms服务的性能。 您可以执行的另一个任务是将XDP文件存储在存储库中,以提高Forms服务的性能。 但是,本节不说明如何执行此任务。 (请参阅使用Java客户端库调用服务。)

注意

有关Forms服务的详细信息,请参阅AEM Forms的服务参考。

步骤的摘要

要在呈现表单时优化Forms服务的性能,请执行以下任务:

  1. 包括项目文件。
  2. 创建Forms Client API对象。
  3. 设置性能运行时选项。
  4. 渲染表单。
  5. 将表单数据流写入客户端Web浏览器。

包括项目文件

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

创建Forms Client API对象

在以编程方式执行Forms服务客户端API操作之前,必须创建Forms服务客户端。 如果您使用Java API,请创建FormsServiceClient对象。 如果您使用Forms Web服务API,请创建FormsService对象。

设置性能运行时选项

您可以设置以下性能运行时选项以提高Forms服务的性能:

  • 表单缓存:可以在服务器缓存中缓存呈现为PDF的表单。每个表单在首次生成后都进行缓存。 在随后的渲染中,如果缓存的表单比表单设计的时间戳新,则从缓存中检索表单。 通过缓存表单,可提高Forms服务的性能,因为它不必从存储库检索表单设计。
  • 表单参考线(已弃用)的渲染时间可能比其他转换类型要长。 建议您缓存表单指南(已弃用)以提高性能。
  • 独立选项:如果您不需要Forms服务执行服务器端计算,可以将“单机”选项设置为,这 true会导致在不提供状态信息的情况下呈现表单。如果您希望向最终用户呈现交互式表单,然后在表单中输入信息并将表单提交回Forms服务,则需要状态信息。 然后,Forms服务执行计算操作并将表单呈现给用户,结果显示在表单中。 如果将没有状态信息的表单提交回Forms服务,则只有XML数据可用,而不执行服务器端计算。
  • 线性化PDF:将线性化的PDF文件组织起来,以在网络环境中实现有效的增量访问。PDF文件在所有方面都是有效的PDF,并且与所有现有查看器和其他PDF应用程序兼容。 即,可在下载线性化的PDF时查看它。
  • 当在客户端上渲染PDF表单时,此选项不会提高性能。
  • GuideRSL选项:启用使用运行时共享库生成表单指南(已弃用)。这意味着第一个请求将下载较小的SWF文件以及存储在浏览器缓存中的较大的共享库。 有关详细信息,请参阅Flex文档中的RSL。
  • 您还可以通过在客户端上渲染表单来提高Forms服务的性能。 (请参阅在Client上渲染Forms。)

渲染表单

要在设置性能选项后渲染表单,请使用与渲染没有性能选项的表单相同的应用程序逻辑。

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

在Forms服务呈现表单后,它将返回一个必须写入客户端Web浏览器的表单数据流。 写入到客户端Web浏览器时,用户可以看到表单。

另请参阅

包括AEM Forms Java库文件

设置连接属性

Forms Service API快速开始

渲染交互式PDF forms

将Forms渲染为HTML

创建渲染Forms的Web 应用程序

使用Java API优化性能

使用Forms API(Java)渲染性能优化的表单:

  1. 包括项目文件

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

  2. 创建Forms Client API对象

    • 创建包含连接属性的ServiceClientFactory对象。
    • 使用FormsServiceClient对象的构造函数并传递ServiceClientFactory对象,创建对象。
  3. 设置性能运行时选项

    • 使用PDFFormRenderSpec对象的构造函数创建对象。
    • 通过调用PDFFormRenderSpec对象的setCacheEnabled方法并传递true来设置表单缓存选项。
    • 通过调用PDFFormRenderSpec对象的setLinearizedPDF方法并传递true.来设置线性化选项
  4. 渲染表单

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

    • 一个字符串值,它指定表单设计名称,包括文件扩展名。
    • com.adobe.idp.Document对象,其中包含要与表单合并的数据。 如果不想合并数据,请传递空com.adobe.idp.Document对象。
    • 一个PDFFormRenderSpec对象,用于存储运行时选项以提高性能。
    • URLSpec对象,其中包含Forms服务所需的URI值。
    • 存储文件附件的java.util.HashMap对象。 这是可选参数,如果不想将文件附加到表单,可以指定null

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

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

    • 创建一个javax.servlet.ServletOutputStream对象,用于将表单数据流发送到客户端Web浏览器。
    • 通过调用FormsResult对象's getOutputContent方法创建com.adobe.idp.Document对象。
    • 通过调用com.adobe.idp.Document对象的getInputStream方法创建java.io.InputStream对象。
    • 通过调用InputStream对象的read方法并将字节数组作为参数传递,创建一个字节数组并将其填充为表单数据流。
    • 调用javax.servlet.ServletOutputStream对象的write方法,将表单数据流发送到客户端Web浏览器。 将字节数组传递给write方法。

另请参阅

快速开始(SOAP模式):使用Java API优化性能

包括AEM Forms Java库文件

设置连接属性

使用Web服务API优化性能

使用Forms API(Web服务)渲染性能优化的表单:

  1. 包括项目文件

    • 创建使用Forms服务WSDL的Java代理类。
    • 将Java代理类包含到类路径中。
  2. 创建Forms Client API对象

    创建FormsService对象并设置身份验证值。

  3. 设置性能运行时选项

    • 使用PDFFormRenderSpec对象的构造函数创建对象。
    • 通过调用PDFFormRenderSpec对象的setCacheEnabled方法并传递true来设置表单缓存选项。
    • 通过调用PDFFormRenderSpec对象的setStandAlone方法并传递true来设置独立选项。
    • 通过调用PDFFormRenderSpec对象的setLinearizedPDF方法并传递true来设置线性化选项。
  4. 渲染表单

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

    • 一个字符串值,它指定表单设计名称,包括文件扩展名。
    • BLOB对象,其中包含要与表单合并的数据。 如果不想合并数据,请传递null
    • 存储运行时选项的PDFFormRenderSpecc对象。
    • URLSpec对象,其中包含Forms服务所需的URI值。
    • 存储文件附件的java.util.HashMap对象。 这是可选参数,如果不想将文件附加到表单,可以指定null
    • 由方法填充的空com.adobe.idp.services.holders.BLOBHolder对象。 用于存储渲染后的PDF表单。
    • 由方法填充的空javax.xml.rpc.holders.LongHolder对象。 (此参数将存储表单中的页数)。
    • 由方法填充的空javax.xml.rpc.holders.StringHolder对象。 (此参数将存储区域设置值)。
    • 将包含此操作结果的空com.adobe.idp.services.holders.FormsResultHolder对象。

    renderPDFForm方法使用必须写入客户端Web浏览器的表单数据流填充作为最后一个参数值传递的com.adobe.idp.services.holders.FormsResultHolder对象。

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

    • 通过获取com.adobe.idp.services.holders.FormsResultHolder对象的value数据成员的值,创建FormResult对象。
    • 创建一个javax.servlet.ServletOutputStream对象,用于将表单数据流发送到客户端Web浏览器。
    • 通过调用FormsResult对象的getOutputContent方法,创建一个包含表单数据的BLOB对象。
    • 创建一个字节数组,并通过调用BLOB对象的getBinaryData方法填充它。 此任务将FormsResult对象的内容分配给字节数组。
    • 调用javax.servlet.http.HttpServletResponse对象的write方法,将表单数据流发送到客户端Web浏览器。 将字节数组传递给write方法。

另请参阅

使用Base64编码调用AEM Forms

On this page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now