Foxit PDF SDK

Public 成员函数 | 静态 Public 属性 | 所有成员列表
com.foxit.sdk.pdf.Signature类 参考
类 com.foxit.sdk.pdf.Signature 继承关系图:

## Public 成员函数
| Signature (Field field)
| 构造函数，使用父类对象。 更多...
| Signature (PDFDoc document, PDFDictionary sig_field_dict)
| 构造函数，从签名字段字典创建。 更多...
boolean | clearSignedData () throws com.foxit.sdk.PDFException
| 如果当前签名已签名且验证有效，清除数据和外观。 更多...
synchronized void | delete ()
| 直接清除C++相关资源。 更多...
void | enableEmbedFont (boolean enable_embed_font)
| 启用或禁用嵌入字体。 更多...
void | enableIncrementalSaveForFirstSigning (boolean enable_incremental_save)
| 启用或禁用首次签名的增量保存。用户应在调用 函数Signature.startSign 之前调用此函数。 默认值：false。 更多...
boolean | generateAppearance () throws com.foxit.sdk.PDFException
| 生成未签名签名的外观。 更多...
int | getAppearanceFlags () throws com.foxit.sdk.PDFException
| 获取签名外观标志。 更多...
Bitmap | getBitmap () throws com.foxit.sdk.PDFException
| 获取用于签名外观的位图。 更多...
boolean | getByteRangeArray (int[] out_byte_range_array) throws com.foxit.sdk.PDFException
| 获取字节范围数据，包括4个元素。 更多...
String | getCert (int index) throws com.foxit.sdk.PDFException
| 通过索引从当前签名的证书链中获取证书。 更多...
int | getCertCount () throws com.foxit.sdk.PDFException
| 获取当前签名证书链中的证书数量。 更多...
String | getCertificateInfo (String key) throws com.foxit.sdk.PDFException
| 获取证书信息。 更多...
int | getDocPermission () throws com.foxit.sdk.PDFException
| 获取当前签名的文档权限。 更多...
PDFDoc | getDocument () throws com.foxit.sdk.PDFException
| 获取当前签名所属的PDF文档。 更多...
int | getFieldMDPAction () throws com.foxit.sdk.PDFException
| 获取FieldMDP（"MDP"表示修改检测和预防）操作类型。 更多...
WStringArray | getFieldMDPActionFields () throws com.foxit.sdk.PDFException
| 获取用于FieldMDP操作的字段名称数组。 更多...
String | getFilter () throws com.foxit.sdk.PDFException
| 获取过滤器。 更多...
String | getKeyLabel (int label_name) throws com.foxit.sdk.PDFException
| 获取指定键标签的字符串。 更多...
String | getKeyValue (int key) throws com.foxit.sdk.PDFException
| 获取指定键名的字符串值。 更多...
int | getPAdESLevel () throws com.foxit.sdk.PDFException
| 获取PAdES级别。 更多...
SignatureArray | getPagingSealGroupElements () throws com.foxit.sdk.PDFException
| 获取当前分页印章签名的组元素。 更多...
PagingSealSignature | getPagingSealSignature () throws com.foxit.sdk.PDFException
| 获取分页印章签名。 更多...
PDFDictionary | getSignatureDict () throws com.foxit.sdk.PDFException
| 获取签名字典。 更多...
int | getSignatureType () throws com.foxit.sdk.PDFException
| 获取签名类型。 更多...
PDFDoc | getSignedVersionDocument (String file_path) throws com.foxit.sdk.PDFException
| 获取当前签名签署时的已签名版本中的PDF文档。 更多...
DateTime | getSignTime () throws com.foxit.sdk.PDFException
| 获取签名时间。 更多...
int | getState () throws com.foxit.sdk.PDFException
| 获取当前状态。 更多...
String | getSubFilter () throws com.foxit.sdk.PDFException
| 获取子过滤器。 更多...
boolean | isEmpty ()
| 检查当前对象是否为空。 更多...
boolean | isSigned () throws com.foxit.sdk.PDFException
| 检查当前签名是否已签名。 更多...
boolean | isTimeStamp () throws com.foxit.sdk.PDFException
| 检查当前签名是否为时间戳签名。 更多...
void | setAppearanceContent (String appearance_content) throws com.foxit.sdk.PDFException
| 为已签名签名外观设置自定义外观内容（作为低级绘图操作命令）。 更多...
void | setAppearanceFlags (int appearance_flags) throws com.foxit.sdk.PDFException
| 设置签名外观标志。 更多...
void | setBitmap (Bitmap bitmap) throws com.foxit.sdk.PDFException
| 为签名外观设置位图。 更多...
void | setCertChain (WStringArray cert_chain) throws com.foxit.sdk.PDFException
| 设置证书链。 更多...
void | setCustomObject (String key, PDFObject pdf_object) throws com.foxit.sdk.PDFException
| 为签名字典设置自定义PDF对象。 更多...
void | setDefaultContentsLength (int default_length) throws com.foxit.sdk.PDFException
| 设置表示签名值（称为已签名数据）的签名内容的默认长度。 更多...
void | setDocPermission (int permission) throws com.foxit.sdk.PDFException
| 设置当前签名的文档权限。 更多...
void | setFieldMDPActionFields (int action, WStringArray field_array) throws com.foxit.sdk.PDFException
| 设置FieldMDP（"MDP"表示修改检测和预防）操作名称数组。 更多...
void | setFilter (String filter) throws com.foxit.sdk.PDFException
| 设置过滤器。 更多...
void | setImage (Image image, int frame_index) throws com.foxit.sdk.PDFException
| 为签名外观设置图像，指定帧索引。 更多...
void | setImage (String file_path, int frame_index) throws com.foxit.sdk.PDFException
| 使用指定帧索引为签名外观设置图像。 更多...
void | setKeyLabel (int label_name, String label_value) throws com.foxit.sdk.PDFException
| 设置指定键标签的字符串。 更多...
void | setKeyValue (int key, String value) throws com.foxit.sdk.PDFException
| 设置指定键名的字符串值。 更多...
void | setSignTime (DateTime sign_time) throws com.foxit.sdk.PDFException
| 设置签名时间。 更多...
void | setSubFilter (String sub_filter) throws com.foxit.sdk.PDFException
| 设置子过滤器。 更多...
Progressive | startSign (StreamCallback cert_file_stream, byte[] cert_password, int digest_algorithm, StreamCallback stream_callback, java.lang.Object client_data, PauseCallback pause) throws com.foxit.sdk.PDFException
| 如果当前签名为未签名状态，则开始签名当前签名。 更多...
Progressive | startSign (StreamCallback cert_file_stream, byte[] cert_password, int digest_algorithm, String save_path, java.lang.Object client_data, PauseCallback pause) throws com.foxit.sdk.PDFException
| 如果当前签名是未签名的，开始签名当前签名。 更多...
Progressive | startSign (String cert_path, byte[] cert_password, int digest_algorithm, StreamCallback stream_callback, java.lang.Object client_data, PauseCallback pause) throws com.foxit.sdk.PDFException
| 如果当前签名为未签名状态，则开始签名当前签名。 更多...
Progressive | startSign (String cert_path, byte[] cert_password, int digest_algorithm, String save_path, java.lang.Object client_data, PauseCallback pause) throws com.foxit.sdk.PDFException
| 如果当前签名未签名，开始签名当前签名。 更多...
Progressive | startVerify (java.lang.Object client_data, PauseCallback pause) throws com.foxit.sdk.PDFException
| 如果当前签名已签名，开始验证当前签名的完整性。 更多...
Public 成员函数 继承自 com.foxit.sdk.pdf.interform.Field
| Field (Field field)
| 构造函数，使用另一个表单字段对象。 更多...
| Field (PDFDoc document, PDFDictionary field_dict) throws com.foxit.sdk.PDFException
| 从字段字典构造函数。 更多...
int | getAlignment () throws com.foxit.sdk.PDFException
| 获取对齐值。 更多...
String | getAlternateName () throws com.foxit.sdk.PDFException
| 获取备用名称。 更多...
Control | getControl (int index) throws com.foxit.sdk.PDFException
| 通过索引获取表单控件。 更多...
Control | getControl (PDFPage page, int index) throws com.foxit.sdk.PDFException
| 在指定PDF页面中通过索引获取表单控件。 更多...
int | getControlCount () throws com.foxit.sdk.PDFException
| 获取表单控件数量。 更多...
int | getControlCount (PDFPage page) throws com.foxit.sdk.PDFException
| 获取指定PDF页面中的表单控件数量。 更多...
DefaultAppearance | getDefaultAppearance () throws com.foxit.sdk.PDFException
| 获取默认外观数据。 更多...
String | getDefaultValue () throws com.foxit.sdk.PDFException
| 获取默认值。 更多...
PDFObject | getDefaultValueObj () throws com.foxit.sdk.PDFException
| 获取字段默认值的PDF对象。 更多...
PDFDictionary | getDict () throws com.foxit.sdk.PDFException
| 获取当前对象的PDF字典。 更多...
int | getFlags () throws com.foxit.sdk.PDFException
| 获取字段标志。 更多...
PDFObject | getInheritedAttribute (String attribute_name) throws com.foxit.sdk.PDFException
| 获取指定属性的PDF对象，该属性可能从字段树中的祖先节点继承。 更多...
String | getMappingName () throws com.foxit.sdk.PDFException
| 获取映射名称。 更多...
int | getMaxLength () throws com.foxit.sdk.PDFException
| 获取字段文本的最大长度（以字符为单位）。 更多...
String | getName () throws com.foxit.sdk.PDFException
| 获取字段名称。 更多...
ChoiceOptionArray | getOptions () throws com.foxit.sdk.PDFException
| 获取列表框或组合框的选项。 更多...
int | getTopVisibleIndex () throws com.foxit.sdk.PDFException
| 获取可滚动列表框的选项顶部索引。 更多...
int | getType () throws com.foxit.sdk.PDFException
| 获取字段类型。 更多...
String | getValue () throws com.foxit.sdk.PDFException
| 获取值。 更多...
PDFObject | getValueObj () throws com.foxit.sdk.PDFException
| 获取字段值的PDF对象。 更多...
boolean | reset () throws com.foxit.sdk.PDFException
| 将当前字段中的数据重置为其默认值。（不支持签名字段） 更多...
void | setAlignment (int alignment) throws com.foxit.sdk.PDFException
| 设置表单的对齐属性，作为文档范围的默认值。（不支持签名字段） 更多...
void | setAlternateName (String alternate_name) throws com.foxit.sdk.PDFException
| 设置备用名称。（不支持签名字段） 更多...
void | setDefaultAppearance (DefaultAppearance default_ap) throws com.foxit.sdk.PDFException
| 设置默认外观数据。 更多...
void | setDefaultValue (String value) throws com.foxit.sdk.PDFException
| 设置默认值。 更多...
void | setFlags (int flags) throws com.foxit.sdk.PDFException
| 设置字段标志。 更多...
void | setMappingName (String name) throws com.foxit.sdk.PDFException
| 设置映射名称。（不支持签名字段） 更多...
void | setMaxLength (int max_length) throws com.foxit.sdk.PDFException
| 设置字段文本的最大长度（以字符为单位）。 更多...
void | setOptions (ChoiceOptionArray option_array) throws com.foxit.sdk.PDFException
| 设置列表框或组合框的选项。 更多...
void | setTopVisibleIndex (int index) throws com.foxit.sdk.PDFException
| 设置可滚动列表框的顶部索引。 更多...
void | setValue (String value) throws com.foxit.sdk.PDFException
| 设置值。 更多...

