步骤摘要

要将签名字段添加到PDF文档,请执行以下任务:

  1. 包括项目文件。
  2. 创建签名客户端。
  3. 获取添加了签名字段的PDF文档。
  4. 添加签名字段。
  5. 将PDF文档另存为PDF文件。

包含项目文件

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

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

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(如果在JBoss上部署了AEM Forms,则此为必填字段)
  • jbossall-client.jar(如果在JBoss上部署了AEM Forms,则此为必填字段)

创建签名客户端

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

获取已添加签名字段的PDF文档

获取添加了签名字段的PDF文档。

添加签名字段

要成功地将签名字段添加到PDF文档,请指定标识签名字段位置的坐标值。 (如果添加不可见的签名字段,则不需要这些值。) 此外,您还可以指定在将签名应用于签名字段后,PDF文档中的哪些字段将被锁定。

将PDF文档另存为PDF文件

签名服务向PDF文档添加签名字段后,您可以将文档另存为PDF文件,以便用户在Acrobat或Adobe Reader中打开它。

另请参阅

包括AEM Forms Java库文件

设置连接属性

对PDF文档进行数字签名

使用Java API添加签名字段

使用签名API (Java)添加签名字段:

  1. 包含项目文件

    将客户端JAR文件(如adobe-signatures-client.jar)包含到Java项目的类路径中。

  2. 创建签名客户端

    • 创建包含连接属性的ServiceClientFactory对象。
    • 使用对象的构造函数创建SignatureServiceClient对象并传递ServiceClientFactory对象。
  3. 获取添加了签名字段的PDF文档

    • 创建一个java.io.FileInputStream对象,该对象表示已向其添加签名字段的PDF文档,方法是使用其构造函数并传递一个指定PDF文档位置的字符串值。
    • 使用对象的构造函数创建com.adobe.idp.Document对象并传递java.io.FileInputStream对象。
  4. 添加签名字段

    • 创建一个PositionRectangle对象,该对象使用其构造函数指定签名字段位置。 在构造函数中,指定坐标值。

    • 如果需要,创建一个FieldMDPOptions对象,该对象指定在将数字签名应用于签名字段时锁定的字段。

    • 通过调用SignatureServiceClient对象的addSignatureField方法并传递以下值,向PDF文档添加签名字段:

      • com.adobe.idp。 表示已向其添加签名字段的PDF文档的Document对象。
      • 一个字符串值,它指定签名字段的名称。
      • 一个java.lang.Integer值,表示向其中添加签名字段的页码。
      • 指定签名字段位置的PositionRectangle对象。
      • FieldMDPOptions对象,它指定在将数字签名应用于签名字段后锁定的PDF文档中的字段。 此参数值是可选的,您可以传递null
    • 指定各种运行时值的PDFSeedValueOptions对象。 此参数值是可选的,您可以传递null

      addSignatureField方法返回com.adobe.idp。 表示包含签名字段的PDF文档的Document对象。

    注意
    您可以调用SignatureServiceClient对象的addInvisibleSignatureField方法来添加不可见的签名字段。
  5. 将PDF文档另存为PDF文件

    • 创建java.io.File对象并确保文件扩展名为.pdf。
    • 调用com.adobe.idpDocument对象的copyToFile方法,用于将Document对象的内容复制到文件中。 确保您使用com.adobe.idpaddSignatureField方法返回的Document对象。

使用Web服务API添加签名字段

