启用渲染权限的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客户端API对象。
  3. 设置使用权限运行时选项。
  4. 呈现启用权限的表单。
  5. 将启用权限的表单写入客户端Web浏览器。

包含项目文件

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

创建Forms客户端API对象

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

设置使用权限运行时选项

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

渲染启用权限的表单

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

注意

使用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客户端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方法,创建一个javax.servlet.ServletOutputStream对象,用于将表单数据流写入客户端Web浏览器。
    • 通过调用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客户端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方法,创建一个javax.servlet.ServletOutputStream对象,用于将表单数据流写入客户端Web浏览器。
    • 创建一个字节数组,并通过调用BLOB对象的getBinaryData方法来填充该数组。 此任务将FormsResult对象的内容分配给字节数组。
    • 调用javax.servlet.http.HttpServletResponse对象的write方法,将表单数据流发送到客户端Web浏览器。 将字节数组传递到write方法。

另请参阅

启用渲染权限的Forms

使用Base64编码调用AEM Forms

在此页面上