## 静态 Public 属性
static final int | e_APFlagBitmap = 0x0080
| 如果设置，在签名外观上显示位图。
static final int | e_APFlagDN = 0x0010
| 如果设置，在签名外观上显示专有名称。
static final int | e_APFlagFoxitEditorFlag = 0x0200
| 如果设置，在签名外观上显示Foxit Editor内容。
static final int | e_APFlagFoxitFlag = 0x0001
| 如果设置，在签名外观上显示Foxit标志。
static final int | e_APFlagLabel = 0x0002
| 如果设置，在签名外观上显示标签。
static final int | e_APFlagLocation = 0x0020
| 如果设置，在签名外观上显示位置。
static final int | e_APFlagProducer = 0x0400
| 如果设置，在签名外观上显示生产者内容。
static final int | e_APFlagReason = 0x0004
| 如果设置，在签名外观上显示原因。
static final int | e_APFlagSigner = 0x0040
| 如果设置，在签名外观上显示签名者。
static final int | e_APFlagSigningTime = 0x0008
| 如果设置，在签名外观上显示签名时间。
static final int | e_APFlagText = 0x0100
| 如果设置，在签名外观上显示文本内容。
static final int | e_DigestSHA1 = 0
| 签名摘要算法：sha1算法。
static final int | e_DigestSHA256 = 1
| 签名摘要算法：sha256算法。
static final int | e_DigestSHA384 = 2
| 签名摘要算法：sha384算法。
static final int | e_DigestSHA512 = 3
| 签名摘要算法：sha512算法。
static final int | e_DocPermFillingFormAndSigning = 2
| 允许的更改是填写表单、实例化页面模板和签名。 其他更改将使签名无效。
static final int | e_DocPermFillingFormSigningAndAnnotating = 3
| 允许的更改与2相同，以及创建、删除和修改注释。 其他更改将使签名无效。
static final int | e_DocPermNoChangesAllowed = 1
| 不允许对PDF文档（被签名签署）进行任何更改。 对此类PDF文档的任何更改都将使签名无效。
static final int | e_DocPermUnrestricted = 0
| 无限制。
static final int | e_FieldMDPActionAll = 1
| 所有表单字段的标志将被设置为只读。
static final int | e_FieldMDPActionExclude = 3
| 表单字段（除指定表单字段外）的标志将被设置为只读。 更多...
static final int | e_FieldMDPActionInclude = 2
| 指定表单字段的标志将被设置为只读。 更多...
static final int | e_FieldMDPActionNone = 0
| 无字段MDP操作。
static final int | e_KeyNameContactInfo = 3
| 签名键名：联系信息。
static final int | e_KeyNameDN = 4
| 签名键名：专有名称。
static final int | e_KeyNameLocation = 1
| 签名键名：位置。
static final int | e_KeyNameProducer = 6
| 签名键名：生产者内容。
static final int | e_KeyNameReason = 2
| 签名键名：原因。
static final int | e_KeyNameSigner = 0
| 签名键名：签名者。
static final int | e_KeyNameText = 5
| 签名键名：文本内容。
static final int | e_LabelNameDN = 4
| 专有名称的签名键名。 更多...
static final int | e_LabelNameLocation = 1
| 位置的签名标签名称。 更多...
static final int | e_LabelNameProducer = 6
| 生产者名称的签名键名。 更多...
static final int | e_LabelNameReason = 2
| 原因的签名标签名称。 更多...
static final int | e_LabelNameSigner = 0
| 签名者的签名标签名称。 更多...
static final int | e_LabelNameSignTime = 3
| 签名时间的签名标签名称。 更多...
static final int | e_PAdESLevelBB = 2
| PAdES级别：B-B。
static final int | e_PAdESLevelBLT = 4
| PAdES级别：B-LT。
static final int | e_PAdESLevelBLTA = 5
| PAdES级别：B-LTA。
static final int | e_PAdESLevelBT = 3
| PAdES级别：B-T。
static final int | e_PAdESLevelNone = 1
| PAdES级别：无。
static final int | e_PAdESLevelNotPAdES = 0
| 不是PAdES签名。
static final int | e_SignatureTypeOrdinary = 0
| 签名类型：普通。
static final int | e_SignatureTypePagingSeal = 4
| 签名类型：分页印章。
static final int | e_SignatureTypeTimeStamp = 3
| 签名类型：时间戳。
static final int | e_StateCertCannotGetVRI = 0x04000000
| 无法获取验证相关信息。
static final int | e_StateNoSignData = 0x00000200
| 签名没有任何用于签名的数据。这意味着签名字典中没有"V"条目。
static final int | e_StateSigned = 0x00000002
| 已签名的签名。
static final int | e_StateUnknown = 0x80000000
| 未知签名。
static final int | e_StateUnsigned = 0x00000001
| 未签名的签名。
static final int | e_StateVerifyChange = 0x00000080
| 文档在签名范围内已被更改。（这表示签名无效。）
static final int | e_StateVerifyChangeIllegal = 0x10000000
| 文档在签名范围之外已被更改，并且更改使签名无效。
static final int | e_StateVerifyChangeLegal = 0x08000000
| 文档在签名范围之外已被更改，但更改是被允许的。
static final int | e_StateVerifyErrorByteRange = 0x00000040
| 非预期字节范围。
static final int | e_StateVerifyErrorData = 0x00000010
| 签名数据已损坏（这意味着签名数据无法正确解析）。
static final int | e_StateVerifyIncredible = 0x00000100
| 签名不可信（包含攻击性）。
static final int | e_StateVerifyInvalid = 0x00000008
| 签名的验证状态无效。
static final int | e_StateVerifyIssueCurrent = 0x00020000
| 验证的发行者是当前发行者。
static final int | e_StateVerifyIssueExpire = 0x00008000
| 用于验证发行者的证书已过期。
static final int | e_StateVerifyIssueRevoke = 0x00004000
| 用于验证发行者的证书已被撤销。
static final int | e_StateVerifyIssueUncheck = 0x00010000
| 不检查发行者。
static final int | e_StateVerifyIssueUnknown = 0x00002000
| 发行者的验证状态未知。
static final int | e_StateVerifyIssueValid = 0x00001000
| 发行者的验证状态有效。
static final int | e_StateVerifyNoChange = 0x00000400
| 文档在签名范围内未被更改。
static final int | e_StateVerifyNoSupportWay = 0x00000020
| 不支持的签名。
static final int | e_StateVerifyTimestampDoc = 0x00080000
| 签名是时间戳签名。
static final int | e_StateVerifyTimestampExpire = 0x00400000
| 时间戳的验证状态已过期。
static final int | e_StateVerifyTimestampInvalid = 0x00200000
| 时间戳的验证状态无效。
static final int | e_StateVerifyTimestampIssueUnknown = 0x00800000
| 时间戳发行者的验证状态未知。
static final int | e_StateVerifyTimestampIssueValid = 0x01000000
| 时间戳发行者的验证状态有效。
static final int | e_StateVerifyTimestampNone = 0x00040000
| 没有时间戳或不检查时间戳。
static final int | e_StateVerifyTimestampTimeBefore = 0x02000000
| 时间戳时间的验证状态有效，因为时间在过期日期之前。
static final int | e_StateVerifyTimestampValid = 0x00100000
| 时间戳的验证状态有效。
static final int | e_StateVerifyValid = 0x00000004
| 签名的验证状态有效。
静态 Public 属性 继承自 com.foxit.sdk.pdf.interform.Field
static final int | e_FlagButtonNoToggleToOff = 0x100
| （仅对单选按钮有用）如果设置，必须始终选择一个单选按钮； 点击当前选择的按钮没有效果。如果清除，点击选择的按钮会取消选择它， 不留下任何选择的按钮。
static final int | e_FlagButtonRadiosInUnison = 0x200
| （仅对单选按钮有用）如果设置，单选按钮字段内使用相同开启状态值的 一组单选按钮将一致地开启和关闭；也就是如果一个被选中，它们都被选中。 如果清除，按钮是互斥的。
static final int | e_FlagChoiceCommitOnSelChange = 0x400
| （仅对选择字段有用）如果设置，一旦用指点设备进行选择，新值就立即提交； 如果清除，新值直到用户退出字段时才提交。
static final int | e_FlagChoiceMultiSelect = 0x100
| （仅对列表框有用）如果设置，可以同时选择多个项目； if clear, no more than one item at a time may be selected.
static final int | e_FlagChoiceSort = 0x200
| （仅对选择字段有用）如果设置，字段的选项项应按字母顺序排序。
static final int | e_FlagComboEdit = 0x100
| （仅对组合框有用）如果设置，组合框包括带有下拉列表的可编辑文本控件， 如果清除，它只包括下拉列表。
static final int | e_FlagNoExport = 0x04
| 如果设置，字段不能由提交表单操作导出。
static final int | e_FlagReadOnly = 0x01
| 如果设置，用户不能更改字段的值。任何关联的控件注释将不会 与用户交互；也就是说，它们不会响应鼠标点击或响应鼠标移动而改变外观。 此标志对于其值被计算或从数据库导入的字段很有用。
static final int | e_FlagRequired = 0x02
| 如果设置，字段在由提交表单操作导出时必须有一个值。
static final int | e_FlagTextComb = 0x2000
| （仅对文本字段有用）如果设置，使用梳状格式。 更多...
static final int | e_FlagTextDoNotScroll = 0x1000
| （仅对文本字段有用）如果设置，字段不滚动（单行字段水平滚动， 多行字段垂直滚动）以容纳超出其注释矩形的更多文本。 一旦字段满了，就不再接受更多文本。
static final int | e_FlagTextFileSelect = 0x400
| （仅对文本字段有用）如果设置，在字段中输入的文本表示文件的路径名， 其内容将作为字段的值提交。
static final int | e_FlagTextMultiline = 0x100
| （仅对文本字段有用）如果设置，文本字段可以包含多行文本； 如果清除，字段的文本限制为单行。
static final int | e_FlagTextNoSpellCheck = 0x800
| （仅对文本字段有用）如果设置，在字段中输入的文本不进行拼写检查。
static final int | e_FlagTextPassword = 0x200
| （仅对文本字段有用）如果设置，字段用于输入不应在屏幕上可见回显的安全密码。 从键盘输入的字符应该以某种不可读的形式回显，例如星号或项目符号字符。 更多...
static final int | e_FlagTextRichText = 0x4000
| （仅对文本字段有用）如果设置，此字段的值应表示为富文本字符串。
static final int | e_TypeCheckBox = 2
| 表单字段类型：复选框。
static final int | e_TypeComboBox = 4
| 表单字段类型：组合框。
static final int | e_TypeListBox = 5
| 表单字段类型：列表框。
static final int | e_TypePushButton = 1
| 表单字段类型：按钮。
static final int | e_TypeRadioButton = 3
| 表单字段类型：单选按钮。
static final int | e_TypeSignature = 7
| 表单字段类型：签名字段。
static final int | e_TypeTextField = 6
| 表单字段类型：文本字段。
static final int | e_TypeUnknown = 0
| 表单字段类型：未知。

