Foxit PDF SDK

Public 类型 | Public 成员函数 | 所有成员列表
foxit::pdf::Signature类 参考
类 foxit::pdf::Signature 继承关系图:

## Public 类型
enum | APFlags { e_APFlagFoxitFlag = 0x0001, e_APFlagLabel = 0x0002, e_APFlagReason = 0x0004, e_APFlagSigningTime = 0x0008, e_APFlagDN = 0x0010, e_APFlagLocation = 0x0020, e_APFlagSigner = 0x0040, e_APFlagBitmap = 0x0080, e_APFlagText = 0x0100, e_APFlagFoxitEditorFlag = 0x0200, e_APFlagProducer = 0x0400 }
| 签名外观标志的枚举。 更多...
enum | DigestAlgorithm { e_DigestSHA1 = 0, e_DigestSHA256 = 1, e_DigestSHA384 = 2, e_DigestSHA512 = 3 }
| 签名摘要算法的枚举。 更多...
enum | DocPermission { e_DocPermUnrestricted = 0, e_DocPermNoChangesAllowed = 1, e_DocPermFillingFormAndSigning = 2, e_DocPermFillingFormSigningAndAnnotating = 3 }
| 签名文档权限的枚举。 更多...
enum | FieldMDPAction { e_FieldMDPActionNone = 0, e_FieldMDPActionAll = 1, e_FieldMDPActionInclude = 2, e_FieldMDPActionExclude = 3 }
| 签名字段MDP（"MDP"表示修改检测和预防）操作类型的枚举。 更多...
enum | KeyName { e_KeyNameSigner = 0, e_KeyNameLocation = 1, e_KeyNameReason = 2, e_KeyNameContactInfo = 3, e_KeyNameDN = 4, e_KeyNameText = 5, e_KeyNameProducer = 6 }
| 签名键名的枚举。 更多...
enum | LabelName { e_LabelNameSigner = 0, e_LabelNameLocation = 1, e_LabelNameReason = 2, e_LabelNameSignTime = 3, e_LabelNameDN = 4, e_LabelNameProducer = 6 }
| 签名标签名称的枚举。 更多...
enum | PAdESLevel { e_PAdESLevelNotPAdES = 0, e_PAdESLevelNone = 1, e_PAdESLevelBB = 2, e_PAdESLevelBT = 3, e_PAdESLevelBLT = 4, e_PAdESLevelBLTA = 5 }
| PAdES级别的枚举。 更多...
enum | SignatureType { e_SignatureTypeOrdinary = 0, e_SignatureTypeTimeStamp = 3, e_SignatureTypePagingSeal = 4 }
| 签名类型的枚举。 更多...
enum | States { e_StateUnknown = 0x80000000, e_StateNoSignData = 0x00000200, e_StateUnsigned = 0x00000001, e_StateSigned = 0x00000002, e_StateVerifyValid = 0x00000004, e_StateVerifyInvalid = 0x00000008, e_StateVerifyErrorData = 0x00000010, e_StateVerifyNoSupportWay = 0x00000020, e_StateVerifyErrorByteRange = 0x00000040, e_StateVerifyChange = 0x00000080, e_StateVerifyIncredible = 0x00000100, e_StateVerifyNoChange = 0x00000400, e_StateVerifyIssueValid = 0x00001000, e_StateVerifyIssueUnknown = 0x00002000, e_StateVerifyIssueRevoke = 0x00004000, e_StateVerifyIssueExpire = 0x00008000, e_StateVerifyIssueUncheck = 0x00010000, e_StateVerifyIssueCurrent = 0x00020000, e_StateVerifyTimestampNone = 0x00040000, e_StateVerifyTimestampDoc = 0x00080000, e_StateVerifyTimestampValid = 0x00100000, e_StateVerifyTimestampInvalid = 0x00200000, e_StateVerifyTimestampExpire = 0x00400000, e_StateVerifyTimestampIssueUnknown = 0x00800000, e_StateVerifyTimestampIssueValid = 0x01000000, e_StateVerifyTimestampTimeBefore = 0x02000000, e_StateCertCannotGetVRI = 0x04000000, e_StateVerifyChangeLegal = 0x08000000, e_StateVerifyChangeIllegal = 0x10000000 }
| 签名状态的枚举。 更多...
Public 类型 继承自 foxit::pdf::interform::Field
enum | Flags { e_FlagReadOnly = 0x01, e_FlagRequired = 0x02, e_FlagNoExport = 0x04, e_FlagButtonNoToggleToOff = 0x100, e_FlagButtonRadiosInUnison = 0x200, e_FlagTextMultiline = 0x100, e_FlagTextPassword = 0x200, e_FlagTextFileSelect = 0x400, e_FlagTextNoSpellCheck = 0x800, e_FlagTextDoNotScroll = 0x1000, e_FlagTextComb = 0x2000, e_FlagComboEdit = 0x100, e_FlagChoiceMultiSelect = 0x100, e_FlagTextRichText = 0x4000, e_FlagChoiceSort = 0x200, e_FlagChoiceCommitOnSelChange = 0x400 }
| 表单字段标志的枚举。 更多...
enum | Type { e_TypeUnknown = 0, e_TypePushButton = 1, e_TypeCheckBox = 2, e_TypeRadioButton = 3, e_TypeComboBox = 4, e_TypeListBox = 5, e_TypeTextField = 6, e_TypeSignature = 7 }
| 表单字段类型的枚举。 更多...

