用pdfkit生成的内容如何写成pdf文件呢

写了一个转pdf的函数,但是导出的pdf打开的时候提示文件损坏,应该是写入的内容有问题,但实在是不知道该如何解决
先贴代码
用到了两个库,pdfkit,和blob-stream

let doc = new PDFDocument()
      let stream = doc.pipe(blobStream())
      // doc.pipe(fs.createWriteStream('Aim.pdf'))
      console.dir(stream)
      doc.fontSize(25).text('Here is some vector graphics...', 100, 80)

      // some vector graphics
      doc
        .save()
        .moveTo(100, 150)
        .lineTo(100, 250)
        .lineTo(200, 250)
        .fill('#FF3300')

      doc.circle(280, 200, 50).fill('#6600FF')

      // an SVG path
      doc
        .scale(0.6)
        .translate(470, 130)
        .path('M 250,75 L 323,301 131,161 369,161 177,301 z')
        .fill('red', 'even-odd')
        .restore()

      // end and display the document in the iframe to the right
      doc.end()

      // html5Bolb转arraybuffer
      // stream.toBlob('application/pdf')
      // console.log('转blob', stream._blob.length)
      // let reader = new FileReader()
      // reader.readAsArrayBuffer(stream._blob)
      // reader.onload = function (e) {
      //   console.log('onloaded', reader.result)
      // }
      stream.on('finish', function() {
        stream.toBlob('application/pdf')
        // stream.toBlobURL('application/pdf')
        console.log('after', stream, doc)
        doc.pipe(fs.createWriteStream('Aim.pdf'))
      //   // console.log('over', stream.toBlobURL('application/pdf'))
        console.log('over')
      })

打印的内容如下图片描述

不知该从哪儿下手了

阅读 2.9k
2 个回答

已解决,是将图片数据转成arraybuffer后通过pdfkit写入文档,然后fs.writeFile()写到本地

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题