已启用渲染权限的Forms

Forms服务可以呈现对其应用了使用权限的表单。 使用权限与默认在Acrobat中但在Adobe Reader中不可用的功能有关,例如向表单添加注释或填写表单字段并保存表单的功能。 对其应用了使用权限的Forms称为支持权限的表单。 在Adobe Reader中打开启用权限的表单的用户可以执行为该表单启用的操作。

要对表单应用使用权限,Acrobat Reader DC扩展服务必须是AEM表单安装的一部分。 此外,您必须具有有效的凭据,才能将使用权限应用于PDF文档。 也就是说,您必须正确配置Acrobat Reader DC扩展服务,然后才能渲染启用权限的表单。 (请参阅关于Acrobat Reader DC扩展服务。)

注意

要渲染包含使用权限的表单,必须使用XDP文件作为输入,而不是PDF文件。 如果您使用PDF文件作为输入,表单仍会呈现;但是,它不是启用权限的表单。

注意

指定以下使用权限时,无法用XML数据预填充表单:enableCommentsenableCommentsOnlineenableEmbeddedFilesenableDigitalSignatures。 (请参阅使用可流式布局预填充Forms。)

注意

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

步骤的摘要

要渲染启用权限的表单,请执行以下任务:

  1. 包括项目文件。
  2. 创建Forms Client API对象。
  3. 设置使用权限运行时选项。
  4. 渲染启用权限的表单。
  5. 将启用权限的表单写入客户端Web浏览器。

包括项目文件

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

创建Forms Client API对象

在以编程方式执行Forms服务客户端API操作之前,必须创建Forms服务客户端。

设置使用权限运行时选项

必须设置使用权限运行时选项才能渲染启用权限的表单。 您还必须指定用于向表单应用使用权限的凭据的别名。 指定别名值后,您可以指定每个用于表单的使用权限。

渲染启用权限的表单

要渲染启用了权限的表单,请使用与渲染没有使用权限的表单相同的应用程序逻辑。 唯一的区别是必须确保应用程序逻辑中包含使用权限运行时选项。

注意

使用Forms Web服务API渲染启用权限的表单时,无法将文件附加到表单。

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

当Forms服务呈现一个启用权限的表单时,它将返回一个您必须写入客户端Web浏览器的表单数据流。 写入客户端Web浏览器后,用户就可以看到表单。 在Adobe Reader中查看启用权限的表单的用户可以执行为该表单启用的操作。

另请参阅

使用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 Client API对象

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

    • 使用ReaderExtensionSpec对象的构造函数创建对象。
    • 通过调用ReaderExtensionSpec对象的setReCredentialAlias方法来指定凭据的别名,并指定表示别名值的字符串值。
    • 通过调用属于ReaderExtensionSpec对象的相应方法来设置每个使用权限。 但是,只有在引用的凭据允许您设置使用权限时,才可以设置此权限。 也就是说,如果凭据不允许您设置,则无法设置使用权限。 例如。 要设置使用户能够填写表单字段并保存表单的使用权限,请调用ReaderExtensionSpec对象的setReFillIn方法并传递true
    注意

    不必调用ReaderExtensionSpec对象的setReCredentialPassword方法。 Forms服务不使用此方法。

  4. 渲染启用权限的表单

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

    • 一个字符串值,它指定表单设计名称,包括文件扩展名。 如果引用的表单设计是Forms应用程序的一部分,请确保指定完整路径,如Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
    • com.adobe.idp.Document对象,其中包含要与表单合并的数据。 如果不想合并数据,请传递空com.adobe.idp.Document对象。
    • 存储运行时选项的PDFFormRenderSpec对象。
    • 存储使用权限运行时选项的ReaderExtensionSpec对象。
    • URLSpec对象,其中包含Forms服务所需的URI值。

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

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

    • 通过调用FormsResult对象's 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方法。

另请参阅

快速开始(SOAP模式):使用Java API渲染支持权限的表单

包括AEM Forms Java库文件

设置连接属性

使用Web服务API渲染启用权限的表单

使用Forms API(Web服务)渲染启用权限的表单:

  1. 包括项目文件

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

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

  3. 设置使用权限运行时选项

    • 使用ReaderExtensionSpec对象的构造函数创建对象。
    • 通过调用ReaderExtensionSpec对象的setReCredentialAlias方法来指定凭据的别名,并指定表示别名值的字符串值。
    • 通过调用属于ReaderExtensionSpec对象的相应方法来设置每个使用权限。 但是,只有在引用的凭据允许您设置使用权限时,才可以设置此权限。 也就是说,如果凭据不允许您设置,则无法设置使用权限。 要设置使用户能够填写表单字段并保存表单的使用权限,请调用ReaderExtensionSpec对象的setReFillIn方法并传递true
  4. 渲染启用权限的表单

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

    • 一个字符串值,它指定表单设计名称,包括文件扩展名。 如果引用的表单设计是Forms应用程序的一部分,请确保指定完整路径,如Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
    • BLOB对象,其中包含要与表单合并的数据。 如果不希望将数据与表单合并,则必须传递基于空XML数据源的BLOB对象。 不能传递BLOB对象为null;否则,将引发异常。
    • 存储运行时选项的PDFFormRenderSpec对象。
    • 存储使用权限运行时选项的ReaderExtensionSpec对象。
    • URLSpec对象,其中包含Forms服务所需的URI值。

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

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

    • 通过调用FormsResult对象的getOutputContent方法,创建一个包含表单数据的BLOB对象。
    • 通过调用getContentType方法获取BLOB对象的内容类型。
    • 通过调用setContentType方法并传递BLOB对象的内容类型,设置javax.servlet.http.HttpServletResponse对象的内容类型。
    • 通过调用javax.servlet.http.HttpServletResponse对象的getOutputStream方法,创建一个用于将表单数据流写入客户端Web浏览器的javax.servlet.ServletOutputStream对象。
    • 创建一个字节数组,并通过调用BLOB对象的getBinaryData方法填充它。 此任务将FormsResult对象的内容分配给字节数组。
    • 调用javax.servlet.http.HttpServletResponse对象的write方法,将表单数据流发送到客户端Web浏览器。 将字节数组传递给write方法。

另请参阅

启用渲染权限的Forms

使用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