## 详细描述

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

- 要直接从PDF文档中计数和检索为签名对象，请使用函数 pdf.PDFDoc.getSignatureCount 和PDFDoc.getSignature 。
- 要计数和检索为签名字段，当字段类型为 com.foxit.sdk.pdf.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 设置外观流内容。

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

参见
  com.foxit.sdk.pdf.interform.Field
  com.foxit.sdk.pdf.interform.Form
  PDFDoc
  PDFPage
  TimeStampServerMgr
  LTVVerifier

## 构造及析构函数说明

## ◆ Signature() [1/2]

com.foxit.sdk.pdf.Signature.Signature | ( | Field | field | ) |

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

参数

  [in] | field | 父类对象。

## ◆ Signature() [2/2]

com.foxit.sdk.pdf.Signature.Signature | ( | PDFDoc | document,
|  | PDFDictionary | sig_field_dict
| ) |  |

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

参数

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

## 成员函数说明

## ◆ clearSignedData()

boolean com.foxit.sdk.pdf.Signature.clearSignedData | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

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

## ◆ delete()

synchronized void com.foxit.sdk.pdf.Signature.delete | ( |  | ) |

直接清除C++相关资源。

返回
  无。

注解
  一旦这个接口被调用，这个对象将不能再被使用。

重载 com.foxit.sdk.pdf.interform.Field .

