# 签名服务接口
# 简介
SignatureService
类用于自定义 PDF 签名的验证逻辑。通过设置自定义的验签回调,可以将签名验证请求转发至后端服务或集成第三方验证机制。
# 主要方法
# setVerifyHandler(handler: VerifySignatureHandler)
- 功能:设置签名验证回调函数。当 PDF 查看器需要验证签名时,会调用此
handler
。 - 参数:
handler
:类型为VerifySignatureHandler
,签名验证处理函数。
- 返回值:无
- 版本:自 11.0.0 起支持
# handler
说明
handler
是一个异步函数。通常签名如下:async (signatureField, plainContent, signedData, hasDataOutOfScope) => { ... }
在
handler
内部,可以获取签名字段的相关信息(例如filter
、subfilter
、signer
),并将原文和签名数据转发至后端服务进行验证。
# 验签流程说明
验签流程会在以下场景中被触发:
JavaScript action 触发:例如,文档打开时 (PDFDoc open action),鼠标按钮在注释区域释放时 (ANNOT_MOUSE_BUTTON_RELEASED),自动进行验签。
用户操作触发:当用户点击已签名的签名域时,会触发验签流程。
调用
PDFSignature.verify
方法:当使用PDFSignature
中的verify
接口时,如果未指定verifyHandler
选项,则默认使用通过SignatureService.setVerifyHandler
设置的handler
。
注意:
PDFDoc.verifySignature
方法不会默认使用SignatureService
中设置的handler
,需要单独指定。
# 示例
const service = pdfViewer.getSignatureService();
service.setVerifyHandler(async (signatureField, plainContent, signedData, hasDataOutOfScope) => {
const filter = await signatureField.getFilter();
const subfilter = await signatureField.getSubfilter();
const signer = await signatureField.getSigner();
const formdata = new FormData();
formdata.append("filter", filter);
formdata.append("subfilter", subfilter);
formdata.append("signer", signer);
formdata.append("plainContent", new Blob([plainContent]), "plainContent");
formdata.append("signedData", new Blob([signedData]), "signedData");
const response = await fetch('https://<server>:<port>/<path/to/>verify', {
method: 'POST',
body: formdata
});
return parseInt(await response.text());
});
# 注意事项
必须设置验签回调:在调用签名验证流程之前,务必通过
SignatureService.setVerifyHandler
设置handler
,否则验签流程将抛出异常。handler 返回值:
handler
应返回一个表示验证结果的数字(可参考 表单签名字段 文档中的相关说明)。异步支持:
handler
支持异步操作,便于与后端服务集成。适用范围:
SignatureService
的handler
仅在 JavaScript Action 验签流程和PDFSignature.verify
未指定handler
时生效,对PDFDoc.verifySignature
无效。