## Public 成员函数
| Signature (const foxit::pdf::PDFDoc &document, foxit::pdf::objects::PDFDictionary *sig_field_dict)
| 构造函数，从签名字段字典创建。 更多...
| Signature (const interform::Field &field)
| 构造函数，使用父类对象。 更多...
| ~Signature ()
| 析构函数。
bool | ClearSignedData ()
| 如果当前签名已签名且验证有效，清除数据和外观。 更多...
void | EnableEmbedFont (bool enable_embed_font)
| 启用或禁用嵌入字体。 更多...
void | EnableIncrementalSaveForFirstSigning (bool enable_incremental_save)
| 启用或禁用首次签名的增量保存。用户应在调用 函数Signature::StartSign之前调用此函数。 默认值：false。 更多...
bool | GenerateAppearance ()
| 生成未签名签名的外观。 更多...
uint32 | GetAppearanceFlags ()
| 获取签名外观标志。 更多...
common::Bitmap | GetBitmap ()
| 获取用于签名外观的位图。 更多...
bool | GetByteRangeArray (uint32 out_byte_range_array[4])
| 获取字节范围数据，包括4个元素。 更多...
WString | GetCert (int32 index) const
| 通过索引从当前签名的证书链中获取证书。 更多...
int32 | GetCertCount () const
| 获取当前签名证书链中的证书数量。 更多...
String | GetCertificateInfo (const char *key)
| 获取证书信息。 更多...
DocPermission | GetDocPermission ()
| 获取当前签名的文档权限。 更多...
PDFDoc | GetDocument ()
| 获取当前签名所属的PDF文档。 更多...
FieldMDPAction | GetFieldMDPAction ()
| 获取FieldMDP（"MDP"表示修改检测和预防）操作类型。 更多...
WStringArray | GetFieldMDPActionFields ()
| 获取用于FieldMDP操作的字段名称数组。 更多...
String | GetFilter ()
| 获取过滤器。 更多...
WString | GetKeyLabel (LabelName label_name)
| 获取指定键标签的字符串。 更多...
WString | GetKeyValue (KeyName key)
| 获取指定键名的字符串值。 更多...
PAdESLevel | GetPAdESLevel ()
| 获取PAdES级别。 更多...
SignatureArray | GetPagingSealGroupElements ()
| 获取当前分页印章签名的组元素。 更多...
PagingSealSignature | GetPagingSealSignature ()
| 获取分页印章签名。 更多...
objects::PDFDictionary * | GetSignatureDict () const
| 获取签名字典。 更多...
SignatureType | GetSignatureType ()
| 获取签名类型。 更多...
PDFDoc | GetSignedVersionDocument (const wchar_t *file_path)
| 获取当前签名签署时的已签名版本中的PDF文档。 更多...
DateTime | GetSignTime ()
| 获取签名时间。 更多...
uint32 | GetState ()
| 获取当前状态。 更多...
String | GetSubFilter ()
| 获取子过滤器。 更多...
bool | IsEmpty () const
| 检查当前对象是否为空。 更多...
bool | IsSigned ()
| 检查当前签名是否已签名。 更多...
bool | IsTimeStamp ()
| 检查当前签名是否为时间戳签名。 更多...
void | SetAppearanceContent (const String &appearance_content)
| 为已签名签名外观设置自定义外观内容（作为低级绘图操作命令）。 更多...
void | SetAppearanceFlags (uint32 appearance_flags)
| 设置签名外观标志。 更多...
void | SetBitmap (const common::Bitmap &bitmap)
| 为签名外观设置位图。 更多...
void | SetCertChain (const WStringArray &cert_chain)
| 设置证书链。 更多...
void | SetCustomObject (const char *key, objects::PDFObject *pdf_object)
| 为签名字典设置自定义PDF对象。 更多...
void | SetDefaultContentsLength (uint32 default_length)
| 设置表示签名值（称为已签名数据）的签名内容的默认长度。 更多...
void | SetDocPermission (DocPermission permission)
| 设置当前签名的文档权限。 更多...
void | SetFieldMDPActionFields (const FieldMDPAction &action, const WStringArray &field_array)
| 设置FieldMDP（"MDP"表示修改检测和预防）操作名称数组。 更多...
void | SetFilter (const char *filter)
| 设置过滤器。 更多...
void | SetImage (const char *file_path, int frame_index)
| 使用指定帧索引为签名外观设置图像。 更多...
void | SetImage (const common::Image &image, int frame_index)
| 为签名外观设置图像，指定帧索引。 更多...
void | SetImage (const wchar_t *file_path, int frame_index)
| 使用指定帧索引为签名外观设置图像。 更多...
void | SetKeyLabel (LabelName label_name, const wchar_t *label_value)
| 设置指定键标签的字符串。 更多...
void | SetKeyValue (KeyName key, const wchar_t *value)
| 设置指定键名的字符串值。 更多...
void | SetSignTime (const DateTime &sign_time)
| 设置签名时间。 更多...
void | SetSubFilter (const char *sub_filter)
| 设置子过滤器。 更多...
common::Progressive | StartSign (const wchar_t *cert_path, const foxit::WString &cert_password, foxit::pdf::Signature::DigestAlgorithm digest_algorithm, foxit::common::file::StreamCallback *stream_callback, const void *client_data=0, foxit::common::PauseCallback *pause=0)
| 如果当前签名为未签名状态，则开始签名当前签名。 更多...
common::Progressive | StartSign (const wchar_t *cert_path, const WString &cert_password, DigestAlgorithm digest_algorithm, const char *save_path, const void *client_data=0, common::PauseCallback *pause=0)
| 如果当前签名未签名，开始签名当前签名。 更多...
common::Progressive | StartSign (const wchar_t *cert_path, const WString &cert_password, DigestAlgorithm digest_algorithm, const wchar_t *save_path, const void *client_data=0, common::PauseCallback *pause=0)
| 如果当前签名未签名，开始签名当前签名。 更多...
common::Progressive | StartSign (foxit::common::file::StreamCallback *cert_file_stream, const foxit::WString &cert_password, foxit::pdf::Signature::DigestAlgorithm digest_algorithm, foxit::common::file::StreamCallback *stream_callback, const void *client_data=0, foxit::common::PauseCallback *pause=0)
| 如果当前签名为未签名状态，则开始签名当前签名。 更多...
common::Progressive | StartSign (foxit::common::file::StreamCallback *cert_file_stream, const WString &cert_password, DigestAlgorithm digest_algorithm, const char *save_path, const void *client_data=0, common::PauseCallback *pause=0)
| 如果当前签名是未签名的，开始签名当前签名。 更多...
common::Progressive | StartSign (foxit::common::file::StreamCallback *cert_file_stream, const WString &cert_password, DigestAlgorithm digest_algorithm, const wchar_t *save_path, const void *client_data=0, common::PauseCallback *pause=0)
| 如果当前签名是未签名的，开始签名当前签名。 更多...
common::Progressive | StartVerify (const void *client_data=0, common::PauseCallback *pause=0)
| 如果当前签名已签名，开始验证当前签名的完整性。 更多...
Public 成员函数 继承自 foxit::pdf::interform::Field
| Field (const Field &field)
| 构造函数，使用另一个表单字段对象。 更多...
| Field (const PDFDoc &document, objects::PDFDictionary *field_dict)
| 从字段字典构造函数。 更多...
| ~Field ()
| 析构函数。
common::Alignment | GetAlignment () const
| 获取对齐值。 更多...
WString | GetAlternateName () const
| 获取备用名称。 更多...
Control | GetControl (const foxit::pdf::PDFPage &page, int index)
| 在指定PDF页面中通过索引获取表单控件。 更多...
Control | GetControl (int index)
| 通过索引获取表单控件。 更多...
int | GetControlCount () const
| 获取表单控件数量。 更多...
int | GetControlCount (const foxit::pdf::PDFPage &page) const
| 获取指定PDF页面中的表单控件数量。 更多...
DefaultAppearance | GetDefaultAppearance () const
| 获取默认外观数据。 更多...
WString | GetDefaultValue () const
| 获取默认值。 更多...
objects::PDFObject * | GetDefaultValueObj () const
| 获取字段默认值的PDF对象。 更多...
objects::PDFDictionary * | GetDict () const
| 获取当前对象的PDF字典。 更多...
uint32 | GetFlags () const
| 获取字段标志。 更多...
objects::PDFObject * | GetInheritedAttribute (const char *attribute_name) const
| 获取指定属性的PDF对象，该属性可能从字段树中的祖先节点继承。 更多...
WString | GetMappingName () const
| 获取映射名称。 更多...
int | GetMaxLength () const
| 获取字段文本的最大长度（以字符为单位）。 更多...
WString | GetName () const
| 获取字段名称。 更多...
ChoiceOptionArray | GetOptions () const
| 获取列表框或组合框的选项。 更多...
int | GetTopVisibleIndex ()
| 获取可滚动列表框的选项顶部索引。 更多...
Type | GetType () const
| 获取字段类型。 更多...
WString | GetValue () const
| 获取值。 更多...
objects::PDFObject * | GetValueObj () const
| 获取字段值的PDF对象。 更多...
bool | IsEmpty () const
| 检查当前对象是否为空。 更多...
bool | operator!= (const Field &other) const
| 不等于操作符。 更多...
Field & | operator= (const Field &other)
| 赋值操作符。 更多...
bool | operator== (const Field &other) const
| 等于操作符。 更多...
bool | Reset ()
| 将当前字段中的数据重置为其默认值。（不支持签名字段） 更多...
void | SetAlignment (common::Alignment alignment)
| 设置表单的对齐属性，作为文档范围的默认值。（不支持签名字段） 更多...
void | SetAlternateName (const wchar_t *alternate_name)
| 设置备用名称。（不支持签名字段） 更多...
void | SetDefaultAppearance (const DefaultAppearance &default_ap)
| 设置默认外观数据。 更多...
void | SetDefaultValue (const wchar_t *value)
| 设置默认值。 更多...
void | SetFlags (uint32 flags)
| 设置字段标志。 更多...
void | SetMappingName (const wchar_t *name)
| 设置映射名称。（不支持签名字段） 更多...
void | SetMaxLength (int max_length)
| 设置字段文本的最大长度（以字符为单位）。 更多...
void | SetOptions (const ChoiceOptionArray &option_array)
| 设置列表框或组合框的选项。 更多...
void | SetTopVisibleIndex (int index)
| 设置可滚动列表框的顶部索引。 更多...
void | SetValue (const wchar_t *value)
| 设置值。 更多...
Public 成员函数 继承自 foxit::Base
FS_HANDLE | Handle () const
| 获取当前对象的句柄。 更多...