被 com.foxit.sdk.pdf.PagingSealSignature 重载.

## ◆ enableEmbedFont()

void com.foxit.sdk.pdf.Signature.enableEmbedFont | ( | boolean | enable_embed_font | ) |

启用或禁用嵌入字体。

参数

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

返回
  无。

## ◆ enableIncrementalSaveForFirstSigning()

void com.foxit.sdk.pdf.Signature.enableIncrementalSaveForFirstSigning | ( | boolean | enable_incremental_save | ) |

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

参数

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

返回
  无。

## ◆ generateAppearance()

boolean com.foxit.sdk.pdf.Signature.generateAppearance | ( |  | ) | throws com.foxit.sdk.PDFException

生成未签名签名的外观。

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

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

被 com.foxit.sdk.pdf.PagingSealSignature 重载.

## ◆ getAppearanceFlags()

int com.foxit.sdk.pdf.Signature.getAppearanceFlags | ( |  | ) | throws com.foxit.sdk.PDFException

获取签名外观标志。

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

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

## ◆ getBitmap()

Bitmap com.foxit.sdk.pdf.Signature.getBitmap | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

## ◆ getByteRangeArray()

boolean com.foxit.sdk.pdf.Signature.getByteRangeArray | ( | int[] | out_byte_range_array | ) | throws com.foxit.sdk.PDFException

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

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