要使用签名API(Web服务)添加签名字段,请执行以下操作:

  1. 包含项目文件

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

    注意
    localhost替换为承载AEM Forms的服务器的IP地址。
  2. 创建签名客户端

    • 使用默认构造函数创建SignatureServiceClient对象。

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

    • 通过获取SignatureServiceClient.Endpoint.Binding字段的值创建一个System.ServiceModel.BasicHttpBinding对象。 将返回值强制转换为BasicHttpBinding

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

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

      • 将AEM表单用户名分配给字段SignatureServiceClient.ClientCredentials.UserName.UserName
      • 将相应的密码值分配给字段SignatureServiceClient.ClientCredentials.UserName.Password
      • 将常量值HttpClientCredentialType.Basic分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly分配给字段BasicHttpBindingSecurity.Security.Mode
  3. 获取添加了签名字段的PDF文档

    • 使用构造函数创建BLOB对象。 BLOB对象用于存储将包含签名字段的PDF文档。
    • 通过调用其构造函数并传递一个字符串值来创建一个System.IO.FileStream对象,该字符串值表示PDF文档的文件位置以及打开文件的模式。
    • 创建用于存储System.IO.FileStream对象的内容的字节数组。 您可以通过获取System.IO.FileStream对象的Length属性来确定字节数组的大小。
    • 通过调用System.IO.FileStream对象的Read方法并传递要读取的字节数组、起始位置和流长度,使用流数据填充字节数组。
    • 使用字节数组的内容指定其MTOM属性以填充BLOB对象。
  4. 添加签名字段

    通过调用SignatureServiceClient对象的addSignatureField方法并传递以下值,向PDF文档添加签名字段:

    • 表示已向其添加签名字段的PDF文档的BLOB对象。
    • 指定签名字段名称的字符串值。
    • 一个整数值,表示向其中添加签名字段的页码。
    • 指定签名字段位置的PositionRect对象。
    • FieldMDPOptions对象,它指定在将数字签名应用于签名字段后锁定的PDF文档中的字段。 此参数值是可选的,您可以传递null
    • 指定各种运行时值的PDFSeedValueOptions对象。 此参数值是可选的,您可以传递null

    addSignatureField方法返回表示包含签名字段的PDF文档的BLOB对象。

  5. 将PDF文档另存为PDF文件

    • 通过调用其构造函数并传递一个字符串值来创建一个System.IO.FileStream对象,该字符串值表示将包含签名字段的PDF文档的文件位置以及打开文件的模式。
    • 创建一个字节数组,用于存储addSignatureField方法返回的BLOB对象的内容。 通过获取BLOB对象的binaryData数据成员的值填充字节数组。
    • 通过调用其构造函数并传递System.IO.FileStream对象来创建System.IO.BinaryWriter对象。
    • 通过调用System.IO.BinaryWriter对象的Write方法并传递字节数组,将字节数组的内容写入PDF文件。

正在检索签名字段名称

您可以检索要签名或认证的PDF文档中的所有签名字段的名称。 如果不能确定PDF文档中的签名字段名称,或者要验证这些名称,可以通过编程方式检索它们。 签名服务返回签名字段的完全限定名称,如form1[0].grantApplication[0].page1[0].SignatureField1[0]

注意
有关签名服务的详细信息,请参阅AEM Forms的服务参考

步骤摘要

要检索签名字段名称,请执行以下任务:

  1. 包括项目文件。
  2. 创建签名客户端。
  3. 获取包含签名字段的PDF文档。
  4. 检索签名字段名称。

包含项目文件

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

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

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(如果在JBoss上部署了AEM Forms,则此为必填字段)
  • jbossall-client.jar(如果在JBoss上部署了AEM Forms,则此为必填字段)

有关这些JAR文件位置的信息,请参阅包括AEM Forms Java库文件

创建签名客户端

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

获取包含签名字段的PDF文档

检索包含签名字段的PDF文档。

检索签名字段名称

在检索包含一个或多个签名字段的PDF文档后,可以检索签名字段名称。

另请参阅

使用Java API检索签名字段名称

使用Web服务API检索签名字段

包括AEM Forms Java库文件

设置连接属性

添加签名字段

使用Java API检索签名字段名称

使用签名API (Java)检索签名字段名称:

  1. 包含项目文件

    将客户端JAR文件(如adobe-signatures-client.jar)包含到Java项目的类路径中。

  2. 创建签名客户端

    • 创建包含连接属性的ServiceClientFactory对象。
    • 使用对象的构造函数创建SignatureServiceClient对象并传递ServiceClientFactory对象。
  3. 获取包含签名字段的PDF文档

    • 通过使用其构造函数并传递指定PDF文档位置的字符串值,创建表示包含签名字段的PDF文档的java.io.FileInputStream对象。
    • 使用对象的构造函数创建com.adobe.idp.Document对象并传递java.io.FileInputStream对象。
  4. 检索签名字段名称

    • 通过调用SignatureServiceClient对象的getSignatureFieldList方法并传递包含签名字段的PDF文档的com.adobe.idp.Document对象,检索签名字段名称。 此方法返回java.util.List对象,其中每个元素都包含PDFSignatureField对象。 使用此对象,您可以获取有关签名字段的其他信息,如它是否可见。
    • 反复检查java.util.List对象以确定是否存在签名字段名称。 对于PDF文档中的每个签名字段,您可以获取单独的PDFSignatureField对象。 要获取签名字段的名称,请调用PDFSignatureField对象的getName方法。 此方法返回指定签名字段名称的字符串值。

