使用Bates编号汇编文档

您可以使用Bates编号来组合包含唯一页面标识符的PDF文档。 Bates编 号是一种将唯一标识应用于一批相关文档的方法。文档(或一组文档)中的每个页面都会分配一个Bates编号,以唯一标识该页面。 例如,包含物料清单信息并与装配件生产关联的制造文档可以包含标识符。 Bates编号包含顺序递增的数值和可选前缀和后缀。 前缀+数字+后缀称为​bates模式

下图显示了一个PDF文档,其中包含位于文档标题中的唯一标识符。

au_au_batesnumber

为便于讨论,唯一的页面标识符将放置在文档的标题中。 假定使用以下DDX文档。

 <?xml version="1.0" encoding="UTF-8"?> 
 <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
        <PDF result="out.pdf"> 
        <Header> 
         <Center> 
             <StyledText> 
                 <p font-size="20pt"><BatesNumber/></p> 
             </StyledText> 
         </Center> 
     </Header> 
           <PDF source="map.pdf" /> 
          <PDF source="directions.pdf" /> 
          </PDF> 
 </DDX>

此DDX文档将名为​map.pdf​和* directions.pdf*的两个PDF文档合并到一个PDF文档中。 生成的PDF文档包含由唯一页面标识符组成的标题。 例如,上图中的文档显示000016。

注意

在阅读本节之前,建议您熟悉使用Assembler服务汇编PDF文档。 本节不讨论这些概念,如创建包含输入文档的集合对象,或从返回的集合对象中提取结果。 (请参阅以编程方式组合PDF文档。)

注意

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

注意

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

步骤的摘要

要组合包含唯一页面标识符(Bates编号)的PDF文档,请执行以下任务:

  1. 包括项目文件。
  2. 创建PDF Assembler客户端。
  3. 引用现有DDX文档。
  4. 参考输入PDF文档。
  5. 设置初始Bates编号值。
  6. 组合输入的PDF文档。
  7. 提取结果。

包括项目文件

在开发项目中包含必要的文件。 如果要使用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文件。 有关所有AEM Forms JAR文件位置的信息,请参阅包括AEM Forms Java库文件

创建PDF Assembler客户端

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

引用现有DDX文档

必须引用DDX文档才能组合PDF文档。 例如,请考虑本节中引入的DDX文档。 要组合包含唯一页面标识符的PDF文档,DDX文档必须包含BatesNumber元素。

参考输入PDF文档

必须引用输入PDF文档才能组合PDF文档。 例如,必须引用map.pdf和directions.pdf文档,才能将这些PDF文档组合到一个PDF文档中。

设置初始Bates编号值

您可以设置初始Bates编号值以满足您的业务需求。 例如,假设要求将初始值设置为000100。 如果未设置初始值,则第一页的值为000000。

组合输入的PDF文档

创建Assembler服务客户端后,请引用包含BatesNumber元素信息的DDX文档,引用输入的PDF文档,并设置运行时选项,您可以调用invokeDDX操作,该操作导致Assembler服务汇编包含唯一页面标识符的PDF文档。

提取结果

Assembler服务返回包含作业结果的集合对象。 您可以提取生成的PDF文档和引发的任何异常。 在这种情况下,加密的PDF文档位于集合对象中。

注意

如果调用invokeDDX操作,则返回集合对象。 将两个或两个以上输入的PDF文档传递到Assembler服务时,将使用此操作。 但是,如果只将一个输入PDF文档传递给Assembler服务,则应调用invokeOneDocument操作。 有关使用此操作的信息,请参阅汇编加密的PDF文档

另请参阅

包括AEM Forms Java库文件

设置连接属性

以编程方式组合PDF文档

使用Java API将文档与Bates编号组合