参数

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

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

## ◆ getCert()

String com.foxit.sdk.pdf.Signature.getCert | ( | int | index | ) | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  证书。

## ◆ getCertCount()

int com.foxit.sdk.pdf.Signature.getCertCount | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

返回
  证书数量。

## ◆ getCertificateInfo()

String com.foxit.sdk.pdf.Signature.getCertificateInfo | ( | String | key | ) | throws com.foxit.sdk.PDFException

获取证书信息。

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

参数

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

返回
  证书信息字符串。

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

## ◆ getDocPermission()

int com.foxit.sdk.pdf.Signature.getDocPermission | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

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

## ◆ getDocument()

PDFDoc com.foxit.sdk.pdf.Signature.getDocument | ( |  | ) | throws com.foxit.sdk.PDFException

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

返回
  PDF文档对象。

## ◆ getFieldMDPAction()

int com.foxit.sdk.pdf.Signature.getFieldMDPAction | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

## ◆ getFieldMDPActionFields()

WStringArray com.foxit.sdk.pdf.Signature.getFieldMDPActionFields | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

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

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

## ◆ getFilter()

String com.foxit.sdk.pdf.Signature.getFilter | ( |  | ) | throws com.foxit.sdk.PDFException

获取过滤器。

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

返回
  过滤器字符串。