## 详细描述

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

- 要直接从PDF文档中计数和检索为签名对象，请使用函数 pdf::PDFDoc::GetSignatureCount和PDFDoc::GetSignature。
- 要计数和检索为签名字段，当字段类型为 interform::Field::e_TypeSignature时，请使用函数 interform::Form::GetFieldCount和interform::Form::GetField。
- 要添加新签名，请使用函数PDFPage::AddSignature。
- 要删除签名，请使用函数PDFDoc::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"，如果要使用默认签名回调进行签名， 请确保已向TimeStampServerMgr设置默认时间戳服务器。 对于其他过滤器和子过滤器，或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调， 用户应准备自定义签名回调并通过函数 common::Library::RegisterSignatureCallback将回调注册到Foxit PDF SDK。
此类提供获取/设置签名信息/属性、签名或验证签名等功能。 例如：

- 要签名未签名的签名，请使用函数Signature::StartSign。 成功签名后，强烈建议用户关闭当前文档， 然后打开已签名的PDF文档，然后执行后续操作。
- 要验证已签名签名的完整性，请使用函数Signature::StartVerify。 要检查已签名的签名是否有效，请参阅类LTVVerifier。
- 要直接检索签名字典，请使用函数Signature::GetSignatureDict。

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

- 要使用默认Foxit外观模板，相关信息可以通过 Signature::SetAppearanceFlags、Signature::SetSignTime、Signature::SetKeyValue、 Signature::SetBitmap、Signature::SetImage设置。
- 要使用自定义外观，请通过函数 Signature::SetAppearanceContent设置外观流内容。

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

参见
  interform::Field
  interform::Form
  PDFDoc
  PDFPage
  TimeStampServerMgr
  LTVVerifier

## 成员枚举类型说明

## ◆ APFlags

enum foxit::pdf::Signature::APFlags

签名外观标志的枚举。

此枚举的值可以单独使用或组合使用。

枚举值
e_APFlagFoxitFlag | 如果设置，在签名外观上显示Foxit标志。
e_APFlagLabel | 如果设置，在签名外观上显示标签。
e_APFlagReason | 如果设置，在签名外观上显示原因。
e_APFlagSigningTime | 如果设置，在签名外观上显示签名时间。
e_APFlagDN | 如果设置，在签名外观上显示专有名称。
e_APFlagLocation | 如果设置，在签名外观上显示位置。
e_APFlagSigner | 如果设置，在签名外观上显示签名者。
e_APFlagBitmap | 如果设置，在签名外观上显示位图。
e_APFlagText | 如果设置，在签名外观上显示文本内容。
e_APFlagFoxitEditorFlag | 如果设置，在签名外观上显示Foxit Editor内容。
e_APFlagProducer | 如果设置，在签名外观上显示生产者内容。

## ◆ DigestAlgorithm

enum foxit::pdf::Signature::DigestAlgorithm

签名摘要算法的枚举。

此枚举的值应单独使用。

枚举值
e_DigestSHA1 | 签名摘要算法：sha1算法。
e_DigestSHA256 | 签名摘要算法：sha256算法。
e_DigestSHA384 | 签名摘要算法：sha384算法。
e_DigestSHA512 | 签名摘要算法：sha512算法。

## ◆ DocPermission

enum foxit::pdf::Signature::DocPermission

签名文档权限的枚举。

此枚举的值应单独使用。

枚举值
e_DocPermUnrestricted | 无限制。
e_DocPermNoChangesAllowed | 不允许对PDF文档（被签名签署）进行任何更改。 对此类PDF文档的任何更改都将使签名无效。
e_DocPermFillingFormAndSigning | 允许的更改是填写表单、实例化页面模板和签名。 其他更改将使签名无效。
e_DocPermFillingFormSigningAndAnnotating | 允许的更改与2相同，以及创建、删除和修改注释。 其他更改将使签名无效。

## ◆ FieldMDPAction

enum foxit::pdf::Signature::FieldMDPAction

签名字段MDP（"MDP"表示修改检测和预防）操作类型的枚举。

此枚举的值应单独使用。

枚举值
e_FieldMDPActionNone | 无字段MDP操作。
e_FieldMDPActionAll | 所有表单字段的标志将被设置为只读。
e_FieldMDPActionInclude | 指定表单字段的标志将被设置为只读。 注解 "指定表单字段"可以通过函数Signature::GetFieldMDPActionFields 和Signature::SetFieldMDPActionFields获取/设置。有关更多详细信息，请参阅这些函数。
e_FieldMDPActionExclude | 表单字段（除指定表单字段外）的标志将被设置为只读。 注解 "指定表单字段"可以通过函数Signature::GetFieldMDPActionFields 和Signature::SetFieldMDPActionFields获取/设置。有关更多详细信息，请参阅这些函数。

## ◆ KeyName

enum foxit::pdf::Signature::KeyName

签名键名的枚举。

此枚举的值应单独使用。

枚举值
e_KeyNameSigner | 签名键名：签名者。
e_KeyNameLocation | 签名键名：位置。
e_KeyNameReason | 签名键名：原因。
e_KeyNameContactInfo | 签名键名：联系信息。
e_KeyNameDN | 签名键名：专有名称。
e_KeyNameText | 签名键名：文本内容。
e_KeyNameProducer | 签名键名：生产者内容。

## ◆ LabelName

enum foxit::pdf::Signature::LabelName

签名标签名称的枚举。

此枚举的值应单独使用。

枚举值
e_LabelNameSigner | 签名者的签名标签名称。 注解 Foxit PDF SDK中签名者的默认标签名称是"Digitally signed by "。
e_LabelNameLocation | 位置的签名标签名称。 注解 Foxit PDF SDK中位置的默认标签名称是"Location: "。
e_LabelNameReason | 原因的签名标签名称。 注解 Foxit PDF SDK中原因的默认标签名称是"Reason: "。
e_LabelNameSignTime | 签名时间的签名标签名称。 注解 Foxit PDF SDK中签名时间的默认标签名称是"Date: "。
e_LabelNameDN | 专有名称的签名键名。 注解 Foxit PDF SDK中专有名称的默认标签名称是"DN: "。
e_LabelNameProducer | 生产者名称的签名键名。 注解 Foxit PDF SDK中生产者名称的默认标签名称为空。

## ◆ PAdESLevel

enum foxit::pdf::Signature::PAdESLevel

PAdES级别的枚举。

此枚举的值应单独使用。

枚举值
e_PAdESLevelNotPAdES | 不是PAdES签名。
e_PAdESLevelNone | PAdES级别：无。
e_PAdESLevelBB | PAdES级别：B-B。
e_PAdESLevelBT | PAdES级别：B-T。
e_PAdESLevelBLT | PAdES级别：B-LT。
e_PAdESLevelBLTA | PAdES级别：B-LTA。