使用Web服务API检索签名字段

使用签名API(Web服务)检索签名字段名称:

  1. 包含项目文件

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

    注意
    localhost替换为承载AEM Forms的服务器的IP地址。
  2. 创建签名客户端

    • 使用默认构造函数创建SignatureServiceClient对象。

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

    • 通过获取SignatureServiceClient.Endpoint.Binding字段的值创建一个System.ServiceModel.BasicHttpBinding对象。 将返回值强制转换为BasicHttpBinding

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

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

      • 将AEM表单用户名分配给字段SignatureServiceClient.ClientCredentials.UserName.UserName
      • 将相应的密码值分配给字段SignatureServiceClient.ClientCredentials.UserName.Password
      • 将常量值HttpClientCredentialType.Basic分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly分配给字段BasicHttpBindingSecurity.Security.Mode
  3. 获取包含签名字段的PDF文档

    • 使用构造函数创建BLOB对象。 BLOB对象用于存储包含签名字段的PDF文档。
    • 通过调用其构造函数并传递一个字符串值来创建一个System.IO.FileStream对象,该字符串值表示PDF文档的文件位置以及打开文件的模式。
    • 创建用于存储System.IO.FileStream对象的内容的字节数组。 您可以通过获取System.IO.FileStream对象的Length属性来确定字节数组的大小。
    • 通过调用System.IO.FileStream对象的Read方法并传递要读取的字节数组、起始位置和流长度,使用流数据填充字节数组。
    • 通过将MTOM字段分配给字节数组内容来填充BLOB对象。
  4. 检索签名字段名称

    • 通过调用SignatureServiceClient对象的getSignatureFieldList方法并传递包含签名字段的PDF文档的BLOB对象,检索签名字段名称。 此方法返回MyArrayOfPDFSignatureField集合对象,其中每个元素都包含PDFSignatureField对象。
    • MyArrayOfPDFSignatureField对象进行迭代,以确定是否存在签名字段名称。 对于PDF文档中的每个签名字段,您可以获取PDFSignatureField对象。 要获取签名字段的名称,请调用PDFSignatureField对象的getName方法。 此方法返回指定签名字段名称的字符串值。

修改签名字段

您可以使用Java API和Web服务API修改PDF文档中的签名字段。 修改签名字段涉及处理其签名字段锁定字典值或种子值字典值。

字段锁定字典 ​指定签名字段签名时锁定的字段列表。 锁定的字段可阻止用户对该字段进行更改。 种子值字典 ​包含应用签名时使用的约束信息。 例如,您可以更改在不使签名失效的情况下控制可能发生的操作的权限。

通过修改现有签名字段,可以更改PDF文档以反映不断变化的业务要求。 例如,新的业务要求可能需要在签署文档后锁定所有文档字段。

本节说明如何通过修改字段锁定字典和种子值字典值来修改签名字段。 对签名字段锁定字典所做的更改导致签名字段签名时PDF文档中的所有字段被锁定。 对种子值字典所做的更改禁止对文档进行特定类型的更改。

注意
有关签名服务和修改签名字段的详细信息,请参阅AEM Forms服务参考

步骤摘要

要修改PDF文档中的签名字段,请执行以下任务:

  1. 包括项目文件。
  2. 创建签名客户端。
  3. 获取包含要修改的签名字段的PDF文档。
  4. 设置字典值。
  5. 修改签名字段。
  6. 将PDF文档另存为PDF文件。

包含项目文件

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

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

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(如果在JBoss上部署了AEM Forms,则此为必填字段)
  • jbossall-client.jar(如果在JBoss上部署了AEM Forms,则此为必填字段)

有关这些JAR文件位置的信息,请参阅包括LiveCycleJava库文件

创建签名客户端

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

获取包含要修改的签名字段的PDF文档

检索包含要修改的签名字段的PDF文档。

设置字典值

要修改签名字段,请为其字段锁定字典或种子值字典分配值。 指定签名字段锁定字典值涉及指定签名字段签名时锁定的PDF文档字段。 (本节讨论如何锁定所有字段。)

