步骤摘要
要将签名字段添加到PDF文档,请执行以下任务:
- 包括项目文件。
- 创建签名客户端。
- 获取添加了签名字段的PDF文档。
- 添加签名字段。
- 将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中打开它。
另请参阅
使用Java API添加签名字段
使用签名API (Java)添加签名字段:
-
包含项目文件
将客户端JAR文件(如adobe-signatures-client.jar)包含到Java项目的类路径中。
-
创建签名客户端
- 创建包含连接属性的
ServiceClientFactory
对象。 - 使用对象的构造函数创建
SignatureServiceClient
对象并传递ServiceClientFactory
对象。
- 创建包含连接属性的
-
获取添加了签名字段的PDF文档
- 创建一个
java.io.FileInputStream
对象,该对象表示已向其添加签名字段的PDF文档,方法是使用其构造函数并传递一个指定PDF文档位置的字符串值。 - 使用对象的构造函数创建
com.adobe.idp.Document
对象并传递java.io.FileInputStream
对象。
- 创建一个
-
添加签名字段
-
创建一个
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
方法来添加不可见的签名字段。 -
-
将PDF文档另存为PDF文件
- 创建
java.io.File
对象并确保文件扩展名为.pdf。 - 调用
com.adobe.idp
。Document
对象的copyToFile
方法,用于将Document
对象的内容复制到文件中。 确保您使用com.adobe.idp
。addSignatureField
方法返回的Document
对象。
- 创建
另请参阅
使用Web服务API添加签名字段
要使用签名API(Web服务)添加签名字段,请执行以下操作:
-
包含项目文件
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
。注意
将localhost
替换为承载AEM Forms的服务器的IP地址。 -
创建签名客户端
-
使用默认构造函数创建
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
。
- 将AEM表单用户名分配给字段
-
-
获取添加了签名字段的PDF文档
- 使用构造函数创建
BLOB
对象。BLOB
对象用于存储将包含签名字段的PDF文档。 - 通过调用其构造函数并传递一个字符串值来创建一个
System.IO.FileStream
对象,该字符串值表示PDF文档的文件位置以及打开文件的模式。 - 创建用于存储
System.IO.FileStream
对象的内容的字节数组。 您可以通过获取System.IO.FileStream
对象的Length
属性来确定字节数组的大小。 - 通过调用
System.IO.FileStream
对象的Read
方法并传递要读取的字节数组、起始位置和流长度,使用流数据填充字节数组。 - 使用字节数组的内容指定其
MTOM
属性以填充BLOB
对象。
- 使用构造函数创建
-
添加签名字段
通过调用
SignatureServiceClient
对象的addSignatureField
方法并传递以下值,向PDF文档添加签名字段:- 表示已向其添加签名字段的PDF文档的
BLOB
对象。 - 指定签名字段名称的字符串值。
- 一个整数值,表示向其中添加签名字段的页码。
- 指定签名字段位置的
PositionRect
对象。 FieldMDPOptions
对象,它指定在将数字签名应用于签名字段后锁定的PDF文档中的字段。 此参数值是可选的,您可以传递null
。- 指定各种运行时值的
PDFSeedValueOptions
对象。 此参数值是可选的,您可以传递null
。
addSignatureField
方法返回表示包含签名字段的PDF文档的BLOB
对象。 - 表示已向其添加签名字段的PDF文档的
-
将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]
。
步骤摘要
要检索签名字段名称,请执行以下任务:
- 包括项目文件。
- 创建签名客户端。
- 获取包含签名字段的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文件位置的信息,请参阅包括AEM Forms Java库文件。
创建签名客户端
必须先创建签名服务客户端,然后才能以编程方式执行签名服务操作。
获取包含签名字段的PDF文档
检索包含签名字段的PDF文档。
检索签名字段名称
在检索包含一个或多个签名字段的PDF文档后,可以检索签名字段名称。
另请参阅
使用Java API检索签名字段名称
使用签名API (Java)检索签名字段名称:
-
包含项目文件
将客户端JAR文件(如adobe-signatures-client.jar)包含到Java项目的类路径中。
-
创建签名客户端
- 创建包含连接属性的
ServiceClientFactory
对象。 - 使用对象的构造函数创建
SignatureServiceClient
对象并传递ServiceClientFactory
对象。
- 创建包含连接属性的
-
获取包含签名字段的PDF文档
- 通过使用其构造函数并传递指定PDF文档位置的字符串值,创建表示包含签名字段的PDF文档的
java.io.FileInputStream
对象。 - 使用对象的构造函数创建
com.adobe.idp.Document
对象并传递java.io.FileInputStream
对象。
- 通过使用其构造函数并传递指定PDF文档位置的字符串值,创建表示包含签名字段的PDF文档的
-
检索签名字段名称
- 通过调用
SignatureServiceClient
对象的getSignatureFieldList
方法并传递包含签名字段的PDF文档的com.adobe.idp.Document
对象,检索签名字段名称。 此方法返回java.util.List
对象,其中每个元素都包含PDFSignatureField
对象。 使用此对象,您可以获取有关签名字段的其他信息,如它是否可见。 - 反复检查
java.util.List
对象以确定是否存在签名字段名称。 对于PDF文档中的每个签名字段,您可以获取单独的PDFSignatureField
对象。 要获取签名字段的名称,请调用PDFSignatureField
对象的getName
方法。 此方法返回指定签名字段名称的字符串值。
- 通过调用
使用Web服务API检索签名字段
使用签名API(Web服务)检索签名字段名称:
-
包含项目文件
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
。注意
将localhost
替换为承载AEM Forms的服务器的IP地址。 -
创建签名客户端
-
使用默认构造函数创建
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
。
- 将AEM表单用户名分配给字段
-
-
获取包含签名字段的PDF文档
- 使用构造函数创建
BLOB
对象。BLOB
对象用于存储包含签名字段的PDF文档。 - 通过调用其构造函数并传递一个字符串值来创建一个
System.IO.FileStream
对象,该字符串值表示PDF文档的文件位置以及打开文件的模式。 - 创建用于存储
System.IO.FileStream
对象的内容的字节数组。 您可以通过获取System.IO.FileStream
对象的Length
属性来确定字节数组的大小。 - 通过调用
System.IO.FileStream
对象的Read
方法并传递要读取的字节数组、起始位置和流长度,使用流数据填充字节数组。 - 通过将
MTOM
字段分配给字节数组内容来填充BLOB
对象。
- 使用构造函数创建
-
检索签名字段名称
- 通过调用
SignatureServiceClient
对象的getSignatureFieldList
方法并传递包含签名字段的PDF文档的BLOB
对象,检索签名字段名称。 此方法返回MyArrayOfPDFSignatureField
集合对象,其中每个元素都包含PDFSignatureField
对象。 - 对
MyArrayOfPDFSignatureField
对象进行迭代,以确定是否存在签名字段名称。 对于PDF文档中的每个签名字段,您可以获取PDFSignatureField
对象。 要获取签名字段的名称,请调用PDFSignatureField
对象的getName
方法。 此方法返回指定签名字段名称的字符串值。
- 通过调用
修改签名字段
您可以使用Java API和Web服务API修改PDF文档中的签名字段。 修改签名字段涉及处理其签名字段锁定字典值或种子值字典值。
字段锁定字典 指定签名字段签名时锁定的字段列表。 锁定的字段可阻止用户对该字段进行更改。 种子值字典 包含应用签名时使用的约束信息。 例如,您可以更改在不使签名失效的情况下控制可能发生的操作的权限。
通过修改现有签名字段,可以更改PDF文档以反映不断变化的业务要求。 例如,新的业务要求可能需要在签署文档后锁定所有文档字段。
本节说明如何通过修改字段锁定字典和种子值字典值来修改签名字段。 对签名字段锁定字典所做的更改导致签名字段签名时PDF文档中的所有字段被锁定。 对种子值字典所做的更改禁止对文档进行特定类型的更改。
步骤摘要
要修改PDF文档中的签名字段,请执行以下任务:
- 包括项目文件。
- 创建签名客户端。
- 获取包含要修改的签名字段的PDF文档。
- 设置字典值。
- 修改签名字段。
- 将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中打开该文档。
另请参阅
使用Java API修改签名字段
使用签名API (Java)修改签名字段:
-
包含项目文件
将客户端JAR文件(如adobe-signatures-client.jar)包含在Java项目的类路径中。
-
创建签名客户端
- 创建包含连接属性的
ServiceClientFactory
对象。 - 使用对象的构造函数创建
SignatureServiceClient
对象并传递ServiceClientFactory
对象。
- 创建包含连接属性的
-
获取包含要修改的签名字段的PDF文档
- 创建一个
java.io.FileInputStream
对象,该对象表示包含要修改的签名字段的PDF文档,方法是使用其构造函数并传递一个指定PDF文档位置的字符串值。 - 使用对象的构造函数创建
com.adobe.idp.Document
对象并传递java.io.FileInputStream
对象。
- 创建一个
-
设置字典值
- 使用构造函数创建
PDFSignatureFieldProperties
对象。PDFSignatureFieldProperties
对象存储签名字段锁定字典和种子值字典信息。 - 使用构造函数创建
PDFSeedValueOptionSpec
对象。 此对象允许您设置种子值字典值。 - 通过调用
PDFSeedValueOptionSpec
对象的setMdpValue
方法并传递MDPPermissions.NoChanges
枚举值,不允许对PDF文档进行更改。 - 使用构造函数创建
FieldMDPOptionSpec
对象。 此对象允许您设置签名字段锁定字典值。 - 通过调用
FieldMDPOptionSpec
对象的setMdpValue
方法并传递FieldMDPAction.ALL
枚举值,锁定PDF文档中的所有字段。 - 通过调用
PDFSignatureFieldProperties
对象的setSeedValue
方法并传递PDFSeedValueOptionSpec
对象来设置种子值字典信息。 - 通过调用
PDFSignatureFieldProperties
对象的setFieldMDP
方法并传递FieldMDPOptionSpec
对象来设置签名字段锁定字典信息。
注意
要查看可以设置的所有种子值字典值,请参阅PDFSeedValueOptionSpec
类引用。 (请参阅AEM Forms API引用。) - 使用构造函数创建
-
修改签名字段
通过调用
SignatureServiceClient
对象的modifySignatureField
方法并传递以下值来修改签名字段:- 存储包含要修改的签名字段的PDF文档的
com.adobe.idp.Document
对象 - 指定签名字段名称的字符串值
- 存储签名字段锁定字典和种子值字典信息的
PDFSignatureFieldProperties
对象
modifySignatureField
方法返回一个com.adobe.idp.Document
对象,该对象存储包含修改后的签名字段的PDF文档。 - 存储包含要修改的签名字段的PDF文档的
-
将PDF文档另存为PDF文件
- 创建
java.io.File
对象并确保文件扩展名为.pdf。 - 调用
com.adobe.idp.Document
对象的copyToFile
方法以将com.adobe.idp.Document
对象的内容复制到文件中。 确保使用modifySignatureField
方法返回的com.adobe.idp.Document
对象。
- 创建
使用Web服务API修改签名字段
使用签名API(Web服务)修改签名字段:
-
包含项目文件
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
。注意
将localhost
替换为承载AEM Forms的服务器的IP地址。 -
创建签名客户端
-
使用默认构造函数创建
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
。
- 将AEM表单用户名分配给字段
-
-
获取包含要修改的签名字段的PDF文档
- 使用构造函数创建
BLOB
对象。BLOB
对象用于存储包含要修改的签名字段的PDF文档。 - 通过调用其构造函数并传递一个字符串值来创建一个
System.IO.FileStream
对象,该字符串值表示PDF文档的文件位置以及打开文件的模式。 - 创建用于存储
System.IO.FileStream
对象的内容的字节数组。 您可以通过获取System.IO.FileStream
对象的Length
属性来确定字节数组的大小。 - 通过调用
System.IO.FileStream
对象的Read
方法并传递要读取的字节数组、起始位置和流长度,使用流数据填充字节数组。 - 通过将
BLOB
对象的MTOM
属性分配给字节数组的内容来填充该对象。
- 使用构造函数创建
-
设置字典值
- 使用构造函数创建
PDFSignatureFieldProperties
对象。 此对象存储签名字段锁定字典和种子值字典信息。 - 使用构造函数创建
PDFSeedValueOptionSpec
对象。 此对象允许您设置种子值字典值。 - 通过将
MDPPermissions.NoChanges
枚举值分配给PDFSeedValueOptionSpec
对象的mdpValue
数据成员,不允许对PDF文档进行更改。 - 使用构造函数创建
FieldMDPOptionSpec
对象。 此对象允许您设置签名字段锁定字典值。 - 通过将
FieldMDPAction.ALL
枚举值分配给FieldMDPOptionSpec
对象的mdpValue
数据成员,锁定PDF文档中的所有字段。 - 通过将
PDFSeedValueOptionSpec
对象分配给PDFSignatureFieldProperties
对象的seedValue
数据成员来设置种子值字典信息。 - 通过将
FieldMDPOptionSpec
对象分配给PDFSignatureFieldProperties
对象的fieldMDP
数据成员,设置签名字段锁定字典信息。
注意
要查看可以设置的所有种子值字典值,请参阅PDFSeedValueOptionSpec
类引用。 (请参阅AEM Forms API引用)。 - 使用构造函数创建
-
修改签名字段
通过调用
SignatureServiceClient
对象的modifySignatureField
方法并传递以下值来修改签名字段:- 存储包含要修改的签名字段的PDF文档的
BLOB
对象 - 指定签名字段名称的字符串值
- 存储签名字段锁定字典和种子值字典信息的
PDFSignatureFieldProperties
对象
modifySignatureField
方法返回一个BLOB
对象,该对象存储包含修改后的签名字段的PDF文档。 - 存储包含要修改的签名字段的PDF文档的
-
将PDF文档另存为PDF文件
- 通过调用其构造函数并传递一个字符串值来创建一个
System.IO.FileStream
对象,该字符串值表示将包含签名字段的PDF文档的文件位置以及打开文件的模式。 - 创建一个字节数组,用于存储
addSignatureField
方法返回的BLOB
对象的内容。 通过获取BLOB
对象的MTOM
数据成员的值填充字节数组。 - 通过调用其构造函数并传递
System.IO.FileStream
对象来创建System.IO.BinaryWriter
对象。 - 通过调用
System.IO.BinaryWriter
对象的Write
方法并传递字节数组,将字节数组的内容写入PDF文件。
- 通过调用其构造函数并传递一个字符串值来创建一个