统一pdf和png缓冲区,节点js

时间:2020-10-13 14:47:04

标签: javascript node.js pdf buffer

我遇到一种情况,我需要保存用户签名并附加到他提出的pdf文档中。签名为png

当前相关代码:


let fileStream = await this.getStream('media', docID, name)
let file = await new Promise(resolve => {
                let bufs = []
                fileStream.on('data', chunk => {
                    bufs.push(chunk)
                })
                fileStream.on('end', () => resolve(Buffer.concat(bufs)))
            })

signature = await Buffer.from(signature.replace(/^data:image\/\w+;base64,/, ''), 'base64')

const fileName = this.fileName('png',//?!?
                               fileNameArr)
const location = `${userID}/${fileName}`

await Drive.disk('minio')
          .bucket(`clients`)
          .put(location, Buffer.concat([signature, file])) //problematic line
          .then(async () => {
              const file = new File()
              file.related_id = userID
              file.file_name = fileName
              file.file_ext = 'png' //?!?
              file.bucket = 'clients'
              file.type = type
              file.status = 'archived'
              await file.save()
})

到目前为止,在从客户端向服务器发送签名之前,我已经尝试过this.signaturePad.toDataURL('application/pdf', 1.0),但是它被忽略了并且仍然是png。 当然,保存此缓冲区会使他的部分内容被破坏

我尝试过的另一件事是实际创建pdf(我们的服务器堆栈中已经有pdfkit),但是该过程是减慢速度的方法。

有没有办法连接这两个缓冲区?

0 个答案:

没有答案