Foxit PDF SDK

构造函数 | 属性 | 所有成员列表
FSSignature类 参考
类 FSSignature 继承关系图:

## 构造函数
(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
| 获取签名外观标志。 更多...
FSBitmap * | bitmap
| 获取用于签名外观的位图。
FSSignatureDocPermission | docPermission
| 获取当前签名的文档权限。 更多...
NSString * | filter
| 获取过滤器。 更多...
FSDateTime * | signTime
| 获取签名时间。
NSString * | subFilter
| 获取子过滤器。 更多...

## 详细描述

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

- 要直接从PDF文档中计数和检索为签名对象，请使用函数 FSPDFDoc::getSignatureCount和FSPDFDoc::getSignature:。
- 要计数和检索为签名字段，当字段类型为 FSFieldTypeSignature时，请使用函数 FSForm::getFieldCount:和FSForm::getField:filter:。
- 要添加新签名，请使用函数FSPDFPage::addSignature:。
- 要删除签名，请使用函数FSPDFDoc::removeSignature:。

在签名中，过滤器和子过滤器键用于指定将用于签名和验证签名的 签名回调对象的过滤器和子过滤器。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。
此类提供获取/设置签名信息/属性、签名或验证签名等功能。 例如：

- 要签名未签名的签名，请使用函数FSSignature::startSignWithStreamCallback:cert_password:digest_algorithm:stream_callback:client_data:pause:。 成功签名后，强烈建议用户关闭当前文档， 然后打开已签名的PDF文档，然后执行后续操作。
- 要验证已签名签名的完整性，请使用函数FSSignature::startVerify:pause:。 要检查已签名的签名是否有效，请参阅类FSLTVVerifier 。
- 要直接检索签名字典，请使用函数FSSignature::getSignatureDict。

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

- 要使用默认Foxit外观模板，相关信息可以通过 FSSignature::appearanceFlags、FSSignature::signTime、FSSignature::setKeyValue:value:、 FSSignature::bitmap、FSSignature::setImage:frame_index:设置。
- 要使用自定义外观，请通过函数 FSSignature::setAppearanceContent:设置外观流内容。

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

参见
  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操作类型为FSSignatureFieldMDPActionNone，返回的字段名称数组无用。
- 如果FieldMDP操作类型为FSSignatureFieldMDPActionAll，返回的字段名称数组将包含所有表单字段的名称。
- 如果FieldMDP操作类型为FSSignatureFieldMDPActionInclude，返回的字段名称数组指定在当前签名签署时标志为只读的表单字段。
- 如果FieldMDP操作类型为FSSignatureFieldMDPActionExclude，返回的字段名称数组指定在当前签名为已签名签名时标志不为只读的表单字段 （但其余字段的标志为只读）。

返回
  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:之前调用以下函数来设置签名和签名外观的其他数据：
  - 要使用默认Foxit外观模板，相关信息可以通过 FSSignature::appearanceFlags、FSSignature::signTime、 FSSignature::setKeyValue:value:、FSSignature::bitmap、FSSignature::setImage:frame_index:设置。
  - 要使用自定义外观，请通过函数 FSSignature::setAppearanceContent:设置外观流内容。

## ◆ 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::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了解更多详情。

返回
  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] | action | FieldMDP操作类型。请参阅从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
| read write nonatomic assign

获取签名外观标志。

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

## ◆ docPermission

- (FSSignatureDocPermission) docPermission
| read write nonatomic assign

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

- 如果权限值不是FSSignatureDocPermUnrestricted，表示当前签名已签名时添加新签名将失败
- 如果权限值是FSSignatureDocPermFillingFormAndSigning或FSSignatureDocPermFillingFormSigningAndAnnotating， 表示当前签名已签名时当前签名字段的标志为只读。

## ◆ filter

- (NSString *) filter
| read write nonatomic weak

获取过滤器。

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

## ◆ subFilter

- (NSString *) subFilter
| read write nonatomic weak

获取子过滤器。

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