正在验证DDX文档

本文档中的示例和示例仅适用于JEE环境上的AEM Forms。

您可以以编程方式验证Assembler服务使用的DDX文档。 即,使用Assembler服务API,您可以确定DDX文档是否有效。 例如,如果您从先前的AEM Forms版本升级,并且希望确保您的DDX文档有效,则可以使用Assembler服务API验证它。

注意

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

注意

有关DDX文档的详细信息,请参阅Assembler Service和DDX Reference

步骤的摘要

要验证DDX文档,请执行以下任务:

  1. 包括项目文件。
  2. 创建Assembler客户端。
  3. 引用现有DDX文档。
  4. 设置运行时选项以验证DDX文档。
  5. 执行验证。
  6. 将验证结果保存在日志文件中。

包括项目文件

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

必须将以下JAR文件添加到项目的类路径中:

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-assembler-client.jar
  • adobe-utilities.jar(在JBoss上部署AEM Forms时为必需)
  • jbossall-client.jar(如果在JBoss上部署了AEM Forms,则为必需)

如果AEM Forms部署在JBoss以外的受支持的J2EE应用程序服务器上,则必须将adobe-utilities.jar和jbossall-client.jar文件替换为特定于AEM Forms部署在的J2EE应用程序服务器的JAR文件。

创建PDF Assembler客户端

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

引用现有DDX文档

要验证DDX文档,必须引用现有DDX文档。

设置运行时选项以验证DDX文档

验证DDX文档时,必须设置特定的运行时选项,这些选项指示Assembler服务验证DDX文档,而不是执行它。 此外,您还可以增加Assembler服务写入日志文件的信息量。

执行验证

在创建Assembler服务客户端、引用DDX文档并设置运行时选项后,可以调用invokeDDX操作以验证DDX文档。 验证DDX文档时,可以传递null作为映射参数(此参数通常存储汇编器执行DDX文档中指定的操作所需的PDF文档)。

如果验证失败,将引发异常,并且日志文件包含详细信息,解释了为什么DDX文档无效,可以从OperationException实例获取。 通过基本的XML解析和模式检查后,将执行针对DDX规范的验证。 DDX文档中的所有错误都在日志中指定。

将验证结果保存在日志文件中

Assembler服务返回可写入XML日志文件的验证结果。 Assembler服务写入日志文件的详细信息量取决于您设置的运行时选项。

另请参阅

使用Java API验证DDX文档

使用Web服务API验证DDX文档

包括AEM Forms Java库文件

设置连接属性

以编程方式组合PDF文档

使用Java API验证DDX文档

使用Assembler Service API(Java)验证DDX文档:

  1. 包括项目文件。

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

  2. 创建PDF Assembler客户端。

    • 创建包含连接属性的ServiceClientFactory对象。
    • 使用AssemblerServiceClient对象的构造函数并传递ServiceClientFactory对象,创建对象。
  3. 引用现有DDX文档。

    • 使用DDX文档的构造函数并传递一个指定DDX文件位置的字符串值,创建一个表示DDX文件的java.io.FileInputStream对象。
    • 使用com.adobe.idp.Document对象的构造函数并传递java.io.FileInputStream对象,创建对象。
  4. 设置运行时选项以验证DDX文档。

    • 使用AssemblerOptionSpec的构造函数创建存储运行时选项的对象。
    • 设置运行时选项,该选项指示Assembler服务通过调用AssemblerOptionSpec对象的setValidateOnly方法并传递true来验证DDX文档。
    • 通过调用AssemblerOptionSpec对象的getLogLevel方法并传递字符串值来满足您的要求,设置Assembler服务写入日志文件的信息量。 验证DDX文档时,您希望将更多信息写入日志文件,以协助验证过程。 因此,您可以传递值FINEFINER
  5. 执行验证。

    调用AssemblerServiceClient对象的invokeDDX方法并传递以下值:

    • 表示DDX文档的com.adobe.idp.Document对象。
    • 通常存储PDF文档的java.io.Map对象的值null
    • 指定运行时选项的com.adobe.livecycle.assembler.client.AssemblerOptionSpec对象。

    invokeDDX方法返回一个AssemblerResult对象,该对象包含指定DDX文档是否有效的信息。

  6. 将验证结果保存在日志文件中。

    • 创建一个java.io.File对象,并确保文件扩展名为.xml。
    • 调用AssemblerResult对象的getJobLog方法。 此方法返回包含验证信息的com.adobe.idp.Document实例。
    • 调用com.adobe.idp.Document对象的copyToFile方法,将com.adobe.idp.Document对象的内容复制到文件。
    注意

    如果DDX文档无效,则引发OperationException。 在catch语句中,可以调用OperationException对象的getJobLog方法。

