Foxit PDF SDK
foxit::pdf::Signature类 参考
类 foxit::pdf::Signature 继承关系图:
foxit::pdf::interform::Field foxit::Base foxit::pdf::PagingSealSignature

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 interform::Field &field)
 构造函数,使用父类对象。 更多...
 
 Signature (const foxit::pdf::PDFDoc &document, foxit::pdf::objects::PDFDictionary *sig_field_dict)
 构造函数,从签名字段字典创建。 更多...
 
 ~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::PDFDictionaryGetSignatureDict () 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 common::Image &image, int frame_index)
 为签名外观设置图像,指定帧索引。 更多...
 
void SetImage (const char *file_path, 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 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 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 WString &cert_password, DigestAlgorithm digest_algorithm, const wchar_t *save_path, const void *client_data=0, common::PauseCallback *pause=0)
 如果当前签名是未签名的,开始签名当前签名。 更多...
 
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 (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 StartVerify (const void *client_data=0, common::PauseCallback *pause=0)
 如果当前签名已签名,开始验证当前签名的完整性。 更多...
 
- Public 成员函数 继承自 foxit::pdf::interform::Field
 Field (const PDFDoc &document, objects::PDFDictionary *field_dict)
 从字段字典构造函数。 更多...
 
 Field (const Field &field)
 构造函数,使用另一个表单字段对象。 更多...
 
 ~Field ()
 析构函数。
 
common::Alignment GetAlignment () const
 获取对齐值。 更多...
 
WString GetAlternateName () const
 获取备用名称。 更多...
 
Control GetControl (int index)
 通过索引获取表单控件。 更多...
 
Control GetControl (const foxit::pdf::PDFPage &page, int index)
 在指定PDF页面中通过索引获取表单控件。 更多...
 
int GetControlCount () const
 获取表单控件数量。 更多...
 
int GetControlCount (const foxit::pdf::PDFPage &page) const
 获取指定PDF页面中的表单控件数量。 更多...
 
DefaultAppearance GetDefaultAppearance () const
 获取默认外观数据。 更多...
 
WString GetDefaultValue () const
 获取默认值。 更多...
 
objects::PDFObjectGetDefaultValueObj () const
 获取字段默认值的PDF对象。 更多...
 
objects::PDFDictionaryGetDict () const
 获取当前对象的PDF字典。 更多...
 
uint32 GetFlags () const
 获取字段标志。 更多...
 
objects::PDFObjectGetInheritedAttribute (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::PDFObjectGetValueObj () const
 获取字段值的PDF对象。 更多...
 
bool IsEmpty () const
 检查当前对象是否为空。 更多...
 
bool operator != (const Field &other) const
 不等于操作符。 更多...
 
Fieldoperator= (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。 可以通过以下函数检索/添加签名对象:

在签名中,过滤器和子过滤器键用于指定将用于签名和验证签名的 签名回调对象的过滤器和子过滤器。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

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

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

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

成员枚举类型说明

◆ 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

签名摘要算法的枚举。

此枚举的值应单独使用。

枚举值
e_DigestSHA1 

签名摘要算法:sha1算法。

e_DigestSHA256 

签名摘要算法:sha256算法。

e_DigestSHA384 

签名摘要算法:sha384算法。

e_DigestSHA512 

签名摘要算法:sha512算法。

◆ DocPermission

签名文档权限的枚举。

此枚举的值应单独使用。

枚举值
e_DocPermUnrestricted 

无限制。

e_DocPermNoChangesAllowed 

不允许对PDF文档(被签名签署)进行任何更改。 对此类PDF文档的任何更改都将使签名无效。

e_DocPermFillingFormAndSigning 

允许的更改是填写表单、实例化页面模板和签名。 其他更改将使签名无效。

e_DocPermFillingFormSigningAndAnnotating 

允许的更改与2相同,以及创建、删除和修改注释。 其他更改将使签名无效。

◆ FieldMDPAction

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

此枚举的值应单独使用。

枚举值
e_FieldMDPActionNone 

无字段MDP操作。

e_FieldMDPActionAll 

所有表单字段的标志将被设置为只读。

e_FieldMDPActionInclude 

指定表单字段的标志将被设置为只读。

注解
"指定表单字段"可以通过函数Signature::GetFieldMDPActionFieldsSignature::SetFieldMDPActionFields获取/设置。有关更多详细信息,请参阅这些函数。
e_FieldMDPActionExclude 

表单字段(除指定表单字段外)的标志将被设置为只读。

注解
"指定表单字段"可以通过函数Signature::GetFieldMDPActionFieldsSignature::SetFieldMDPActionFields获取/设置。有关更多详细信息,请参阅这些函数。

◆ KeyName

签名键名的枚举。

此枚举的值应单独使用。

枚举值
e_KeyNameSigner 

签名键名:签名者。

e_KeyNameLocation 

签名键名:位置。

e_KeyNameReason 

签名键名:原因。

e_KeyNameContactInfo 

签名键名:联系信息。

e_KeyNameDN 

签名键名:专有名称。

e_KeyNameText 

签名键名:文本内容。

e_KeyNameProducer 

签名键名:生产者内容。

◆ 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

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

签名类型的枚举。

此枚举的值应单独使用。

枚举值
e_SignatureTypeOrdinary 

签名类型:普通。

e_SignatureTypeTimeStamp 

签名类型:时间戳。

e_SignatureTypePagingSeal 

签名类型:分页印章。

◆ States

签名状态的枚举。

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

枚举值
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开始的值, 应为这些值中的一个。

◆ 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操作字段名称数组。

◆ 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之前调用以下函数来设置签名和签名外观的其他数据:

◆ 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::SetSignTimeSignature::SetKeyValue(过滤器和子过滤器除外)、 Signature::SetBitmapSignature::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)

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

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

参数
[in]permission文档权限。请参阅从Signature::e_DocPermUnrestricted开始的值, 应为这些值中的一个。
返回
无。

◆ SetFieldMDPActionFields()

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

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

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

参数
[in]actionFieldMDP操作类型。请参阅从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 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() [2/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() [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 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() [2/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() [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 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文档进行其他操作。

◆ StartSign() [5/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() [6/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文档进行其他操作。

◆ 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继续进度,直到进度完成。