## ◆ getKeyLabel()

String com.foxit.sdk.pdf.Signature.getKeyLabel | ( | int | label_name | ) | throws com.foxit.sdk.PDFException

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

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

参数

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

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

## ◆ getKeyValue()

String com.foxit.sdk.pdf.Signature.getKeyValue | ( | int | key | ) | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  字符串值。

## ◆ getPAdESLevel()

int com.foxit.sdk.pdf.Signature.getPAdESLevel | ( |  | ) | throws com.foxit.sdk.PDFException

获取PAdES级别。

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

## ◆ getPagingSealGroupElements()

SignatureArray com.foxit.sdk.pdf.Signature.getPagingSealGroupElements | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

返回
  签名数组。

## ◆ getPagingSealSignature()

PagingSealSignature com.foxit.sdk.pdf.Signature.getPagingSealSignature | ( |  | ) | throws com.foxit.sdk.PDFException

获取分页印章签名。

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

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

## ◆ getSignatureDict()

PDFDictionary com.foxit.sdk.pdf.Signature.getSignatureDict | ( |  | ) | throws com.foxit.sdk.PDFException

获取签名字典。

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

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

## ◆ getSignatureType()

int com.foxit.sdk.pdf.Signature.getSignatureType | ( |  | ) | throws com.foxit.sdk.PDFException

获取签名类型。

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

## ◆ getSignedVersionDocument()

PDFDoc com.foxit.sdk.pdf.Signature.getSignedVersionDocument | ( | String | file_path | ) | throws com.foxit.sdk.PDFException

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

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

参数

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

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

## ◆ getSignTime()

DateTime com.foxit.sdk.pdf.Signature.getSignTime | ( |  | ) | throws com.foxit.sdk.PDFException

获取签名时间。

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

## ◆ getState()

int com.foxit.sdk.pdf.Signature.getState | ( |  | ) | throws com.foxit.sdk.PDFException

获取当前状态。

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

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

## ◆ getSubFilter()

String com.foxit.sdk.pdf.Signature.getSubFilter | ( |  | ) | throws com.foxit.sdk.PDFException

获取子过滤器。

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

返回
  子过滤器字符串。

## ◆ isEmpty()

boolean com.foxit.sdk.pdf.Signature.isEmpty | ( |  | ) |

检查当前对象是否为空。

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

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

重载 com.foxit.sdk.pdf.interform.Field .

## ◆ isSigned()

boolean com.foxit.sdk.pdf.Signature.isSigned | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

## ◆ isTimeStamp()

boolean com.foxit.sdk.pdf.Signature.isTimeStamp | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

## ◆ setAppearanceContent()

void com.foxit.sdk.pdf.Signature.setAppearanceContent | ( | String | appearance_content | ) | throws com.foxit.sdk.PDFException

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

此函数只能在为未签名的签名调用函数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 com.foxit.sdk.pdf.Signature.setAppearanceFlags | ( | int | appearance_flags | ) | throws com.foxit.sdk.PDFException

设置签名外观标志。

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

参数

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

返回
  无。

## ◆ setBitmap()

void com.foxit.sdk.pdf.Signature.setBitmap | ( | Bitmap | bitmap | ) | throws com.foxit.sdk.PDFException