可以设置以下种子值字典值:

  • 修订检查:指定在将签名应用于签名字段时是否执行吊销检查。

  • 证书选项:将值分配给证书种子值字典。 在指定证书选项之前,建议您熟悉证书种子值词典。 (请参阅PDF引用。)

  • 摘要选项:分配用于签名的摘要算法。 有效值为SHA1、SHA256、SHA384、SHA512和RIPEMD160。

  • 筛选器:指定与签名字段一起使用的筛选器。 例如,您可以使用Adobe.PPKLite过滤器。 (请参阅PDF引用。)

  • 标记选项:指定与此签名字段关联的标记值。 值为1表示签名者必须仅使用指定的条目值。 值为0表示允许使用其他值。 以下是Bit位置:

    • 1(筛选器): ​用于对签名字段签名的签名处理程序
    • 2 (SubFilter): ​一个名称数组,表示签名时可以使用的编码
    • 3 (V):用于签名字段的签名处理程序所需的最低版本号
    • 4(原因): ​字符串数组,用于指定签署文档的可能原因
    • 5 (PDFLegalWarnings): ​指定可能合法证明的字符串数组
  • 法律证明:文档经过认证后,将自动扫描特定类型的内容,这些内容可能会使文档的可见内容不明确或产生误导。 例如,注释可能会遮蔽对了解所认证的内容非常重要的文本。 扫描过程会生成指示存在此类内容的警告。 它还提供了可能生成警告的内容的其他说明。

  • 权限:指定可在PDF文档上使用但不使签名失效的权限。

  • 原因:指定必须对此文档签名的原因。

  • 时间戳:指定时间戳选项。 例如,您可以设置所使用时间戳服务器的URL。

  • 版本:指定用于签名字段的签名处理程序的最小版本号。

修改签名字段

创建签名服务客户端、检索包含要修改的签名字段的PDF文档并设置字典值后,可以指示Signature服务修改签名字段。 然后,签名服务返回包含修改后的签名字段的PDF文档。 原始PDF文档不受影响。

将PDF文档另存为PDF文件

将包含修改后的签名字段的PDF文档保存为PDF文件,以便用户可以在Acrobat或Adobe Reader中打开该文档。

另请参阅

包括AEM Forms Java库文件

设置连接属性

签名服务API快速启动

对PDF文档进行数字签名

使用Java API修改签名字段

使用签名API (Java)修改签名字段:

  1. 包含项目文件

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

  2. 创建签名客户端

    • 创建包含连接属性的ServiceClientFactory对象。
    • 使用对象的构造函数创建SignatureServiceClient对象并传递ServiceClientFactory对象。
  3. 获取包含要修改的签名字段的PDF文档

    • 创建一个java.io.FileInputStream对象,该对象表示包含要修改的签名字段的PDF文档,方法是使用其构造函数并传递一个指定PDF文档位置的字符串值。
    • 使用对象的构造函数创建com.adobe.idp.Document对象并传递java.io.FileInputStream对象。
  4. 设置字典值

    • 使用构造函数创建PDFSignatureFieldProperties对象。 PDFSignatureFieldProperties对象存储签名字段锁定字典和种子值字典信息。
    • 使用构造函数创建PDFSeedValueOptionSpec对象。 此对象允许您设置种子值字典值。
    • 通过调用PDFSeedValueOptionSpec对象的setMdpValue方法并传递MDPPermissions.NoChanges枚举值,不允许对PDF文档进行更改。
    • 使用构造函数创建FieldMDPOptionSpec对象。 此对象允许您设置签名字段锁定字典值。
    • 通过调用FieldMDPOptionSpec对象的setMdpValue方法并传递FieldMDPAction.ALL枚举值,锁定PDF文档中的所有字段。
    • 通过调用PDFSignatureFieldProperties对象的setSeedValue方法并传递PDFSeedValueOptionSpec对象来设置种子值字典信息。
    • 通过调用PDFSignatureFieldProperties对象的setFieldMDP方法并传递FieldMDPOptionSpec对象来设置签名字段锁定字典信息。
    注意
    要查看可以设置的所有种子值字典值,请参阅PDFSeedValueOptionSpec类引用。 (请参阅AEM Forms API引用。)
  5. 修改签名字段

    通过调用SignatureServiceClient对象的modifySignatureField方法并传递以下值来修改签名字段:

    • 存储包含要修改的签名字段的PDF文档的com.adobe.idp.Document对象
    • 指定签名字段名称的字符串值
    • 存储签名字段锁定字典和种子值字典信息的PDFSignatureFieldProperties对象

    modifySignatureField方法返回一个com.adobe.idp.Document对象,该对象存储包含修改后的签名字段的PDF文档。

  6. 将PDF文档另存为PDF文件

    • 创建java.io.File对象并确保文件扩展名为.pdf。
    • 调用com.adobe.idp.Document对象的copyToFile方法以将com.adobe.idp.Document对象的内容复制到文件中。 确保使用modifySignatureField方法返回的com.adobe.idp.Document对象。