## ◆ SignatureType

enum foxit::pdf::Signature::SignatureType

签名类型的枚举。

此枚举的值应单独使用。

枚举值
e_SignatureTypeOrdinary | 签名类型：普通。
e_SignatureTypeTimeStamp | 签名类型：时间戳。
e_SignatureTypePagingSeal | 签名类型：分页印章。

## ◆ States

enum foxit::pdf::Signature::States

签名状态的枚举。

此枚举的值可以单独使用或组合使用。
这些值可以分为四部分：

- 从 Signature::e_StateUnknown 开始的值（具有相同前缀名称）表示签名状态， 在签名成功验证之前。
- 从 Signature::e_StateVerifyValid 开始的值（具有相同前缀名称）表示 签名的验证状态。
- 从 Signature::e_StateVerifyIssueValid 开始的值（具有相同前缀名称）表示 签名的发行者验证状态，具有更多详细信息。
- 从 Signature::e_StateVerifyTimestampNone 开始的值（具有相同前缀名称）表示 时间戳的验证状态，具有更多详细信息。

枚举值
e_StateUnknown | 未知签名。
e_StateNoSignData | 签名没有任何用于签名的数据。这意味着签名字典中没有"V"条目。
e_StateUnsigned | 未签名的签名。
e_StateSigned | 已签名的签名。
e_StateVerifyValid | 签名的验证状态有效。
e_StateVerifyInvalid | 签名的验证状态无效。
e_StateVerifyErrorData | 签名数据已损坏（这意味着签名数据无法正确解析）。
e_StateVerifyNoSupportWay | 不支持的签名。
e_StateVerifyErrorByteRange | 非预期字节范围。
e_StateVerifyChange | 文档在签名范围内已被更改。（这表示签名无效。）
e_StateVerifyIncredible | 签名不可信（包含攻击性）。
e_StateVerifyNoChange | 文档在签名范围内未被更改。
e_StateVerifyIssueValid | 发行者的验证状态有效。
e_StateVerifyIssueUnknown | 发行者的验证状态未知。
e_StateVerifyIssueRevoke | 用于验证发行者的证书已被撤销。
e_StateVerifyIssueExpire | 用于验证发行者的证书已过期。
e_StateVerifyIssueUncheck | 不检查发行者。
e_StateVerifyIssueCurrent | 验证的发行者是当前发行者。
e_StateVerifyTimestampNone | 没有时间戳或不检查时间戳。
e_StateVerifyTimestampDoc | 签名是时间戳签名。
e_StateVerifyTimestampValid | 时间戳的验证状态有效。
e_StateVerifyTimestampInvalid | 时间戳的验证状态无效。
e_StateVerifyTimestampExpire | 时间戳的验证状态已过期。
e_StateVerifyTimestampIssueUnknown | 时间戳发行者的验证状态未知。
e_StateVerifyTimestampIssueValid | 时间戳发行者的验证状态有效。
e_StateVerifyTimestampTimeBefore | 时间戳时间的验证状态有效，因为时间在过期日期之前。
e_StateCertCannotGetVRI | 无法获取验证相关信息。
e_StateVerifyChangeLegal | 文档在签名范围之外已被更改，但更改是被允许的。
e_StateVerifyChangeIllegal | 文档在签名范围之外已被更改，并且更改使签名无效。

## 构造及析构函数说明

## ◆ Signature() [1/2]

foxit::pdf::Signature::Signature | ( | const interform::Field & | field | ) |
| explicit

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

参数

  [in] | field | 父类对象。

## ◆ Signature() [2/2]

foxit::pdf::Signature::Signature | ( | const foxit::pdf::PDFDoc & | document,
|  | foxit::pdf::objects::PDFDictionary * | sig_field_dict
| ) |  |

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

参数

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

## 成员函数说明

## ◆ ClearSignedData()

bool foxit::pdf::Signature::ClearSignedData | ( |  | ) |

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

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

返回
  true表示成功清除数据和外观，false表示无需 清除数据和外观或发生任何错误。

## ◆ EnableEmbedFont()

void foxit::pdf::Signature::EnableEmbedFont | ( | bool | enable_embed_font | ) |

启用或禁用嵌入字体。

参数

  enable_embed_font | 指示是否为签名文本嵌入字体的标志。 true表示为签名文本嵌入字体。 false表示不为签名文本嵌入字体。

返回
  无。

## ◆ EnableIncrementalSaveForFirstSigning()

void foxit::pdf::Signature::EnableIncrementalSaveForFirstSigning | ( | bool | enable_incremental_save | ) |

启用或禁用首次签名的增量保存。用户应在调用 函数Signature::StartSign之前调用此函数。
默认值：false。

参数

  [in] | enable_incremental_save | 指示是否对首次签名使用增量保存的标志。 true表示对首次签名使用增量保存。 false表示对首次签名使用默认保存。

返回
  无。

## ◆ GenerateAppearance()

bool foxit::pdf::Signature::GenerateAppearance | ( |  | ) |

生成未签名签名的外观。

此函数用于在页面上显示未签名的普通签名，而无需调用函数Signature::StartSign。

返回
  true表示成功，false表示失败。

## ◆ GetAppearanceFlags()

uint32 foxit::pdf::Signature::GetAppearanceFlags | ( |  | ) |

获取签名外观标志。

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

返回
  签名外观标志。请参阅从Signature::e_APFlagFoxitFlag开始的值， 这将是这些值中的一个或它们的组合。

## ◆ GetBitmap()

common::Bitmap foxit::pdf::Signature::GetBitmap | ( |  | ) |

获取用于签名外观的位图。

返回
  外观中使用的位图。如果返回的位图对象的函数common::Bitmap::IsEmpty返回值为true， 这意味着外观中没有使用位图或出现了错误。

## ◆ GetByteRangeArray()

bool foxit::pdf::Signature::GetByteRangeArray | ( | uint32 | out_byte_range_array[4] | ) |

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

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

参数

  [out] | out_byte_range_array | 接收字节范围数据的输出参数。 请确保此数组可以包含4个元素。

返回
  true表示成功，false表示失败。

## ◆ GetCert()

WString foxit::pdf::Signature::GetCert | ( | int32 | index | ) | const

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

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

参数

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

返回
  证书。

## ◆ GetCertCount()

int32 foxit::pdf::Signature::GetCertCount | ( |  | ) | const

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

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

返回
  证书数量。

## ◆ GetCertificateInfo()

String foxit::pdf::Signature::GetCertificateInfo | ( | const char * | key | ) |

获取证书信息。

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

参数

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

返回
  证书信息字符串。

注解
  对于"ValidPeriodFrom"或"ValidPeriodTo"键，时区值不会被计算在内。

## ◆ GetDocPermission()

DocPermission foxit::pdf::Signature::GetDocPermission | ( |  | ) |

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

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

返回
  文档权限。请参阅从Signature::e_DocPermUnrestricted开始的值， 应为这些值中的一个。

## ◆ GetDocument()

PDFDoc foxit::pdf::Signature::GetDocument | ( |  | ) |

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

返回
  PDF文档对象。

## ◆ GetFieldMDPAction()

FieldMDPAction foxit::pdf::Signature::GetFieldMDPAction | ( |  | ) |

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

返回
  FieldMDP操作类型。请参阅从Signature::e_FieldMDPActionNone开始的值， 应为这些值中的一个。

## ◆ GetFieldMDPActionFields()

WStringArray foxit::pdf::Signature::GetFieldMDPActionFields | ( |  | ) |

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

