Foxit PDF SDK
FSSignature类 参考
类 FSSignature 继承关系图:
FSPagingSealSignature

构造函数

(BOOL) - clearSignedData
 如果当前签名已签名且验证有效,清除数据和外观。
更多...
 
(void) - enableEmbedFont:
 启用或禁用嵌入字体。
更多...
 
(void) - enableIncrementalSaveForFirstSigning:
 启用或禁用首次签名的增量保存。用户应在调用 函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前调用此函数。
默认值:NO
更多...
 
(BOOL) - generateAppearance
 生成未签名签名的外观。
更多...
 
(FSInt32Array *) - getByteRangeArray
 获取字节范围数据,包括4个元素。
更多...
 
(NSString *) - getCert:
 通过索引从当前签名的证书链中获取证书。
更多...
 
(int) - getCertCount
 获取当前签名证书链中的证书数量。
更多...
 
(NSString *) - getCertificateInfo:
 获取证书信息。
更多...
 
(FSPDFDoc *) - getDocument
 获取当前签名所属的PDF文档。
更多...
 
(FSSignatureFieldMDPAction- getFieldMDPAction
 获取FieldMDP("MDP"表示修改检测和预防)操作类型。
更多...
 
(NSArray< NSString * > *) - getFieldMDPActionFields
 获取用于FieldMDP操作的字段名称数组。
更多...
 
(NSString *) - getKeyLabel:
 获取指定键标签的字符串。
更多...
 
(NSString *) - getKeyValue:
 获取指定键名的字符串值。
更多...
 
(FSSignaturePAdESLevel- getPAdESLevel
 获取PAdES级别。
更多...
 
(FSSignatureArray *) - getPagingSealGroupElements
 获取当前分页印章签名的组元素。
更多...
 
(FSPagingSealSignature *) - getPagingSealSignature
 获取分页印章签名。
更多...
 
(FSPDFDictionary *) - getSignatureDict
 获取签名字典。
更多...
 
(FSSignatureSignatureType- getSignatureType
 获取签名类型。
更多...
 
(FSPDFDoc *) - getSignedVersionDocument:
 获取当前签名签署时的已签名版本中的PDF文档。
更多...
 
(unsigned int) - getState
 获取当前状态。
更多...
 
(id) - initWithDocument:sig_field_dict:
 构造函数,从签名字段字典创建。
更多...
 
(id) - initWithField:
 构造函数,使用父类对象。
更多...
 
(BOOL) - isEmpty
 检查当前对象是否为空。
更多...
 
(BOOL) - isSigned
 检查当前签名是否已签名。
更多...
 
(BOOL) - isTimeStamp
 检查当前签名是否为时间戳签名。
更多...
 
(void) - setAppearanceContent:
 为已签名签名外观设置自定义外观内容(作为低级绘图操作命令)。
更多...
 
(void) - setCertChain:
 设置证书链。
更多...
 
(void) - setCustomObject:pdf_object:
 为签名字典设置自定义PDF对象。
更多...
 
(void) - setDefaultContentsLength:
 设置表示签名值(称为已签名数据)的签名内容的默认长度。
更多...
 
(void) - setFieldMDPActionFields:field_array:
 设置FieldMDP("MDP"表示修改检测和预防)操作名称数组。
更多...
 
(void) - setImage:frame_index:
 为签名外观设置图像,指定帧索引。
更多...
 
(void) - setImageWithFilePath:frame_index:
 使用指定帧索引为签名外观设置图像。
更多...
 
(void) - setKeyLabel:label_value:
 设置指定键标签的字符串。
更多...
 
(void) - setKeyValue:value:
 设置指定键名的字符串值。
更多...
 
(FSProgressive *) - startSign:cert_password:digest_algorithm:save_path:client_data:pause:
 如果当前签名未签名,开始签名当前签名。
更多...
 
(FSProgressive *) - startSignWithCertFileStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:
 如果当前签名为未签名状态,则开始签名当前签名。
更多...
 
(FSProgressive *) - startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:
 如果当前签名为未签名状态,则开始签名当前签名。
更多...
 
(FSProgressive *) - startVerify:pause:
 如果当前签名已签名,开始验证当前签名的完整性。
更多...
 

属性

unsigned int appearanceFlags
 获取签名外观标志。
更多...
 
FSBitmapbitmap
 获取用于签名外观的位图。

 
FSSignatureDocPermission docPermission
 获取当前签名的文档权限。
更多...
 
NSString * filter
 获取过滤器。
更多...
 
FSDateTime * signTime
 获取签名时间。

 
NSString * subFilter
 获取子过滤器。
更多...
 

详细描述

数字签名(PDF 1.3)可用于验证用户身份和文档内容。 它存储有关签名者和文档签名时状态的信息。签名包含在签名字段中, 作为表单字段的一种类型,因此类FSSignature 派生自 类FSField。 可以通过以下函数检索/添加签名对象:

在签名中,过滤器和子过滤器键用于指定将用于签名和验证签名的 签名回调对象的过滤器和子过滤器。Foxit PDF SDK为以下过滤器和子过滤器提供默认 签名回调:

  • 过滤器:"Adobe.PPKLite"和子过滤器:"adbe.pkcs7.detached"
  • 过滤器:"Adobe.PPKLite"和子过滤器:"adbe.pkcs7.sha1"
  • 过滤器:"Adobe.PPKLite"和子过滤器:"ETSI.CAdES.detached"
  • 过滤器:"Adobe.PPKLite"和子过滤器:"ETSI.RFC3161"

对于子过滤器"ETSI.CAdES.detached"和子过滤器"ETSI.RFC3161",如果要使用默认签名回调进行签名, 请确保已向FSTimeStampServerMgr 设置默认时间戳服务器。 对于其他过滤器和子过滤器,或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调, 用户应准备自定义签名回调并通过函数 FSLibrary::registerSignatureCallback:sub_filter:signature_callback:将回调注册到Foxit PDF SDK。
此类提供获取/设置签名信息/属性、签名或验证签名等功能。 例如:

在签名未签名的签名之前,用户可以调用以下函数来设置签名信息和 签名外观:

如果未签名的签名已设置一些签名信息,但文档直接保存或 在未签名的情况下关闭,这些数据(包括过滤器和子过滤器)将在 保存的文档或关闭的文档中丢失。当文档再次打开时,未签名的签名需要 至少指定过滤器和子过滤器进行签名;否则,此签名无法签名。

参见
FSField
FSForm
FSPDFDoc
FSPDFPage
FSTimeStampServerMgr
FSLTVVerifier

函数文档

◆ clearSignedData()

- (BOOL) clearSignedData

如果当前签名已签名且验证有效,清除数据和外观。

此函数用于已签名且有效的签名。
注意:从7.0开始,此函数仅用于验证签名的完整性。 要检查签名是否有效,请参阅类FSLTVVerifier

返回
YES表示成功清除数据和外观,NO表示无需 清除数据和外观或发生任何错误。

◆ enableEmbedFont:()

- (void) enableEmbedFont: (BOOL)  enable_embed_font

启用或禁用嵌入字体。

参数
指示是否为签名文本嵌入字体的标志。YES表示为签名文本嵌入字体。 NO表示不为签名文本嵌入字体。
返回
无。

◆ enableIncrementalSaveForFirstSigning:()

- (void) enableIncrementalSaveForFirstSigning: (BOOL)  enable_incremental_save

启用或禁用首次签名的增量保存。用户应在调用 函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前调用此函数。
默认值:NO

参数
[in]enable_incremental_save指示是否对首次签名使用增量保存的标志。 YES表示对首次签名使用增量保存。 NO表示对首次签名使用默认保存。
返回
无。

◆ generateAppearance()

- (BOOL) generateAppearance

生成未签名签名的外观。

此函数用于在页面上显示未签名的普通签名,而无需调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:

返回
YES表示成功,NO表示失败。

FSPagingSealSignature 重载.

◆ getByteRangeArray()

- (FSInt32Array *) getByteRangeArray

获取字节范围数据,包括4个元素。

此函数用于已签名的签名,以检索其用于摘要计算的字节范围。 字节范围数组包含4个元素。这4个元素总是成对的 整数(起始字节偏移量,字节长度),描述了 摘要计算的确切字节范围。
请参阅<PDF Reference 1.7>第8.7节数字签名了解更多详细信息。

返回
YES表示成功,NO表示失败。

◆ getCert:()

- (NSString *) getCert: (int)  index

通过索引从当前签名的证书链中获取证书。

建议在验证签名之前使用此函数。 当当前签名的子过滤器为"adbe.x509.rsa_sha1"时,应用程序需要调用此函数 在验证签名之前获取已验证的公共证书。 证书链中的第一个证书是签名证书,可用于验证签名。

参数
[in]index要获取的证书索引。有效范围:从0到(count-1)。 count由函数FSSignature::getCertCount返回。
返回
证书。

◆ getCertCount()

- (int) getCertCount

获取当前签名证书链中的证书数量。

建议在验证签名之前使用此函数。 当当前签名的子过滤器为"adbe.x509.rsa_sha1"时,应用程序需要调用此函数 获取证书链中的证书数量,然后调用函数FSSignature::getCert: 在验证签名之前获取已验证的公共证书。

返回
证书数量。

◆ getCertificateInfo:()

- (NSString *) getCertificateInfo: (NSString *)  key

获取证书信息。

此函数用于已签名的签名。 目前,此函数仅支持iOS和Android平台。

参数
[in]key证书键字符串。目前可以是以下键之一:
  • "SerialNumber"
  • "Issuer"
  • "Subject"
  • "ValidPeriodFrom"
  • "ValidPeriodTo"

返回
证书信息字符串。
注解
对于"ValidPeriodFrom"或"ValidPeriodTo"键,时区值不会被计算在内。

◆ getDocument()

- (FSPDFDoc *) getDocument

获取当前签名所属的PDF文档。

返回
PDF文档对象。

◆ getFieldMDPAction()

- (FSSignatureFieldMDPAction) getFieldMDPAction

获取FieldMDP("MDP"表示修改检测和预防)操作类型。

返回
FieldMDP操作类型。请参阅从FSSignatureFieldMDPActionNone开始的值, 应为这些值中的一个。

◆ getFieldMDPActionFields()

- (NSArray< NSString * > *) getFieldMDPActionFields

获取用于FieldMDP操作的字段名称数组。

返回的字段名称数组与FieldMDP操作相关(可通过函数FSSignature::getFieldMDPAction检查):


返回
FieldMDP操作字段名称数组。

◆ getKeyLabel:()

- (NSString *) getKeyLabel: (FSSignatureLabelName label_name

获取指定键标签的字符串。

如果当前签名是时间戳签名,此函数将始终返回空字符串。

参数
[in]label_name键标签。请参考从FSSignatureLabelNameSigner开始的值, 这应该是这些值中的一个。
返回
指定键标签的字符串。

◆ getKeyValue:()

- (NSString *) getKeyValue: (FSSignatureKeyName key

获取指定键名的字符串值。

此函数用于获取签名字典中某些键的字符串值,如"Reason"、 "Location"等。特别地,

参数
[in]key键名。请参阅从FSSignatureKeyNameSigner开始的值, 应为这些值中的一个。
返回
字符串值。

◆ getPAdESLevel()

- (FSSignaturePAdESLevel) getPAdESLevel

获取PAdES级别。

返回
PAdES级别。请参考从FSSignaturePAdESLevelNotPAdES开始的值, 这将是这些值中的一个。

◆ getPagingSealGroupElements()

- (FSSignatureArray *) getPagingSealGroupElements

获取当前分页印章签名的组元素。

如果当前签名类型为FSSignatureSignatureTypePagingSeal, 此函数将返回与当前签名关联的签名数组。 否则,将返回空数组。

返回
签名数组。

◆ getPagingSealSignature()

- (FSPagingSealSignature *) getPagingSealSignature

获取分页印章签名。

如果当前签名类型为FSSignatureSignatureTypePagingSeal,此函数将返回 与当前签名关联的分页印章签名对象。

返回
FSPagingSealSignature 对象。如果返回对象的函数FSSignature::isEmpty 返回值为YES,表示当前签名不是分页印章签名。

◆ getSignatureDict()

- (FSPDFDictionary *) getSignatureDict

获取签名字典。

签名字典是签名字段字典的一部分。

返回
签名字典。如果出现任何错误,此函数将返回nil

◆ getSignatureType()

- (FSSignatureSignatureType) getSignatureType

获取签名类型。

返回
签名类型。请参考从FSSignatureSignatureTypeOrdinary开始的值, 这将是这些值中的一个。

◆ getSignedVersionDocument:()

- (FSPDFDoc *) getSignedVersionDocument: (NSString *)  file_path

获取当前签名签署时的已签名版本中的PDF文档。

当PDF文档已被多个签名签署且用户想要获取其中一个签名 签署时的PDF文档时,此函数很有用。

参数
[in]file_path当前签名所属的原始打开PDF文档的完整路径。不应为空字符串。
返回
当前签名签署时的已签名版本中的PDF文档对象。 返回的PDF文档可能表示与检索当前签名的当前PDF文档不同的PDF文档,或就是当前PDF文档。 用户应确保在读取或操作已签名版本文档时保持当前PDF文档对象有效。 请确保返回的文档对象在使用类FSPDFDoc 中的大多数函数之前已成功加载。

◆ getState()

- (unsigned int) getState

获取当前状态。

  • 在验证签名之前,此函数用于获取当前签名是否已签名 或当前签名是否缺少签名数据的状态。
  • 在验证签名之后,此函数用于获取验证状态–表示 已验证的签名已签名;如果已验证的签名仍未签名,此函数将 获取未签名状态。


返回
签名状态的值。请参阅从FSSignatureStateUnknown开始的值, 这将是其中一个或它们的组合。
特别地,如果返回的状态是FSSignatureStateNoSignData, 表示当前签名没有签名数据,请至少调用函数 FSSignature::setKeyValue:value:为当前签名设置必要的过滤器和子过滤器。 用户还可以在调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前调用以下函数来设置签名和签名外观的其他数据:

◆ initWithDocument:sig_field_dict:()

- (id) initWithDocument: (FSPDFDoc*)  document
sig_field_dict: (FSPDFDictionary*)  sig_field_dict 

构造函数,从签名字段字典创建。

参数
[in]document一个有效的PDF文档。
[in]sig_field_dict表示签名字段的PDF字典。 它应该属于参数document指定的PDF文档;

◆ initWithField:()

- (id) initWithField: (FSField*)  field

构造函数,使用父类对象。

参数
[in]field父类对象。

◆ isEmpty()

- (BOOL) isEmpty

检查当前对象是否为空。

当前对象为空时,表示当前对象无用。

返回
YES表示当前对象为空,NO表示不为空。

◆ isSigned()

- (BOOL) isSigned

检查当前签名是否已签名。

返回
YES表示当前签名已签名,NO表示未签名。

◆ isTimeStamp()

- (BOOL) isTimeStamp

检查当前签名是否为时间戳签名。

返回
YES表示当前签名是时间戳签名,NO表示不是。

◆ setAppearanceContent:()

- (void) setAppearanceContent: (NSString *)  appearance_content

为已签名签名外观设置自定义外观内容(作为低级绘图操作命令)。

此函数只能在为未签名的签名调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前使用。
一旦设置了自定义外观内容,它将用作已签名外观。在这种情况下, 由FSSignature::appearanceFlags设置的外观标志将被忽略, 相关信息将不会在外观中使用——这些信息由以下函数设置: FSSignature::signTimeFSSignature::setKeyValue:value:(过滤器和子过滤器除外)、 FSSignature::bitmapFSSignature::setImage:frame_index:
如果当前签名是时间戳签名,此函数将不执行任何操作。

参数
[in]appearance_content自定义外观内容。这应该是用于外观的绘制操作命令序列, 例如"10 10 m 20 10 l S"。请参考<PDF Reference 1.7> P196了解更多详情。
返回
None.

◆ setCertChain:()

- (void) setCertChain: (NSArray<NSString *> *)  cert_chain

设置证书链。

建议在签名未签名的签名之前使用此函数。 当签名子过滤器为"adbe.x509.rsa_sha1"时,用户需要调用此函数 将证书链设置到签名中。对于其他子过滤器,此函数将直接返回而不执行任何操作。

参数
[in]cert_chain表示证书链的字符串数组。
返回
None.

◆ setCustomObject:pdf_object:()

- (void) setCustomObject: (NSString *)  key
pdf_object: (FSPDFObject*)  pdf_object 

为签名字典设置自定义PDF对象。

建议在为未签名的签名调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前使用此函数。

参数
[in]key签名字典的键,将设置其值元素。不应为空字符串。
[in]pdf_object要设置为键值的自定义FSPDFObject 对象。不应为nil。 它可以是直接PDF对象或间接PDF对象。
返回
None.

◆ setDefaultContentsLength:()

- (void) setDefaultContentsLength: (unsigned int)  default_length

设置表示签名值(称为已签名数据)的签名内容的默认长度。

此函数只能在为未签名的签名调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前使用。
签名内容表示签名值(称为已签名数据)。 初始化签名字段时,签名内容将以默认长度7942初始化。当使用自定义签名回调来签名和验证未签名的签名时, 用户可以调用此函数来更改签名内容的默认长度。在这种情况下, 用户还应确保回调函数FSSignatureCallback::sign:cert_path:cert_password:digest_algorithm:client_data:中返回的已签名数据的长度 不应大于此函数设置的默认长度。

参数
[in]default_length签名值(称为已签名数据)的默认长度,以字节为单位。 不应小于4098。
返回
None.

◆ setFieldMDPActionFields:field_array:()

- (void) setFieldMDPActionFields: (FSSignatureFieldMDPAction action
field_array: (NSArray<NSString *> *)  field_array 

设置FieldMDP("MDP"表示修改检测和预防)操作名称数组。

此函数仅对未签名的签名有用。如果对已签名的签名使用此函数,则不会执行任何操作。
如果当前签名已签名,此函数无效。

参数
[in]actionFieldMDP操作类型。请参阅从FSSignatureFieldMDPActionNone开始的值, 应为这些值中的一个。
  • 如果此值为FSSignatureFieldMDPActionNone,表示不使用FieldMDP操作。
  • 如果此值为FSSignatureFieldMDPActionAll,参数field_array将被忽略, 所有字段将包含在对象摘要中(因此在当前签名签署后不允许更改)。
  • 如果此值为FSSignatureFieldMDPActionInclude,表示只有参数field_array指定的 表单字段的标志将被设置为只读,这些字段将包含在对象摘要中 (因此在当前签名签署后不允许更改)。
  • 如果此值为FSSignatureFieldMDPActionExclude,表示表单字段(除参数field_array指定的字段外) 的标志将被设置为只读,这些字段包含在对象摘要中 (因此在当前签名签署后不允许更改)。

[in]field_array用于FieldMDP操作的字段名称数组。
返回
无。

◆ setImage:frame_index:()

- (void) setImage: (FSImage*)  image
frame_index: (int)  frame_index 

为签名外观设置图像,指定帧索引。

建议在为未签名的签名调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前使用此函数。 如果已通过函数FSSignature::setAppearanceContent:设置了自定义外观内容, 则图像将不会在已签名外观中使用。
输入图像可能包含多个帧,只能将图像的一帧设置到当前签名。
如果当前签名是时间戳签名,此函数将不执行任何操作。

参数
[in]image图像。它的一帧将设置到当前签名。此图像至少包含 一帧,图像类型不应为FSImageUnknown
[in]frame_index帧索引。有效范围:从0到(count-1)。 count由函数FSImage::getFrameCount返回。
返回
None.

◆ setImageWithFilePath:frame_index:()

- (void) setImageWithFilePath: (NSString *)  file_path
frame_index: (int)  frame_index 

使用指定帧索引为签名外观设置图像。

建议在为未签名的签名调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前使用此函数。 如果已通过函数FSSignature::setAppearanceContent:设置了自定义外观内容, 则图像将不会在已签名外观中使用。
输入图像可能包含多个帧,只能将图像的一帧设置到当前签名。
如果当前签名是时间戳签名,此函数将不执行任何操作。

参数
[in]file_path现有图像文件的完整路径。不应为空字符串。
[in]frame_index帧索引。有效范围:从0到(count-1)。 count由输入图像文件的函数FSImage::getFrameCount返回。
返回
None.

◆ setKeyLabel:label_value:()

- (void) setKeyLabel: (FSSignatureLabelName label_name
label_value: (NSString *)  label_value 

设置指定键标签的字符串。

建议在为未签名的签名调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前使用此函数。
此函数用于设置签名字典中某些键的自定义标签的字符串值。 如果未设置自定义标签,Foxit PDF SDK将使用默认标签。请参阅从FSSignatureLabelNameSigner开始的值的注释了解更多详细信息。
如果当前签名是时间戳签名,此函数将不执行任何操作。

参数
[in]label_name键标签。请参阅从FSSignatureLabelNameSigner开始的值, 应为这些值中的一个。
[in]label_value键标签的新字符串值。如果这是空字符串,Foxit PDF SDK将使用默认标签。 请参阅从FSSignatureLabelNameSigner开始的值的注释了解更多详细信息。
返回
无。

◆ setKeyValue:value:()

- (void) setKeyValue: (FSSignatureKeyName key
value: (NSString *)  value 

设置指定键名的字符串值。

建议在为未签名的签名调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前使用此函数。
此函数用于设置签名字典中某些键的字符串值,如签名者、原因、 位置等。
如果当前签名是时间戳签名,此函数将不执行任何操作。

参数
[in]key键名。请参阅从FSSignatureKeyNameSigner开始的值, 应为这些值中的一个。
[in]value新的字符串值。
返回
无。

◆ startSign:cert_password:digest_algorithm:save_path:client_data:pause:()

- (FSProgressive *) startSign: (NSString *)  cert_path
cert_password: (NSString *)  cert_password
digest_algorithm: (FSSignatureDigestAlgorithm digest_algorithm
save_path: (NSString *)  save_path
client_data: (NSData *)  client_data
pause: (id<FSPauseCallback>)  pause 

如果当前签名未签名,开始签名当前签名。

此函数用于未签名的签名。当前签名的过滤器和子过滤器键指定 将用于签名当前签名的签名回调对象的名称。因此在签名之前, 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一,表示使用Foxit PDF SDK中的默认签名回调:

  • 过滤器:"Adobe.PPKLite"和子过滤器:"adbe.pkcs7.detached"
  • 过滤器:"Adobe.PPKLite"和子过滤器:"adbe.pkcs7.sha1"
  • 过滤器:"Adobe.PPKLite"和子过滤器:"ETSI.CAdES.detached"
  • 过滤器:"Adobe.PPKLite"和子过滤器:"ETSI.RFC3161"

对于其他过滤器和子过滤器,或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调, 请确保已通过函数FSLibrary::registerSignatureCallback:sub_filter:signature_callback:将自定义签名回调注册到Foxit PDF SDK。
对于符合PDF/A规范的PDF文档,建议调用FSLibrary::setDefaultICCProfilesPath: 并在调用当前函数之前通过调用FSSignature::enableEmbedFont:启用字体嵌入。 签名可能需要很长时间,因此Foxit PDF SDK使用渐进过程来执行此操作。

参数
[in]cert_path将用于签名的证书文件的完整路径(包括文件名和扩展名)。 如果在自定义签名回调中不需要,可以是空字符串。当此文件路径不为空时, 应为有效路径。
如果要使用默认签名回调来签名当前签名, 这可以是PFX证书文件。
[in]cert_password用于打开证书文件的密码字符串。如果这是空字符串, 表示不需要密码。
[in]digest_algorithm签名数据的消息摘要算法。请参阅从FSSignatureDigestSHA1开始的值, 应为这些值中的一个。
[in]save_path用于保存签名结果的完整PDF文件路径。已签名文档将 保存到另一个PDF文件。
[in]client_data用户定义对象,将传递给FSSignatureCallback 中的回调函数。 如果要使用默认回调对象来签名当前签名,则此参数无用。默认值:nil
[in]pause决定签名过程是否需要暂停的暂停对象。可以为nil, 表示在签名过程中不暂停。如果不为nil, 应为用户实现的有效暂停对象。默认值:nil
返回
渐进对象。请通过函数FSProgressive::getRateOfProgress检查当前进度的比率。 如果比率尚未达到100,调用函数FSProgressive::resume继续进度,直到进度完成。
注解
此函数不支持将已签名的PDF文档直接保存到用于构造当前签名相关PDF文档的PDF文件中。 为了实现这一点,建议用户按照以下步骤操作:
假设相关的PDF文档对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将签名结果保存到临时文件。在这里,此临时文件 命名为"temp.tmp"。
  2. 确保相关的PDF文档对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
然后用户可以打开已签名的PDF文档进行其他操作。

◆ startSignWithCertFileStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:()

- (FSProgressive *) startSignWithCertFileStreamCallback: (id<FSFileStreamCallback>)  cert_file_stream
cert_password: (NSString *)  cert_password
digest_algorithm: (FSSignatureDigestAlgorithm digest_algorithm
stream_callback: (id<FSFileStreamCallback>)  stream_callback
client_data: (NSData *)  client_data
pause: (id<FSPauseCallback>)  pause 

如果当前签名为未签名状态,则开始签名当前签名。

此函数用于未签名的签名对象。当前签名的过滤器和子过滤器键指定了 用于签名当前签名的签名回调对象的名称。因此在签名之前, 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一,意味着使用Foxit PDF SDK中的默认签名回调:

  • filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.detached"
  • filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.sha1"
  • filter: "Adobe.PPKLite" and sub filter: "ETSI.CAdES.detached"
  • filter: "Adobe.PPKLite" and sub filter: "ETSI.RFC3161"

对于子过滤器"ETSI.CAdES.detached"和子过滤器"ETSI.RFC3161",如果要使用它们的默认签名回调进行签名, 请确保已向FSTimeStampServerMgr 设置默认的时间戳服务器。 对于其他过滤器和子过滤器,或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调, 请确保已通过函数FSLibrary::registerSignatureCallback:sub_filter:signature_callback:向Foxit PDF SDK注册自定义签名回调。
对于符合PDF/A规范的PDF文档,建议在调用当前函数之前调用FSLibrary::setDefaultICCProfilesPath: 并通过调用FSSignature::enableEmbedFont:启用字体嵌入。 签名操作可能需要很长时间,因此Foxit PDF SDK使用渐进式处理来完成此操作。

参数
[in]cert_file_stream用户实现的FSFileStreamCallback对象, 用于访问将用于签名的证书文件内容。 如果在自定义签名回调中不需要,这可以是nil
如果要使用默认签名回调来签名当前签名,可以使用PFX证书文件。
[in]cert_password用于打开证书文件的密码字符串。如果这是空字符串, 表示不需要密码。
[in]digest_algorithm签名数据的消息摘要算法。请参考从FSSignatureDigestSHA1开始的值, 这应该是这些值中的一个。
[in]stream_callback用户实现的FSFileStreamCallback对象,用于保存签名结果。 已签名的文档将保存到另一个PDF文件。
[in]client_data用户定义的对象,将传递给FSSignatureCallback 中的回调函数。 如果使用默认回调对象来签名当前签名,则此参数无用。 默认值:nil
[in]pause决定签名过程是否需要暂停的暂停对象。这可以是 nil,表示在签名过程中不暂停。如果不为 nil,它应该是用户实现的有效暂停对象。 默认值:nil
返回
渐进式对象。请通过函数FSProgressive::getRateOfProgress检查当前进度率。 如果进度率还不是100,请调用函数FSProgressive::resume继续进度, 直到进度完成。
注解
此函数不支持将已签名的PDF文档直接保存到用于 构建当前签名相关PDF文档的PDF文件中。为了做到这一点,建议用户 执行以下步骤:
假设相关的PDF文档对象是从名为"org.pdf"的PDF文件构建的。
  1. 使用当前函数将签名结果保存到临时文件。这里,此临时文件命名为"temp.tmp"。
  2. 确保相关的PDF文档对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
然后用户可以打开已签名的PDF文档进行其他操作。

◆ startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:()

- (FSProgressive *) startSignWithStreamCallback: (NSString *)  cert_path
cert_password: (NSString *)  cert_password
digest_algorithm: (FSSignatureDigestAlgorithm digest_algorithm
stream_callback: (id<FSFileStreamCallback>)  stream_callback
client_data: (NSData *)  client_data
pause: (id<FSPauseCallback>)  pause 

如果当前签名为未签名状态,则开始签名当前签名。

此函数用于未签名的签名对象。当前签名的过滤器和子过滤器键指定了 用于签名当前签名的签名回调对象的名称。因此在签名之前, 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一,意味着使用Foxit PDF SDK中的默认签名回调:

  • 过滤器: "Adobe.PPKLite" 和子过滤器: "adbe.pkcs7.detached"
  • 过滤器: "Adobe.PPKLite" 和子过滤器: "adbe.pkcs7.sha1"
  • 过滤器: "Adobe.PPKLite" 和子过滤器: "ETSI.CAdES.detached"
  • 过滤器: "Adobe.PPKLite" 和子过滤器: "ETSI.RFC3161"

对于子过滤器"ETSI.CAdES.detached"和子过滤器"ETSI.RFC3161",如果要使用它们的默认签名回调进行签名, 请确保已向FSTimeStampServerMgr 设置默认的时间戳服务器。 对于其他过滤器和子过滤器,或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调, 请确保已通过函数FSLibrary::registerSignatureCallback:sub_filter:signature_callback:向Foxit PDF SDK注册自定义签名回调。
对于符合PDF/A规范的PDF文档,建议在调用当前函数之前调用FSLibrary::setDefaultICCProfilesPath: 并通过调用FSSignature::enableEmbedFont:启用字体嵌入。 签名操作可能需要很长时间,因此Foxit PDF SDK使用渐进式处理来完成此操作。

参数
[in]cert_path证书文件的完整路径(包括文件名和扩展名), 将用于签名。如果在自定义签名回调中不需要,这可以是空字符串。 当此文件路径不为空时,它应该是有效路径。
如果要使用默认签名回调来签名当前签名, 这可以是PFX证书文件。
[in]cert_password用于打开证书文件的密码字符串。如果这是空字符串, 表示不需要密码。
[in]digest_algorithm签名数据的消息摘要算法。请参考从FSSignatureDigestSHA1开始的值, 这应该是这些值中的一个。
[in]stream_callback用户实现的FSFileStreamCallback对象,用于保存签名结果。 已签名的文档将保存到另一个PDF文件。
[in]client_data用户定义的对象,将传递给FSSignatureCallback 中的回调函数。 如果使用默认回调对象来签名当前签名,则此参数无用。默认值:nil
[in]pause决定签名过程是否需要暂停的暂停对象。这可以是 nil,表示在签名过程中不暂停。如果不为 nil,它应该是用户实现的有效暂停对象。 默认值:nil
返回
渐进式对象。请通过函数FSProgressive::getRateOfProgress检查当前进度率。 如果进度率还不是100,请调用函数FSProgressive::resume继续进度, 直到进度完成。
注解
此函数不支持将已签名的PDF文档直接保存到用于构建当前签名相关PDF文档的PDF文件中。 为了做到这一点,建议用户执行以下步骤:
假设相关的PDF文档对象是从名为"org.pdf"的PDF文件构建的。
  1. 使用当前函数将签名结果保存到临时文件。这里,此临时文件命名为"temp.tmp"。
  2. 确保相关的PDF文档对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
然后用户可以打开已签名的PDF文档进行其他操作。

◆ startVerify:pause:()

- (FSProgressive *) startVerify: (NSData *)  client_data
pause: (id<FSPauseCallback>)  pause 

如果当前签名已签名,开始验证当前签名的完整性。

此函数用于已签名的签名。当前签名的过滤器和子过滤器键指定 将用于验证当前签名的签名回调对象的名称。因此在验证之前, 请确保:必要的签名回调对象已通过函数 FSLibrary::registerSignatureCallback:sub_filter:signature_callback:注册。如果当前已签名签名的过滤器和子过滤器 是以下字符串之一,表示使用Foxit PDF SDK中的默认签名回调, 用户无需为它们注册:

  • 过滤器:"Adobe.PPKLite"和子过滤器:"adbe.pkcs7.detached"
  • 过滤器:"Adobe.PPKLite"和子过滤器:"adbe.pkcs7.sha1"
  • 过滤器:"Adobe.PPKLite"和子过滤器:"ETSI.CAdES.detached"
  • 过滤器:"Adobe.PPKLite"和子过滤器:"ETSI.RFC3161"

验证签名可能需要很长时间,因此Foxit PDF SDK使用渐进过程来执行此操作。
从7.0开始,此函数仅用于验证签名的完整性。要检查签名是否有效, 请参阅类FSLTVVerifier

参数
[in]client_data用户定义对象,将传递给FSSignatureCallback 中的回调函数。 如果要使用默认回调对象来验证当前签名,则此参数无用。默认值:nil
[in]pause决定验证过程是否需要暂停的暂停对象。 可以为nil,表示在验证过程中不暂停。 如果不为nil,应为用户实现的有效暂停对象。 默认值:nil
返回
渐进对象。请通过函数FSProgressive::getRateOfProgress检查当前进度的比率。 如果比率尚未达到100,调用函数FSProgressive::resume继续进度,直到进度完成。

属性说明

◆ appearanceFlags

- (unsigned int) appearanceFlags
readwritenonatomicassign

获取签名外观标志。

签名外观标志指示将显示哪些信息。 目前,这仅在FSSignature::appearanceFlags成功设置后有用。 对于从PDF文档获取的签名,此函数的返回值无用。

◆ docPermission

- (FSSignatureDocPermission) docPermission
readwritenonatomicassign

获取当前签名的文档权限。


◆ filter

- (NSString *) filter
readwritenonatomicweak

获取过滤器。

过滤器和子过滤器用于指定将使用哪个已注册的签名回调对象来 签名/验证当前签名。

◆ subFilter

- (NSString *) subFilter
readwritenonatomicweak

获取子过滤器。

过滤器和子过滤器用于指定将使用哪个已注册的签名回调对象来 签名/验证当前签名。