使用Assembler Service API(Java)汇编一个使用唯一页面标识符(Bates编号)的PDF文档:

  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. 参考输入PDF文档。

    • 使用HashMap构造函数创建用于存储输入PDF文档的java.util.Map对象。

    • 对于每个输入PDF文档,使用其构造函数并传递输入PDF文档的位置来创建java.io.FileInputStream对象。 在这种情况下,请传递不安全PDF文档的位置。

    • 对于每个输入PDF文档,创建一个com.adobe.idp.Document对象,并传递包含PDF文档的java.io.FileInputStream对象。

    • 通过调用put方法并传递以下参数,向java.util.Map对象添加一个条目:

      • 表示键名的字符串值。 此值必须与在DDX文档中指定的PDF源元素的值匹配。 例如,本节中引入的DDX文档中指定的PDF源文件的名称为Loan.pdf。
      • 一个com.adobe.idp.Document对象,它包含不安全的PDF文档。
  5. 设置初始Bates编号值。

    • 使用AssemblerOptionSpec的构造函数创建存储运行时选项的对象。
    • 通过调用AssemblerOptionSpec对象的setFirstBatesNumber并传递指定初始值的数值来设置初始Bates编号。
  6. 组合输入的PDF文档。

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

    • 表示DDX文档的com.adobe.idp.Document对象。
    • 一个java.util.Map对象,其中包含输入的不安全PDF文件。
    • 一个com.adobe.livecycle.assembler.client.AssemblerOptionSpec对象,它指定运行时选项,包括默认字体和作业日志级别。

    invokeDDX方法返回一个com.adobe.livecycle.assembler.client.AssemblerResult对象,该对象包含密码加密的PDF文档。

  7. 提取结果。

    要获取新创建的PDF文档,请执行以下操作:

    • 调用AssemblerResult对象的getDocuments方法。 此操作返回java.util.Map对象。
    • 遍历java.util.Map对象,直到找到com.adobe.idp.Document对象。
    • 调用com.adobe.idp.Document对象的copyToFile方法以提取PDF文档。

另请参阅

快速开始(SOAP模式):使用Java API将PDF文档与bates编号组合在一起

包括AEM Forms Java库文件

设置连接属性

使用Web服务API使用Bates编号组合文档

使用Assembler Service API(Web服务)汇编一个使用唯一页面标识符(Bates编号)的PDF文档:

  1. 包括项目文件。

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

    注意

    localhost替换为承载AEM Forms的服务器的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方法,用流数据填充字节数组。 传递要读取的字节数组、起始位置和流长度。
    • BLOB对象的MTOM字段指定为字节数组的内容,从而填充该对象。
  4. 参考输入PDF文档。

    • 对于每个输入的PDF文档,使用其构造函数创建一个BLOB对象。 BLOB对象用于存储输入的PDF文档。
    • 通过调用其构造函数创建System.IO.FileStream对象。 传递一个字符串值,该值表示输入PDF文档的文件位置以及打开文件的模式。
    • 创建一个字节数组,用于存储System.IO.FileStream对象的内容。 可以通过获取System.IO.FileStream对象的Length属性来确定字节数组的大小。
    • 通过调用System.IO.FileStream对象的Read方法,用流数据填充字节数组。 传递要读取的字节数组、起始位置和流长度。
    • 通过将MTOM属性赋予字节数组的内容,填充BLOB对象。
    • 创建MyMapOf_xsd_string_To_xsd_anyType对象。 此集合对象用于存储输入的PDF文档。
    • 对于每个输入PDF文档,创建一个MyMapOf_xsd_string_To_xsd_anyType_Item对象。 例如,如果使用两个输入PDF文档,则创建两个MyMapOf_xsd_string_To_xsd_anyType_Item对象。
    • MyMapOf_xsd_string_To_xsd_anyType_Item对象的key字段指定表示键名的字符串值。 此值必须与在DDX文档中指定的PDF源元素的值匹配。 (对每个输入的PDF任务执行此文档。)
    • 将存储PDF文档的BLOB对象指定到MyMapOf_xsd_string_To_xsd_anyType_Item对象的value字段。 (对每个输入的PDF任务执行此文档。)
    • MyMapOf_xsd_string_To_xsd_anyType_Item对象添加到MyMapOf_xsd_string_To_xsd_anyType对象。 调用MyMapOf_xsd_string_To_xsd_anyType对象的Add方法并传递MyMapOf_xsd_string_To_xsd_anyType对象。 (对每个输入的PDF任务执行此文档。)
  5. 设置初始Bates编号值。

    • 使用AssemblerOptionSpec的构造函数创建存储运行时选项的对象。
    • 通过为属于AssemblerOptionSpec对象的firstBatesNumber数据成员分配一个数值来设置初始Bates编号。
  6. 组合输入的PDF文档。

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

    • 表示DDX文档的BLOB对象。
    • 包含输入PDF文档的MyMapOf_xsd_string_To_xsd_anyType对象。 其键必须与PDF源文件的名称匹配,其值必须是与这些文件对应的BLOB对象。
    • 指定运行时选项的AssemblerOptionSpec对象。

    invoke方法返回一个AssemblerResult对象,其中包含作业的结果和发生的任何异常。

  7. 提取结果。

    要获取新创建的PDF文档,请执行以下操作:

    • 访问AssemblerResult对象的documents字段,该字段是包含结果PDF文档的Map对象。
    • 遍历Map对象,直到找到与生成文档的名称匹配的键。 然后将该数组成员的value转换为BLOB
    • 通过访问PDF文档的BLOB对象的MTOM属性提取表示PDF数据的二进制数据。 这将返回可写入PDF文件的字节数组。

另请参阅

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