返回的字段名称数组与FieldMDP操作相关（可通过函数Signature::GetFieldMDPAction检查）：

- 如果FieldMDP操作类型为Signature::e_FieldMDPActionNone，返回的字段名称数组无用。
- 如果FieldMDP操作类型为Signature::e_FieldMDPActionAll，返回的字段名称数组将包含所有表单字段的名称。
- 如果FieldMDP操作类型为Signature::e_FieldMDPActionInclude，返回的字段名称数组指定在当前签名签署时标志为只读的表单字段。
- 如果FieldMDP操作类型为Signature::e_FieldMDPActionExclude，返回的字段名称数组指定在当前签名为已签名签名时标志不为只读的表单字段 （但其余字段的标志为只读）。

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

## ◆ GetFilter()

String foxit::pdf::Signature::GetFilter | ( |  | ) |

获取过滤器。

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

返回
  过滤器字符串。

## ◆ GetKeyLabel()

WString foxit::pdf::Signature::GetKeyLabel | ( | LabelName | label_name | ) |

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

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

参数

  [in] | label_name | 键标签。请参考从Signature::e_LabelNameSigner开始的值， 这应该是这些值中的一个。

返回
  指定键标签的字符串。

## ◆ GetKeyValue()

WString foxit::pdf::Signature::GetKeyValue | ( | KeyName | key | ) |

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

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

参数

  [in] | key | 键名。请参阅从Signature::e_KeyNameSigner开始的值， 应为这些值中的一个。

返回
  字符串值。

## ◆ GetPAdESLevel()

PAdESLevel foxit::pdf::Signature::GetPAdESLevel | ( |  | ) |

获取PAdES级别。

返回
  PAdES级别。请参考从Signature::e_PAdESLevelNotPAdES开始的值， 这将是这些值中的一个。

## ◆ GetPagingSealGroupElements()

SignatureArray foxit::pdf::Signature::GetPagingSealGroupElements | ( |  | ) |

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

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

返回
  签名数组。

## ◆ GetPagingSealSignature()

PagingSealSignature foxit::pdf::Signature::GetPagingSealSignature | ( |  | ) |

获取分页印章签名。

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

返回
  PagingSealSignature对象。如果返回对象的函数Signature::IsEmpty 返回值为true，表示当前签名不是分页印章签名。

## ◆ GetSignatureDict()

objects::PDFDictionary* foxit::pdf::Signature::GetSignatureDict | ( |  | ) | const

获取签名字典。

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

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

## ◆ GetSignatureType()

SignatureType foxit::pdf::Signature::GetSignatureType | ( |  | ) |

获取签名类型。

返回
  签名类型。请参考从Signature::e_SignatureTypeOrdinary开始的值， 这将是这些值中的一个。

## ◆ GetSignedVersionDocument()

PDFDoc foxit::pdf::Signature::GetSignedVersionDocument | ( | const wchar_t * | file_path | ) |

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

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

参数

  [in] | file_path | 当前签名所属的原始打开PDF文档的完整路径。不应为空字符串。

返回
  当前签名签署时的已签名版本中的PDF文档对象。 返回的PDF文档可能表示与检索当前签名的当前PDF文档不同的PDF文档，或就是当前PDF文档。 用户应确保在读取或操作已签名版本文档时保持当前PDF文档对象有效。 请确保返回的文档对象在使用类PDFDoc中的大多数函数之前已成功加载。

## ◆ GetSignTime()

DateTime foxit::pdf::Signature::GetSignTime | ( |  | ) |

获取签名时间。

返回
  接收签名时间的日期和时间对象。 如果未找到签名时间，此函数将返回所有值为0的日期和时间对象。

## ◆ GetState()

uint32 foxit::pdf::Signature::GetState | ( |  | ) |

获取当前状态。

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

返回
  签名状态的值。请参阅从Signature::e_StateUnknown开始的值， 这将是其中一个或它们的组合。
  特别地，如果返回的状态是Signature::e_StateNoSignData， 表示当前签名没有签名数据，请至少调用函数 Signature::SetKeyValue为当前签名设置必要的过滤器和子过滤器。 用户还可以在调用函数Signature::StartSign之前调用以下函数来设置签名和签名外观的其他数据：
  - 要使用默认Foxit外观模板，相关信息可以通过 Signature::SetAppearanceFlags、Signature::SetSignTime、 Signature::SetKeyValue、Signature::SetBitmap、Signature::SetImage设置。
  - 要使用自定义外观，请通过函数 Signature::SetAppearanceContent设置外观流内容。

## ◆ GetSubFilter()

String foxit::pdf::Signature::GetSubFilter | ( |  | ) |

获取子过滤器。

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

返回
  子过滤器字符串。

## ◆ IsEmpty()

bool foxit::pdf::Signature::IsEmpty | ( |  | ) | const

检查当前对象是否为空。

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

返回
  true表示当前对象为空，false表示不为空。

## ◆ IsSigned()

bool foxit::pdf::Signature::IsSigned | ( |  | ) |

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

返回
  true表示当前签名已签名，false表示未签名。

## ◆ IsTimeStamp()

bool foxit::pdf::Signature::IsTimeStamp | ( |  | ) |

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

返回
  true表示当前签名是时间戳签名，false表示不是。

## ◆ SetAppearanceContent()

void foxit::pdf::Signature::SetAppearanceContent | ( | const String & | appearance_content | ) |

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

此函数只能在为未签名的签名调用函数Signature::StartSign之前使用。
一旦设置了自定义外观内容，它将用作已签名外观。在这种情况下， 由Signature::SetAppearanceFlags设置的外观标志将被忽略， 相关信息将不会在外观中使用——这些信息由以下函数设置： Signature::SetSignTime、Signature::SetKeyValue（过滤器和子过滤器除外）、 Signature::SetBitmap、Signature::SetImage。
如果当前签名是时间戳签名，此函数将不执行任何操作。

参数

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

返回
  None.

## ◆ SetAppearanceFlags()

void foxit::pdf::Signature::SetAppearanceFlags | ( | uint32 | appearance_flags | ) |

设置签名外观标志。

建议在为未签名的签名调用函数Signature::StartSign之前使用此函数。
签名外观标志指示在已签名外观中将显示哪些信息。 如果已通过函数Signature::SetAppearanceContent设置自定义外观内容， 外观标志将被忽略。
如果当前签名是时间戳签名，此函数将不执行任何操作。

参数

  [in] | appearance_flags | 签名外观标志。请参阅从 Signature::e_APFlagFoxitFlag开始的值，应为 这些值中的一个或它们的组合。

返回
  无。

## ◆ SetBitmap()

void foxit::pdf::Signature::SetBitmap | ( | const common::Bitmap & | bitmap | ) |

为签名外观设置位图。

建议在为未签名的签名调用函数Signature::StartSign之前使用此函数。 如果已通过函数Signature::SetAppearanceContent设置了自定义外观内容， 则位图将不会在已签名外观中使用。
如果当前签名是时间戳签名，此函数将不执行任何操作。

参数

  [in] | bitmap | 要设置到外观的位图。它应该是有效的。

返回
  None.

## ◆ SetCertChain()

void foxit::pdf::Signature::SetCertChain | ( | const WStringArray & | cert_chain | ) |

设置证书链。

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

参数

  [in] | cert_chain | 表示证书链的字符串数组。

返回
  None.

## ◆ SetCustomObject()

void foxit::pdf::Signature::SetCustomObject | ( | const char * | key,
|  | objects::PDFObject * | pdf_object
| ) |  |

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

建议在为未签名的签名调用函数Signature::StartSign之前使用此函数。

