Skip to content
文档目录

sdk 中的文件操作

sdk 中提供了一些开箱即用的方法用于文件的各种操作,如文件的添加、切换、下载等内容。

添加 pdf 文件

addFile 提供添加单个或多个文件的操作,参数详情参考 API 文档

注意事项

addFile 的调用前提为当前签章页面需要渲染,如果 sdk.container 为空,则该操作无效,不会将文件保留到下次渲染时进行添加。

获取当前文件列表 / 当前文件

  1. getDocuments 将会返回所有当前展示的文件,文件数据结构为 FileDescriptor,该结构为系统对 pdf 文件解析后生成的数据,包含了文件二进制数据以及其他内部使用的数据,通过该类型您可以获取到更多的文件信息进行灵活展示。

注意事项

addFile 类似,该方法也依赖签章页面的渲染,再未渲染页面时,获取到的数据为空数组。

  1. getCurrentDocument 获取当前页面展示的 pdf 文件。

切换 pdf 文件

doSwitchDocument 切换当前签章页面渲染的 pdf 文件,配合 FILE_LIST_CHANGE 文件列表的变化事件或 getDocuments 接口,可轻松实现文件列表选框的实现。

下载文件

通过 downloadCurrentFile()downloadFile(file) 可以下载当前文件或指定的文件。

注意事项

downloadFile 参数为一个 FileDescriptor,可通过 sdk.getdocuments() 获取文件列表后选择需要的文件进行下载。

签名文件的保存

保存签名

在创建 sdk 时,通过 sdk 构造函数传参可以指定 showSaveBtn 是否展示保存签名的按钮(默认为 true ),此时签章页面自带保存功能。

image-20230213134815985

若您需要自行控制收否签名,可将 showsavebtn 值传为 false,通过 signPdf(),即可触发保存操作。

ts
const save = document.getElementById('save')
save.addEventListener('click', function() {
  if (!uKeySdkInstance) {
    return;
  }
  uKeySdkInstance.signPdf()
})

调用成功,页面则出现以下输入密码的情景。image-20230213140346234

如果调用后页面无反应,则可能是当前无法进行签署,您可以通过 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()

image-20230213143158783