为签名外观设置位图。

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

参数

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

返回
  None.

## ◆ setCertChain()

void com.foxit.sdk.pdf.Signature.setCertChain | ( | WStringArray | cert_chain | ) | throws com.foxit.sdk.PDFException

设置证书链。

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

参数

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

返回
  None.

## ◆ setCustomObject()

void com.foxit.sdk.pdf.Signature.setCustomObject | ( | String | key,
|  | PDFObject | pdf_object
| ) |  | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  None.

## ◆ setDefaultContentsLength()

void com.foxit.sdk.pdf.Signature.setDefaultContentsLength | ( | int | default_length | ) | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  None.

## ◆ setDocPermission()

void com.foxit.sdk.pdf.Signature.setDocPermission | ( | int | permission | ) | throws com.foxit.sdk.PDFException

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

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

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

参数

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

返回
  无。

## ◆ setFieldMDPActionFields()

void com.foxit.sdk.pdf.Signature.setFieldMDPActionFields | ( | int | action,
|  | WStringArray | field_array
| ) |  | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  无。

## ◆ setFilter()

void com.foxit.sdk.pdf.Signature.setFilter | ( | String | filter | ) | throws com.foxit.sdk.PDFException

设置过滤器。

过滤器和子过滤器用于指定将使用哪个已注册的签名回调对象来 签名/验证当前签名。用户应设置过滤器和子过滤器以 使用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/2]

void com.foxit.sdk.pdf.Signature.setImage | ( | Image | image,
|  | int | frame_index
| ) |  | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  None.

## ◆ setImage() [2/2]

void com.foxit.sdk.pdf.Signature.setImage | ( | String | file_path,
|  | int | frame_index
| ) |  | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  None.

## ◆ setKeyLabel()

void com.foxit.sdk.pdf.Signature.setKeyLabel | ( | int | label_name,
|  | String | label_value
| ) |  | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  无。

## ◆ setKeyValue()

void com.foxit.sdk.pdf.Signature.setKeyValue | ( | int | key,
|  | String | value
| ) |  | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  无。

## ◆ setSignTime()

void com.foxit.sdk.pdf.Signature.setSignTime | ( | DateTime | sign_time | ) | throws com.foxit.sdk.PDFException

设置签名时间。

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

参数

  [in] | sign_time | 签名时间。

返回
  无。

## ◆ setSubFilter()

void com.foxit.sdk.pdf.Signature.setSubFilter | ( | String | sub_filter | ) | throws com.foxit.sdk.PDFException

设置子过滤器。

过滤器和子过滤器用于指定将使用哪个已注册的签名回调对象来 签名/验证当前签名。用户应设置过滤器和子过滤器以 使用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/4]

Progressive com.foxit.sdk.pdf.Signature.startSign | ( | StreamCallback | cert_file_stream,
|  | byte[] | cert_password,
|  | int | digest_algorithm,
|  | StreamCallback | stream_callback,
|  | java.lang.Object | client_data,
|  | PauseCallback | pause
| ) |  | throws com.foxit.sdk.PDFException

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

此函数用于未签名的签名对象。当前签名的过滤器和子过滤器键指定了 用于签名当前签名的签名回调对象的名称。因此在签名之前， 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一，意味着使用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 | 用户实现的com.foxit.sdk.common.fxcrt.StreamCallback 对象， 用于访问将用于签名的证书文件内容。 如果在自定义签名回调中不需要，这可以是null。 如果要使用默认签名回调来签名当前签名，可以使用PFX证书文件。
  [in] | cert_password | 用于打开证书文件的密码字符串。如果这是空字符串， 表示不需要密码。
  [in] | digest_algorithm | 签名数据的消息摘要算法。请参考从com.foxit.sdk.pdf.Signature.e_DigestSHA1 开始的值， 这应该是这些值中的一个。
  [in] | stream_callback | 用户实现的com.foxit.sdk.common.fxcrt.StreamCallback 对象，用于保存签名结果。 已签名的文档将保存到另一个PDF文件。
  [in] | client_data | 用户定义的对象，将传递给SignatureCallback 中的回调函数。 如果使用默认回调对象来签名当前签名，则此参数无用。 默认值：null。
  [in] | pause | 决定签名过程是否需要暂停的暂停对象。这可以是 null，表示在签名过程中不暂停。如果不为 null，它应该是用户实现的有效暂停对象。 默认值：null。

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

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

## ◆ startSign() [2/4]

Progressive com.foxit.sdk.pdf.Signature.startSign | ( | StreamCallback | cert_file_stream,
|  | byte[] | cert_password,
|  | int | digest_algorithm,
|  | String | save_path,
|  | java.lang.Object | client_data,
|  | PauseCallback | pause
| ) |  | throws com.foxit.sdk.PDFException

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

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

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

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

## ◆ startSign() [3/4]

Progressive com.foxit.sdk.pdf.Signature.startSign | ( | String | cert_path,
|  | byte[] | cert_password,
|  | int | digest_algorithm,
|  | StreamCallback | stream_callback,
|  | java.lang.Object | client_data,
|  | PauseCallback | pause
| ) |  | throws com.foxit.sdk.PDFException

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

