|
Foxit PDF SDK
|
属性 | |
| unsigned int | appearanceFlags |
| 获取签名外观标志。 更多... | |
| FSBitmap * | bitmap |
| 获取用于签名外观的位图。 | |
| FSSignatureDocPermission | docPermission |
| 获取当前签名的文档权限。 更多... | |
| NSString * | filter |
| 获取过滤器。 更多... | |
| FSDateTime * | signTime |
| 获取签名时间。 | |
| NSString * | subFilter |
| 获取子过滤器。 更多... | |
数字签名(PDF 1.3)可用于验证用户身份和文档内容。 它存储有关签名者和文档签名时状态的信息。签名包含在签名字段中, 作为表单字段的一种类型,因此类FSSignature 派生自 类FSField。 可以通过以下函数检索/添加签名对象:
在签名中,过滤器和子过滤器键用于指定将用于签名和验证签名的 签名回调对象的过滤器和子过滤器。Foxit PDF SDK为以下过滤器和子过滤器提供默认 签名回调:
对于子过滤器"ETSI.CAdES.detached"和子过滤器"ETSI.RFC3161",如果要使用默认签名回调进行签名, 请确保已向FSTimeStampServerMgr 设置默认时间戳服务器。 对于其他过滤器和子过滤器,或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调, 用户应准备自定义签名回调并通过函数 FSLibrary::registerSignatureCallback:sub_filter:signature_callback:将回调注册到Foxit PDF SDK。
此类提供获取/设置签名信息/属性、签名或验证签名等功能。 例如:
在签名未签名的签名之前,用户可以调用以下函数来设置签名信息和 签名外观:
如果未签名的签名已设置一些签名信息,但文档直接保存或 在未签名的情况下关闭,这些数据(包括过滤器和子过滤器)将在 保存的文档或关闭的文档中丢失。当文档再次打开时,未签名的签名需要 至少指定过滤器和子过滤器进行签名;否则,此签名无法签名。
| - (BOOL) clearSignedData |
如果当前签名已签名且验证有效,清除数据和外观。
此函数用于已签名且有效的签名。
注意:从7.0开始,此函数仅用于验证签名的完整性。 要检查签名是否有效,请参阅类FSLTVVerifier 。
| - (void) enableEmbedFont: | (BOOL) | enable_embed_font |
启用或禁用嵌入字体。
| 指示是否为签名文本嵌入字体的标志。 | YES表示为签名文本嵌入字体。 NO表示不为签名文本嵌入字体。 |
| - (void) enableIncrementalSaveForFirstSigning: | (BOOL) | enable_incremental_save |
启用或禁用首次签名的增量保存。用户应在调用 函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前调用此函数。
默认值:NO。
| [in] | enable_incremental_save | 指示是否对首次签名使用增量保存的标志。 YES表示对首次签名使用增量保存。 NO表示对首次签名使用默认保存。 |
| - (BOOL) generateAppearance |
生成未签名签名的外观。
此函数用于在页面上显示未签名的普通签名,而无需调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:。
被 FSPagingSealSignature 重载.
| - (FSInt32Array *) getByteRangeArray |
获取字节范围数据,包括4个元素。
此函数用于已签名的签名,以检索其用于摘要计算的字节范围。 字节范围数组包含4个元素。这4个元素总是成对的 整数(起始字节偏移量,字节长度),描述了 摘要计算的确切字节范围。
请参阅<PDF Reference 1.7>第8.7节数字签名了解更多详细信息。
| - (NSString *) getCert: | (int) | index |
通过索引从当前签名的证书链中获取证书。
建议在验证签名之前使用此函数。 当当前签名的子过滤器为"adbe.x509.rsa_sha1"时,应用程序需要调用此函数 在验证签名之前获取已验证的公共证书。 证书链中的第一个证书是签名证书,可用于验证签名。
| [in] | index | 要获取的证书索引。有效范围:从0到(count-1)。 count由函数FSSignature::getCertCount返回。 |
| - (int) getCertCount |
获取当前签名证书链中的证书数量。
建议在验证签名之前使用此函数。 当当前签名的子过滤器为"adbe.x509.rsa_sha1"时,应用程序需要调用此函数 获取证书链中的证书数量,然后调用函数FSSignature::getCert: 在验证签名之前获取已验证的公共证书。
| - (NSString *) getCertificateInfo: | (NSString *) | key |
获取证书信息。
此函数用于已签名的签名。 目前,此函数仅支持iOS和Android平台。
| [in] | key | 证书键字符串。目前可以是以下键之一:
|
| - (FSPDFDoc *) getDocument |
获取当前签名所属的PDF文档。
| - (FSSignatureFieldMDPAction) getFieldMDPAction |
获取FieldMDP("MDP"表示修改检测和预防)操作类型。
| - (NSArray< NSString * > *) getFieldMDPActionFields |
获取用于FieldMDP操作的字段名称数组。
返回的字段名称数组与FieldMDP操作相关(可通过函数FSSignature::getFieldMDPAction检查):
| - (NSString *) getKeyLabel: | (FSSignatureLabelName) | label_name |
获取指定键标签的字符串。
如果当前签名是时间戳签名,此函数将始终返回空字符串。
| [in] | label_name | 键标签。请参考从FSSignatureLabelNameSigner开始的值, 这应该是这些值中的一个。 |
| - (NSString *) getKeyValue: | (FSSignatureKeyName) | key |
获取指定键名的字符串值。
此函数用于获取签名字典中某些键的字符串值,如"Reason"、 "Location"等。特别地,
| [in] | key | 键名。请参阅从FSSignatureKeyNameSigner开始的值, 应为这些值中的一个。 |
| - (FSSignaturePAdESLevel) getPAdESLevel |
获取PAdES级别。
| - (FSSignatureArray *) getPagingSealGroupElements |
| - (FSPagingSealSignature *) getPagingSealSignature |
获取分页印章签名。
如果当前签名类型为FSSignatureSignatureTypePagingSeal,此函数将返回 与当前签名关联的分页印章签名对象。
| - (FSPDFDictionary *) getSignatureDict |
获取签名字典。
签名字典是签名字段字典的一部分。
| - (FSSignatureSignatureType) getSignatureType |
获取签名类型。
| - (FSPDFDoc *) getSignedVersionDocument: | (NSString *) | file_path |
获取当前签名签署时的已签名版本中的PDF文档。
当PDF文档已被多个签名签署且用户想要获取其中一个签名 签署时的PDF文档时,此函数很有用。
| [in] | file_path | 当前签名所属的原始打开PDF文档的完整路径。不应为空字符串。 |
| - (unsigned int) getState |
获取当前状态。
| - (id) initWithDocument: | (FSPDFDoc*) | document | |
| sig_field_dict: | (FSPDFDictionary*) | sig_field_dict | |
构造函数,从签名字段字典创建。
| [in] | document | 一个有效的PDF文档。 |
| [in] | sig_field_dict | 表示签名字段的PDF字典。 它应该属于参数document指定的PDF文档; |
| - (id) initWithField: | (FSField*) | field |
构造函数,使用父类对象。
| [in] | field | 父类对象。 |
| - (BOOL) isEmpty |
检查当前对象是否为空。
当前对象为空时,表示当前对象无用。
| - (BOOL) isSigned |
检查当前签名是否已签名。
| - (BOOL) isTimeStamp |
检查当前签名是否为时间戳签名。
| - (void) setAppearanceContent: | (NSString *) | appearance_content |
为已签名签名外观设置自定义外观内容(作为低级绘图操作命令)。
此函数只能在为未签名的签名调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前使用。
一旦设置了自定义外观内容,它将用作已签名外观。在这种情况下, 由FSSignature::appearanceFlags设置的外观标志将被忽略, 相关信息将不会在外观中使用——这些信息由以下函数设置: FSSignature::signTime、FSSignature::setKeyValue:value:(过滤器和子过滤器除外)、 FSSignature::bitmap、FSSignature::setImage:frame_index:。
如果当前签名是时间戳签名,此函数将不执行任何操作。
| [in] | appearance_content | 自定义外观内容。这应该是用于外观的绘制操作命令序列, 例如"10 10 m 20 10 l S"。请参考<PDF Reference 1.7> P196了解更多详情。 |
| - (void) setCertChain: | (NSArray<NSString *> *) | cert_chain |
设置证书链。
建议在签名未签名的签名之前使用此函数。 当签名子过滤器为"adbe.x509.rsa_sha1"时,用户需要调用此函数 将证书链设置到签名中。对于其他子过滤器,此函数将直接返回而不执行任何操作。
| [in] | cert_chain | 表示证书链的字符串数组。 |
| - (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对象。 |
| - (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。 |
| - (void) setFieldMDPActionFields: | (FSSignatureFieldMDPAction) | action | |
| field_array: | (NSArray<NSString *> *) | field_array | |
设置FieldMDP("MDP"表示修改检测和预防)操作名称数组。
此函数仅对未签名的签名有用。如果对已签名的签名使用此函数,则不会执行任何操作。
如果当前签名已签名,此函数无效。
| [in] | action | FieldMDP操作类型。请参阅从FSSignatureFieldMDPActionNone开始的值, 应为这些值中的一个。
|
| [in] | field_array | 用于FieldMDP操作的字段名称数组。 |
| - (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返回。 |
| - (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返回。 |
| - (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开始的值的注释了解更多详细信息。 |
| - (void) setKeyValue: | (FSSignatureKeyName) | key | |
| value: | (NSString *) | value | |
设置指定键名的字符串值。
建议在为未签名的签名调用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:之前使用此函数。
此函数用于设置签名字典中某些键的字符串值,如签名者、原因、 位置等。
如果当前签名是时间戳签名,此函数将不执行任何操作。
| [in] | key | 键名。请参阅从FSSignatureKeyNameSigner开始的值, 应为这些值中的一个。 |
| [in] | value | 新的字符串值。 |
| - (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中的默认签名回调:
对于其他过滤器和子过滤器,或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调, 请确保已通过函数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 *) 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中的默认签名回调:
对于子过滤器"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 *) 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中的默认签名回调:
对于子过滤器"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 *) startVerify: | (NSData *) | client_data | |
| pause: | (id<FSPauseCallback>) | pause | |
如果当前签名已签名,开始验证当前签名的完整性。
此函数用于已签名的签名。当前签名的过滤器和子过滤器键指定 将用于验证当前签名的签名回调对象的名称。因此在验证之前, 请确保:必要的签名回调对象已通过函数 FSLibrary::registerSignatureCallback:sub_filter:signature_callback:注册。如果当前已签名签名的过滤器和子过滤器 是以下字符串之一,表示使用Foxit PDF SDK中的默认签名回调, 用户无需为它们注册:
验证签名可能需要很长时间,因此Foxit PDF SDK使用渐进过程来执行此操作。
从7.0开始,此函数仅用于验证签名的完整性。要检查签名是否有效, 请参阅类FSLTVVerifier 。
| [in] | client_data | 用户定义对象,将传递给FSSignatureCallback 中的回调函数。 如果要使用默认回调对象来验证当前签名,则此参数无用。默认值:nil。 |
| [in] | pause | 决定验证过程是否需要暂停的暂停对象。 可以为nil,表示在验证过程中不暂停。 如果不为nil,应为用户实现的有效暂停对象。 默认值:nil。 |
|
readwritenonatomicassign |
获取签名外观标志。
签名外观标志指示将显示哪些信息。 目前,这仅在FSSignature::appearanceFlags成功设置后有用。 对于从PDF文档获取的签名,此函数的返回值无用。
|
readwritenonatomicassign |
获取当前签名的文档权限。
|
readwritenonatomicweak |
获取过滤器。
过滤器和子过滤器用于指定将使用哪个已注册的签名回调对象来 签名/验证当前签名。
|
readwritenonatomicweak |
获取子过滤器。
过滤器和子过滤器用于指定将使用哪个已注册的签名回调对象来 签名/验证当前签名。