参数

  [in] | key | 签名字典的键，将设置其值元素。不应为空字符串。
  [in] | pdf_object | 要设置为键值的自定义PDFObject对象。不应为NULL。 它可以是直接PDF对象或间接PDF对象。

返回
  None.

## ◆ SetDefaultContentsLength()

void foxit::pdf::Signature::SetDefaultContentsLength | ( | uint32 | default_length | ) |

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

此函数只能在为未签名的签名调用函数Signature::StartSign之前使用。
签名内容表示签名值（称为已签名数据）。 初始化签名字段时，签名内容将以默认长度7942初始化。当使用自定义签名回调来签名和验证未签名的签名时， 用户可以调用此函数来更改签名内容的默认长度。在这种情况下， 用户还应确保回调函数SignatureCallback::Sign中返回的已签名数据的长度 不应大于此函数设置的默认长度。

参数

  [in] | default_length | 签名值（称为已签名数据）的默认长度，以字节为单位。 不应小于4098。

返回
  None.

## ◆ SetDocPermission()

void foxit::pdf::Signature::SetDocPermission | ( | DocPermission | permission | ) |

设置当前签名的文档权限。

此函数仅对未签名的签名有用。如果对已签名的签名使用此函数，则不会执行任何操作。
关于权限值的一些注意事项：

- 如果为当前未签名的签名设置除Signature::e_DocPermUnrestricted之外的任何权限值， 则当当前签名为已签名签名时，添加新签名将失败。
- 如果为当前未签名的签名设置权限值Signature::e_DocPermFillingFormAndSigning或Signature::e_DocPermFillingFormSigningAndAnnotating， 则FieldMDP操作将为Signature::e_FieldMDPActionInclude，且 当当前签名为已签名签名时，当前签名字段的标志将为只读。

参数

  [in] | permission | 文档权限。请参阅从Signature::e_DocPermUnrestricted开始的值， 应为这些值中的一个。

返回
  无。

## ◆ SetFieldMDPActionFields()

void foxit::pdf::Signature::SetFieldMDPActionFields | ( | const FieldMDPAction & | action,
|  | const WStringArray & | field_array
| ) |  |

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

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

参数

  [in] | action | FieldMDP操作类型。请参阅从Signature::e_FieldMDPActionNone开始的值， 应为这些值中的一个。 如果此值为Signature::e_FieldMDPActionNone，表示不使用FieldMDP操作。 如果此值为Signature::e_FieldMDPActionAll，参数field_array将被忽略， 所有字段将包含在对象摘要中（因此在当前签名签署后不允许更改）。 如果此值为Signature::e_FieldMDPActionInclude，表示只有参数field_array指定的 表单字段的标志将被设置为只读，这些字段将包含在对象摘要中 （因此在当前签名签署后不允许更改）。 如果此值为Signature::e_FieldMDPActionExclude，表示表单字段（除参数field_array指定的字段外） 的标志将被设置为只读，这些字段包含在对象摘要中 （因此在当前签名签署后不允许更改）。
  [in] | field_array | 用于FieldMDP操作的字段名称数组。

返回
  无。

## ◆ SetFilter()

void foxit::pdf::Signature::SetFilter | ( | const char * | filter | ) |

设置过滤器。

过滤器和子过滤器用于指定将使用哪个已注册的签名回调对象来 签名/验证当前签名。用户应设置过滤器和子过滤器以 使用Foxit PDF SDK中的默认签名回调，或使用其他过滤器和子过滤器，但请 确保在签名或验证当前签名之前，具有非默认过滤器和子过滤器的签名回调对象 已在Foxit PDF SDK中注册。 默认签名回调的过滤器和子过滤器是：

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

参数

  [in] | filter | 过滤器字符串。不能为空字符串。

返回
  无。

## ◆ SetImage() [1/3]

void foxit::pdf::Signature::SetImage | ( | const char * | file_path,
|  | int | frame_index
| ) |  |

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

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

参数

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

返回
  None.

## ◆ SetImage() [2/3]

void foxit::pdf::Signature::SetImage | ( | const common::Image & | image,
|  | int | frame_index
| ) |  |

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

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

参数

  [in] | image | 图像。它的一帧将设置到当前签名。此图像至少包含 一帧，图像类型不应为common::Image::e_Unknown。
  [in] | frame_index | 帧索引。有效范围：从0到(count-1)。 count由函数common::Image::GetFrameCount返回。

返回
  None.

## ◆ SetImage() [3/3]

void foxit::pdf::Signature::SetImage | ( | const wchar_t * | file_path,
|  | int | frame_index
| ) |  |

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

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

参数

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

返回
  None.

## ◆ SetKeyLabel()

void foxit::pdf::Signature::SetKeyLabel | ( | LabelName | label_name,
|  | const wchar_t * | label_value
| ) |  |

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

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

参数

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

返回
  无。

## ◆ SetKeyValue()

void foxit::pdf::Signature::SetKeyValue | ( | KeyName | key,
|  | const wchar_t * | value
| ) |  |

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

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

参数

  [in] | key | 键名。请参阅从Signature::e_KeyNameSigner开始的值， 应为这些值中的一个。
  [in] | value | 新的字符串值。

返回
  无。

## ◆ SetSignTime()

void foxit::pdf::Signature::SetSignTime | ( | const DateTime & | sign_time | ) |

设置签名时间。

建议在为未签名的签名调用函数Signature::StartSign之前使用此函数。

参数

  [in] | sign_time | 签名时间。

返回
  无。

## ◆ SetSubFilter()

void foxit::pdf::Signature::SetSubFilter | ( | const char * | sub_filter | ) |

设置子过滤器。

过滤器和子过滤器用于指定将使用哪个已注册的签名回调对象来 签名/验证当前签名。用户应设置过滤器和子过滤器以 使用Foxit PDF SDK中的默认签名回调，或使用其他过滤器和子过滤器，但请 确保在签名或验证当前签名之前，具有非默认过滤器和子过滤器的签名回调对象 已在Foxit PDF SDK中注册。 默认签名回调的过滤器和子过滤器是：

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

参数

  [in] | sub_filter | 子过滤器字符串。

返回
  无。

## ◆ StartSign() [1/6]

common::Progressive foxit::pdf::Signature::StartSign | ( | const wchar_t * | cert_path,
|  | const foxit::WString & | cert_password,
|  | foxit::pdf::Signature::DigestAlgorithm | digest_algorithm,
|  | foxit::common::file::StreamCallback * | stream_callback,
|  | const void * | client_data = `0`,
|  | foxit::common::PauseCallback * | pause = `0`
| ) |  |

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

此函数用于未签名的签名对象。当前签名的过滤器和子过滤器键指定了 用于签名当前签名的签名回调对象的名称。因此在签名之前， 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一，意味着使用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"，如果要使用它们的默认签名回调进行签名， 请确保已向TimeStampServerMgr设置默认的时间戳服务器。 对于其他过滤器和子过滤器，或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调， 请确保已通过函数common::Library::RegisterSignatureCallback向Foxit PDF SDK注册自定义签名回调。
对于符合PDF/A规范的PDF文档，建议在调用当前函数之前调用common::Library::SetDefaultICCProfilesPath 并通过调用Signature::EnableEmbedFont启用字体嵌入。 签名操作可能需要很长时间，因此Foxit PDF SDK使用渐进式处理来完成此操作。