此函数用于未签名的签名对象。当前签名的过滤器和子过滤器键指定了 用于签名当前签名的签名回调对象的名称。因此在签名之前， 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一，意味着使用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 | 签名数据的消息摘要算法。请参考从com.foxit.sdk.pdf.Signature.e_DigestSHA1 开始的值， 这应该是这些值中的一个。
  [in] | stream_callback | 用户实现的com.foxit.sdk.common.fxcrt.StreamCallback 对象，用于保存签名结果。 已签名的文档将保存到另一个PDF文件。
  [in] | client_data | 用户定义的对象，将传递给SignatureCallback 中的回调函数。 如果使用默认回调对象来签名当前签名，则此参数无用。默认值：null。
  [in] | pause | 决定签名过程是否需要暂停的暂停对象。这可以是 null，表示在签名过程中不暂停。如果不为 null，它应该是用户实现的有效暂停对象。 默认值：null。

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

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

## ◆ startSign() [4/4]

Progressive com.foxit.sdk.pdf.Signature.startSign | ( | String | cert_path,
|  | byte[] | cert_password,
|  | int | digest_algorithm,
|  | String | save_path,
|  | java.lang.Object | client_data,
|  | PauseCallback | pause
| ) |  | throws com.foxit.sdk.PDFException

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

此函数用于未签名的签名。当前签名的过滤器和子过滤器键指定 将用于签名当前签名的签名回调对象的名称。因此在签名之前， 请确保当前签名具有有效的过滤器和子过滤器字符串值。如果过滤器和子过滤器 是以下字符串之一，表示使用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 | 签名数据的消息摘要算法。请参阅从com.foxit.sdk.pdf.Signature.e_DigestSHA1 开始的值， 应为这些值中的一个。
  [in] | save_path | 用于保存签名结果的完整PDF文件路径。已签名文档将 保存到另一个PDF文件。
  [in] | client_data | 用户定义对象，将传递给SignatureCallback 中的回调函数。 如果要使用默认回调对象来签名当前签名，则此参数无用。默认值：null。
  [in] | pause | 决定签名过程是否需要暂停的暂停对象。可以为null， 表示在签名过程中不暂停。如果不为null， 应为用户实现的有效暂停对象。默认值：null。

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

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

## ◆ startVerify()

Progressive com.foxit.sdk.pdf.Signature.startVerify | ( | java.lang.Object | client_data,
|  | PauseCallback | pause
| ) |  | throws com.foxit.sdk.PDFException

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

此函数用于已签名的签名。当前签名的过滤器和子过滤器键指定 将用于验证当前签名的签名回调对象的名称。因此在验证之前， 请确保：必要的签名回调对象已通过函数 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.resume 继续进度，直到进度完成。

## 类成员变量说明

## ◆ e_FieldMDPActionExclude

final int com.foxit.sdk.pdf.Signature.e_FieldMDPActionExclude = 3
| static

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

注解
  "指定表单字段"可以通过函数Signature.getFieldMDPActionFields 和Signature.setFieldMDPActionFields 获取/设置。有关更多详细信息，请参阅这些函数。

## ◆ e_FieldMDPActionInclude

final int com.foxit.sdk.pdf.Signature.e_FieldMDPActionInclude = 2
| static

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

注解
  "指定表单字段"可以通过函数Signature.getFieldMDPActionFields 和Signature.setFieldMDPActionFields 获取/设置。有关更多详细信息，请参阅这些函数。

## ◆ e_LabelNameDN

final int com.foxit.sdk.pdf.Signature.e_LabelNameDN = 4
| static

专有名称的签名键名。

注解
  Foxit PDF SDK中专有名称的默认标签名称是"DN: "。

## ◆ e_LabelNameLocation

final int com.foxit.sdk.pdf.Signature.e_LabelNameLocation = 1
| static

位置的签名标签名称。

注解
  Foxit PDF SDK中位置的默认标签名称是"Location: "。

## ◆ e_LabelNameProducer

final int com.foxit.sdk.pdf.Signature.e_LabelNameProducer = 6
| static

生产者名称的签名键名。

注解
  Foxit PDF SDK中生产者名称的默认标签名称为空。

## ◆ e_LabelNameReason

final int com.foxit.sdk.pdf.Signature.e_LabelNameReason = 2
| static

原因的签名标签名称。

注解
  Foxit PDF SDK中原因的默认标签名称是"Reason: "。

## ◆ e_LabelNameSigner

final int com.foxit.sdk.pdf.Signature.e_LabelNameSigner = 0
| static

签名者的签名标签名称。

注解
  Foxit PDF SDK中签名者的默认标签名称是"Digitally signed by "。

## ◆ e_LabelNameSignTime

final int com.foxit.sdk.pdf.Signature.e_LabelNameSignTime = 3
| static

签名时间的签名标签名称。

注解
  Foxit PDF SDK中签名时间的默认标签名称是"Date: "。