使用Web服务API修改签名字段

使用签名API(Web服务)修改签名字段:

  1. 包含项目文件

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

    注意
    localhost替换为承载AEM Forms的服务器的IP地址。
  2. 创建签名客户端

    • 使用默认构造函数创建SignatureServiceClient对象。

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

    • 通过获取SignatureServiceClient.Endpoint.Binding字段的值创建一个System.ServiceModel.BasicHttpBinding对象。 将返回值强制转换为BasicHttpBinding

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

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

      • 将AEM表单用户名分配给字段SignatureServiceClient.ClientCredentials.UserName.UserName
      • 将相应的密码值分配给字段SignatureServiceClient.ClientCredentials.UserName.Password
      • 将常量值HttpClientCredentialType.Basic分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly分配给字段BasicHttpBindingSecurity.Security.Mode
  3. 获取包含要修改的签名字段的PDF文档

    • 使用构造函数创建BLOB对象。 BLOB对象用于存储包含要修改的签名字段的PDF文档。
    • 通过调用其构造函数并传递一个字符串值来创建一个System.IO.FileStream对象,该字符串值表示PDF文档的文件位置以及打开文件的模式。
    • 创建用于存储System.IO.FileStream对象的内容的字节数组。 您可以通过获取System.IO.FileStream对象的Length属性来确定字节数组的大小。
    • 通过调用System.IO.FileStream对象的Read方法并传递要读取的字节数组、起始位置和流长度,使用流数据填充字节数组。
    • 通过将BLOB对象的MTOM属性分配给字节数组的内容来填充该对象。
  4. 设置字典值

    • 使用构造函数创建PDFSignatureFieldProperties对象。 此对象存储签名字段锁定字典和种子值字典信息。
    • 使用构造函数创建PDFSeedValueOptionSpec对象。 此对象允许您设置种子值字典值。
    • 通过将MDPPermissions.NoChanges枚举值分配给PDFSeedValueOptionSpec对象的mdpValue数据成员,不允许对PDF文档进行更改。
    • 使用构造函数创建FieldMDPOptionSpec对象。 此对象允许您设置签名字段锁定字典值。
    • 通过将FieldMDPAction.ALL枚举值分配给FieldMDPOptionSpec对象的mdpValue数据成员,锁定PDF文档中的所有字段。
    • 通过将PDFSeedValueOptionSpec对象分配给PDFSignatureFieldProperties对象的seedValue数据成员来设置种子值字典信息。
    • 通过将FieldMDPOptionSpec对象分配给PDFSignatureFieldProperties对象的fieldMDP数据成员,设置签名字段锁定字典信息。
    注意
    要查看可以设置的所有种子值字典值,请参阅PDFSeedValueOptionSpec类引用。 (请参阅AEM Forms API引用)。
  5. 修改签名字段

    通过调用SignatureServiceClient对象的modifySignatureField方法并传递以下值来修改签名字段:

    • 存储包含要修改的签名字段的PDF文档的BLOB对象
    • 指定签名字段名称的字符串值
    • 存储签名字段锁定字典和种子值字典信息的PDFSignatureFieldProperties对象

    modifySignatureField方法返回一个BLOB对象,该对象存储包含修改后的签名字段的PDF文档。

  6. 将PDF文档另存为PDF文件

    • 通过调用其构造函数并传递一个字符串值来创建一个System.IO.FileStream对象,该字符串值表示将包含签名字段的PDF文档的文件位置以及打开文件的模式。
    • 创建一个字节数组,用于存储addSignatureField方法返回的BLOB对象的内容。 通过获取BLOB对象的MTOM数据成员的值填充字节数组。
    • 通过调用其构造函数并传递System.IO.FileStream对象来创建System.IO.BinaryWriter对象。
    • 通过调用System.IO.BinaryWriter对象的Write方法并传递字节数组,将字节数组的内容写入PDF文件。