Appearance
sdk 中的文件操作
sdk 中提供了一些开箱即用的方法用于文件的各种操作,如文件的添加、切换、下载等内容。
添加 pdf 文件
addFile 提供添加单个或多个文件的操作,参数详情参考 API 文档
注意事项
addFile
的调用前提为当前签章页面需要渲染,如果 sdk.container
为空,则该操作无效,不会将文件保留到下次渲染时进行添加。
获取当前文件列表 / 当前文件
- getDocuments 将会返回所有当前展示的文件,文件数据结构为 FileDescriptor,该结构为系统对 pdf 文件解析后生成的数据,包含了文件二进制数据以及其他内部使用的数据,通过该类型您可以获取到更多的文件信息进行灵活展示。
注意事项
与 addFile
类似,该方法也依赖签章页面的渲染,再未渲染页面时,获取到的数据为空数组。
- getCurrentDocument 获取当前页面展示的 pdf 文件。
切换 pdf 文件
doSwitchDocument 切换当前签章页面渲染的 pdf 文件,配合 FILE_LIST_CHANGE
文件列表的变化事件或 getDocuments 接口,可轻松实现文件列表选框的实现。
下载文件
通过 downloadCurrentFile() 或 downloadFile(file) 可以下载当前文件或指定的文件。
注意事项
downloadFile
参数为一个 FileDescriptor,可通过 sdk.getdocuments()
获取文件列表后选择需要的文件进行下载。
签名文件的保存
保存签名
在创建 sdk 时,通过 sdk 构造函数传参可以指定 showSaveBtn 是否展示保存签名的按钮(默认为 true
),此时签章页面自带保存功能。
若您需要自行控制收否签名,可将 showsavebtn
值传为 false
,通过 signPdf(),即可触发保存操作。
ts
const save = document.getElementById('save')
save.addEventListener('click', function() {
if (!uKeySdkInstance) {
return;
}
uKeySdkInstance.signPdf()
})
调用成功,页面则出现以下输入密码的情景。
如果调用后页面无反应,则可能是当前无法进行签署,您可以通过 isNeedSave() 以及配置项中的 canSign
确定当前是否可以签署,如果不可以签署,则给出适当提示后返回。
ts
if (!uKeySdkInstance.config.canSign) {
message.warn('当前不可签署')
return;
}
if (!uKeySdkInstance.isNeedSave()) {
message.warn('请添加印章后再进行签署')
return;
}
保存签名说明
注意
保存签名会对当前文件列表中所有有更改(即页面添加了新的签名)的文件遍历进行保存操作,而非只保存当前展示的文件。
签名回调
您可以在创建 sdk 实例时,传入 signCb 回调函数,在文件签署成功后将会调用。
ts
const uKeySdkInstance = new QysUKeySdk({
signCb: function(file) {
console.log('签署完成,签署结果为:', file);
}
})
回调调用时机
回调函数会在每份文件签署成功后单独调用,例如调用 sdk.signPdf()
保存后,有两份文件被签署,此时 signCb
会触发两次,回调中会返回签署的文件,文件数据结构为 FileDescriptor
无外观签名
有一种情况为 uKey 中的签章没有外观,此时如果使用的是签名工具自带的 保存
按钮,则会一直处于激活状态,在进行签名时,只会对当前文件进行无外观签名,除非其他文件有更改,也会对其他文件的修改进行保存(一般不会出现此情况)。
获取 pdf 文档中的验签信息
所有 PDF 文件在上传后会自动进行解析,如果文件中包含电子签名信息,则会自动进行验签操作,当文件添加签名重新保存后,会再次进行文件验签,通过调用 getVerifyResult(),可以获取当前文件的所有验签结果,验签结果为 Signature 数组
ts
uKeySdkInstance.getVerifyResult()