另请参阅

验证DDX文档

快速开始(SOAP模式):使用Java API验证DDX文档 (SOAP模式)

包括AEM Forms Java库文件

设置连接属性

使用Web服务API验证DDX文档

使用Assembler Service API(Web服务)验证DDX文档:

  1. 包括项目文件。

    创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1

    注意

    将localhost替换为表单服务器的IP地址。

  2. 创建PDF Assembler客户端。

    • 使用AssemblerServiceClient对象的默认构造函数创建一个对象。

    • 使用System.ServiceModel.EndpointAddress构造函数创建AssemblerServiceClient.Endpoint.Address对象。 将指定WSDL的字符串值传递给AEM Forms服务(例如http://localhost:8080/soap/services/AssemblerService?blob=mtom)。 您无需使用lc_version属性。 在创建服务引用时使用此属性。

    • 通过获取AssemblerServiceClient.Endpoint.Binding字段的值,创建System.ServiceModel.BasicHttpBinding对象。 将返回值转换为BasicHttpBinding

    • System.ServiceModel.BasicHttpBinding对象的MessageEncoding字段设置为WSMessageEncoding.Mtom。 此值确保使用MTOM。

    • 通过执行以下任务,启用基本HTTP身份验证:

      • 为字段AssemblerServiceClient.ClientCredentials.UserName.UserName指定AEM表单用户名。
      • 为字段AssemblerServiceClient.ClientCredentials.UserName.Password分配相应的密码值。
      • 将常量值HttpClientCredentialType.Basic赋给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly赋给字段BasicHttpBindingSecurity.Security.Mode
  3. 引用现有DDX文档。

    • 使用BLOB对象的构造函数创建对象。 BLOB对象用于存储DDX文档。
    • 通过调用System.IO.FileStream对象的构造函数并传递一个字符串值,该字符串值表示DDX文档的文件位置以及在中打开文件的模式。
    • 创建一个字节数组,用于存储System.IO.FileStream对象的内容。 可以通过获取System.IO.FileStream对象的Length属性来确定字节数组的大小。
    • 通过调用System.IO.FileStream对象的Read方法并传递要读取的字节数组、开始位置和流长度,用流数据填充字节数组。
    • 通过将MTOM属性赋予字节数组的内容,填充BLOB对象。
  4. 设置运行时选项以验证DDX文档。

    • 使用AssemblerOptionSpec的构造函数创建存储运行时选项的对象。
    • 设置运行时选项,该选项指示Assembler服务通过将值true赋给AssemblerOptionSpec对象的validateOnly文档成员来验证DDX。
    • 通过为AssemblerOptionSpec对象的logLevel数据成员分配字符串值,设置Assembler服务写入日志文件的信息量。 方法验证DDX文档时,您希望将更多信息写入日志文件以协助验证过程。 因此,您可以指定值FINEFINER。 有关可以设置的运行时选项的信息,请参阅AEM Forms API Reference中的AssemblerOptionSpec类引用。
  5. 执行验证。

    调用AssemblerServiceClient对象的invokeDDX方法并传递以下值:

    • 表示DDX文档的BLOB对象。
    • 通常存储PDF文档的Map对象的值null
    • 指定运行时选项的AssemblerOptionSpec对象。

    invokeDDX方法返回一个AssemblerResult对象,该对象包含指定DDX文档是否有效的信息。

  6. 将验证结果保存在日志文件中。

    • 通过调用System.IO.FileStream对象的构造函数并传递一个字符串值来创建对象,该字符串值表示日志文件的文件位置以及在中打开文件的模式。 确保文件扩展名为.xml。
    • 创建一个BLOB对象,该对象通过获取AssemblerResult对象的jobLog数据成员的值来存储日志信息。
    • 创建一个字节数组,用于存储BLOB对象的内容。 通过获取BLOB对象的MTOM字段的值来填充字节数组。
    • 通过调用其构造函数并传递System.IO.FileStream对象,创建System.IO.BinaryWriter对象。
    • 通过调用System.IO.BinaryWriter对象的Write方法并传递字节数组,将字节数组的内容写入PDF文件。
    注意

    如果DDX文档无效,则引发OperationException。 在catch语句中,可以获取OperationException对象的jobLog成员的值。

另请参阅

验证DDX文档

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