参数

  [in] | cert_path | 证书文件的完整路径（包括文件名和扩展名）， 将用于签名。如果在自定义签名回调中不需要，这可以是空字符串。 当此文件路径不为空时，它应该是有效路径。 如果要使用默认签名回调来签名当前签名， 这可以是PFX证书文件。
  [in] | cert_password | 用于打开证书文件的密码字符串。如果这是空字符串， 表示不需要密码。
  [in] | digest_algorithm | 签名数据的消息摘要算法。请参考从Signature::e_DigestSHA1开始的值， 这应该是这些值中的一个。
  [in] | stream_callback | 用户实现的foxit::common::file::StreamCallback对象，用于保存签名结果。 已签名的文档将保存到另一个PDF文件。
  [in] | client_data | 用户定义的对象，将传递给SignatureCallback中的回调函数。 如果使用默认回调对象来签名当前签名，则此参数无用。默认值：NULL。
  [in] | pause | 决定签名过程是否需要暂停的暂停对象。这可以是 NULL，表示在签名过程中不暂停。如果不为 NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数common::Progressive::GetRateOfProgress检查当前进度率。 如果进度率还不是100，请调用函数common::Progressive::Continue继续进度， 直到进度完成。

注解
  此函数不支持将已签名的PDF文档直接保存到用于构建当前签名相关PDF文档的PDF文件中。 为了做到这一点，建议用户执行以下步骤：
  假设相关的PDF文档对象是从名为"org.pdf"的PDF文件构建的。
  1. 使用当前函数将签名结果保存到临时文件。这里，此临时文件命名为"temp.tmp"。
  2. 确保相关的PDF文档对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开已签名的PDF文档进行其他操作。

## ◆ StartSign() [2/6]

common::Progressive foxit::pdf::Signature::StartSign | ( | const wchar_t * | cert_path,
|  | const WString & | cert_password,
|  | DigestAlgorithm | digest_algorithm,
|  | const char * | save_path,
|  | const void * | client_data = `0`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

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

此函数用于未签名的签名。当前签名的过滤器和子过滤器键指定 将用于签名当前签名的签名回调对象的名称。因此在签名之前， 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一，表示使用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"，如果要使用默认签名回调进行签名， 请确保已向TimeStampServerMgr设置默认时间戳服务器。 对于其他过滤器和子过滤器，或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调， 请确保已通过函数common::Library::RegisterSignatureCallback将自定义签名回调注册到Foxit PDF SDK。
对于符合PDF/A规范的PDF文档，建议调用common::Library::SetDefaultICCProfilesPath 并在调用当前函数之前通过调用Signature::EnableEmbedFont启用字体嵌入。 签名可能需要很长时间，因此Foxit PDF SDK使用渐进过程来执行此操作。

参数

  [in] | cert_path | 将用于签名的证书文件的完整路径（包括文件名和扩展名）。 如果在自定义签名回调中不需要，可以是空字符串。当此文件路径不为空时， 应为有效路径。 如果要使用默认签名回调来签名当前签名， 这可以是PFX证书文件。
  [in] | cert_password | 用于打开证书文件的密码字符串。如果这是空字符串， 表示不需要密码。
  [in] | digest_algorithm | 签名数据的消息摘要算法。请参阅从Signature::e_DigestSHA1开始的值， 应为这些值中的一个。
  [in] | save_path | 用于保存签名结果的完整PDF文件路径。已签名文档将 保存到另一个PDF文件。
  [in] | client_data | 用户定义对象，将传递给SignatureCallback中的回调函数。 如果要使用默认回调对象来签名当前签名，则此参数无用。默认值：NULL。
  [in] | pause | 决定签名过程是否需要暂停的暂停对象。可以为NULL， 表示在签名过程中不暂停。如果不为NULL， 应为用户实现的有效暂停对象。默认值：NULL。

返回
  渐进对象。请通过函数common::Progressive::GetRateOfProgress检查当前进度的比率。 如果比率尚未达到100，调用函数common::Progressive::Continue继续进度，直到进度完成。

注解
  此函数不支持将已签名的PDF文档直接保存到用于 构造当前签名相关PDF文档的PDF文件。为此，建议用户 按以下步骤操作：
  假设相关PDF文档对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将签名结果保存到临时文件。这里，此临时文件 命名为"temp.tmp"。
  2. 确保相关PDF文档对象已析构–这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开已签名的PDF文档进行其他操作。

## ◆ StartSign() [3/6]

common::Progressive foxit::pdf::Signature::StartSign | ( | const wchar_t * | cert_path,
|  | const WString & | cert_password,
|  | DigestAlgorithm | digest_algorithm,
|  | const wchar_t * | save_path,
|  | const void * | client_data = `0`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

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

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

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

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

参数

  [in] | cert_path | 将用于签名的证书文件的完整路径（包括文件名和扩展名）。 如果在自定义签名回调中不需要，可以是空字符串。当此文件路径不为空时， 应为有效路径。 如果要使用默认签名回调来签名当前签名， 这可以是PFX证书文件。
  [in] | cert_password | 用于打开证书文件的密码字符串。如果这是空字符串， 表示不需要密码。
  [in] | digest_algorithm | 签名数据的消息摘要算法。请参阅从Signature::e_DigestSHA1开始的值， 应为这些值中的一个。
  [in] | save_path | 用于保存签名结果的完整PDF文件路径。已签名文档将 保存到另一个PDF文件。
  [in] | client_data | 用户定义对象，将传递给SignatureCallback中的回调函数。 如果要使用默认回调对象来签名当前签名，则此参数无用。默认值：NULL。
  [in] | pause | 决定签名过程是否需要暂停的暂停对象。可以为NULL， 表示在签名过程中不暂停。如果不为NULL， 应为用户实现的有效暂停对象。默认值：NULL。

返回
  渐进对象。请通过函数common::Progressive::GetRateOfProgress检查当前进度的比率。 如果比率尚未达到100，调用函数common::Progressive::Continue继续进度，直到进度完成。

注解
  此函数不支持将已签名的PDF文档直接保存到用于构造当前签名相关PDF文档的PDF文件中。 为了实现这一点，建议用户按照以下步骤操作：
  假设相关的PDF文档对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将签名结果保存到临时文件。在这里，此临时文件 命名为"temp.tmp"。
  2. 确保相关的PDF文档对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开已签名的PDF文档进行其他操作。

## ◆ StartSign() [4/6]

common::Progressive foxit::pdf::Signature::StartSign | ( | foxit::common::file::StreamCallback * | cert_file_stream,
|  | const foxit::WString & | cert_password,
|  | foxit::pdf::Signature::DigestAlgorithm | digest_algorithm,
|  | foxit::common::file::StreamCallback * | stream_callback,
|  | const void * | client_data = `0`,
|  | foxit::common::PauseCallback * | pause = `0`
| ) |  |

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

此函数用于未签名的签名对象。当前签名的过滤器和子过滤器键指定了 用于签名当前签名的签名回调对象的名称。因此在签名之前， 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一，意味着使用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"，如果要使用它们的默认签名回调进行签名， 请确保已向TimeStampServerMgr设置默认的时间戳服务器。 对于其他过滤器和子过滤器，或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调， 请确保已通过函数common::Library::RegisterSignatureCallback向Foxit PDF SDK注册自定义签名回调。
对于符合PDF/A规范的PDF文档，建议在调用当前函数之前调用common::Library::SetDefaultICCProfilesPath 并通过调用Signature::EnableEmbedFont启用字体嵌入。 签名操作可能需要很长时间，因此Foxit PDF SDK使用渐进式处理来完成此操作。

参数

  [in] | cert_file_stream | 用户实现的foxit::common::file::StreamCallback对象， 用于访问将用于签名的证书文件内容。 如果在自定义签名回调中不需要，这可以是NULL。 如果要使用默认签名回调来签名当前签名，可以使用PFX证书文件。
  [in] | cert_password | 用于打开证书文件的密码字符串。如果这是空字符串， 表示不需要密码。
  [in] | digest_algorithm | 签名数据的消息摘要算法。请参考从Signature::e_DigestSHA1开始的值， 这应该是这些值中的一个。
  [in] | stream_callback | 用户实现的foxit::common::file::StreamCallback对象，用于保存签名结果。 已签名的文档将保存到另一个PDF文件。
  [in] | client_data | 用户定义的对象，将传递给SignatureCallback中的回调函数。 如果使用默认回调对象来签名当前签名，则此参数无用。 默认值：NULL。
  [in] | pause | 决定签名过程是否需要暂停的暂停对象。这可以是 NULL，表示在签名过程中不暂停。如果不为 NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数common::Progressive::GetRateOfProgress检查当前进度率。 如果进度率还不是100，请调用函数common::Progressive::Continue继续进度， 直到进度完成。

注解
  此函数不支持将已签名的PDF文档直接保存到用于 构建当前签名相关PDF文档的PDF文件中。为了做到这一点，建议用户 执行以下步骤：
  假设相关的PDF文档对象是从名为"org.pdf"的PDF文件构建的。
  1. 使用当前函数将签名结果保存到临时文件。这里，此临时文件命名为"temp.tmp"。
  2. 确保相关的PDF文档对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开已签名的PDF文档进行其他操作。

## ◆ StartSign() [5/6]

common::Progressive foxit::pdf::Signature::StartSign | ( | foxit::common::file::StreamCallback * | cert_file_stream,
|  | const WString & | cert_password,
|  | DigestAlgorithm | digest_algorithm,
|  | const char * | save_path,
|  | const void * | client_data = `0`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

如果当前签名是未签名的，开始签名当前签名。

此函数用于未签名的签名。当前签名的过滤器和子过滤器键指定 将用于签名当前签名的签名回调对象的名称。因此在签名之前， 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一，表示使用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"，如果将使用它们的默认签名回调进行签名， 请确保已将默认时间戳服务器设置到TimeStampServerMgr。 对于其他过滤器和子过滤器，或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调， 请确保已通过函数common::Library::RegisterSignatureCallback将自定义签名回调注册到Foxit PDF SDK。
对于符合PDF/A规范的PDF文档，建议调用common::Library::SetDefaultICCProfilesPath 并在调用当前函数之前通过调用Signature::EnableEmbedFont启用字体嵌入。 签名可能需要很长时间，因此Foxit PDF SDK使用渐进式处理来完成此操作。

参数

  [in] | cert_file_stream | 用户实现的foxit::common::file::StreamCallback对象， 用于访问将用于签名的证书文件的内容。 如果在自定义签名回调中不需要，这可以为NULL。 如果将使用默认签名回调来签名当前签名， 可以使用PFX证书文件。
  [in] | cert_password | 用于打开证书文件的密码字符串。如果这是空字符串， 表示不需要密码。
  [in] | digest_algorithm | 签名数据的消息摘要算法。请参考从 Signature::e_DigestSHA1开始的值，这应该是这些值中的一个。
  [in] | save_path | 用于保存签名结果的完整PDF文件路径。已签名的文档将 保存到另一个PDF文件。
  [in] | client_data | 用户定义的对象，将传递给SignatureCallback中的回调函数。 如果将使用默认回调对象来签名当前签名，这是无用的。默认值：NULL。
  [in] | pause | 决定签名过程是否需要暂停的暂停对象。这可以是 NULL，表示在签名过程中不暂停。如果这不是 NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数common::Progressive::GetRateOfProgress检查当前进度的比率。 如果比率还没有达到100，调用函数common::Progressive::Continue继续进度，直到进度完成。

注解
  此函数不支持将已签名的PDF文档直接保存到用于构造当前签名相关PDF文档的PDF文件中。 为了实现这一点，建议用户按照以下步骤操作：
  假设相关的PDF文档对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将签名结果保存到临时文件。在这里，此临时文件 命名为"temp.tmp"。
  2. 确保相关的PDF文档对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开已签名的PDF文档进行其他操作。

## ◆ StartSign() [6/6]

common::Progressive foxit::pdf::Signature::StartSign | ( | foxit::common::file::StreamCallback * | cert_file_stream,
|  | const WString & | cert_password,
|  | DigestAlgorithm | digest_algorithm,
|  | const wchar_t * | save_path,
|  | const void * | client_data = `0`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

如果当前签名是未签名的，开始签名当前签名。

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

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

对于其他过滤器和子过滤器，或者如果用户想要为上述过滤器和子过滤器使用自定义签名回调， 请确保已通过函数common::Library::RegisterSignatureCallback将自定义签名回调注册到Foxit PDF SDK。
对于符合PDF/A规范的PDF文档，建议调用common::Library::SetDefaultICCProfilesPath 并在调用当前函数之前通过调用Signature::EnableEmbedFont启用字体嵌入。 签名可能需要很长时间，因此Foxit PDF SDK使用渐进式处理来完成此操作。

参数

  [in] | cert_file_stream | 用户实现的foxit::common::file::StreamCallback对象， 用于访问将用于签名的证书文件的内容。 This can be NULL if not necessary in custom signature callback. 如果在自定义签名回调中不需要，这可以为NULL。 如果将使用默认签名回调来签名当前签名， 可以使用PFX证书文件。
  [in] | cert_password | 用于打开证书文件的密码字符串。如果这是空字符串， 表示不需要密码。
  [in] | digest_algorithm | 签名数据的消息摘要算法。请参考从 Signature::e_DigestSHA1开始的值，这应该是这些值中的一个。
  [in] | save_path | 用于保存签名结果的完整PDF文件路径。已签名的文档将 保存到另一个PDF文件。
  [in] | client_data | 用户定义的对象，将传递给SignatureCallback中的回调函数。 如果将使用默认回调对象来签名当前签名，这是无用的。默认值：NULL。
  [in] | pause | 决定签名过程是否需要暂停的暂停对象。这可以是 NULL，表示在签名过程中不暂停。如果这不是 NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数common::Progressive::GetRateOfProgress检查当前进度的比率。 如果比率还没有达到100，调用函数common::Progressive::Continue继续进度，直到进度完成。

注解
  此函数不支持将已签名的PDF文档直接保存到用于构造当前签名相关PDF文档的PDF文件中。 为了实现这一点，建议用户按照以下步骤操作：
  假设相关的PDF文档对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将签名结果保存到临时文件。在这里，此临时文件 命名为"temp.tmp"。
  2. 确保相关的PDF文档对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开已签名的PDF文档进行其他操作。

## ◆ StartVerify()

common::Progressive foxit::pdf::Signature::StartVerify | ( | const void * | client_data = `0`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

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

此函数用于已签名的签名。当前签名的过滤器和子过滤器键指定 将用于验证当前签名的签名回调对象的名称。因此在验证之前， 请确保：必要的签名回调对象已通过函数 common::Library::RegisterSignatureCallback注册。如果当前已签名签名的过滤器和子过滤器 是以下字符串之一，表示使用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开始，此函数仅用于验证签名的完整性。要检查签名是否有效， 请参阅类LTVVerifier。

参数

  [in] | client_data | 用户定义对象，将传递给SignatureCallback中的回调函数。 如果要使用默认回调对象来验证当前签名，则此参数无用。默认值：NULL。
  [in] | pause | 决定验证过程是否需要暂停的暂停对象。 可以为NULL，表示在验证过程中不暂停。 如果不为NULL，应为用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进对象。请通过函数common::Progressive::GetRateOfProgress检查当前进度的比率。 如果比率尚未达到100，调用函数common::Progressive::Continue继续进度，直到进度完成。