我正在服务器上使用Puppeteer建立一个PDF文件,并将其作为缓冲区返回给客户端下载。我不明白为什么这个转换不能用于下载。如果我在服务器端下载,一切都正常。我哪里出错了?
onSuccess(data) {
const blob = new Blob([data as Buffer], { type: 'application/pdf' })
const link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = 'test.pdf'
link.click()
},
1条答案
按热度按时间qpgpyjmq1#
这种情况总是发生,我发现它的权利后,张贴。
答案是微妙的。我使用React Query来获取数据。从Node和Puppeteer返回的缓冲区如下所示:
要转换的数据位于data属性上,而不是Buffer本身。因此,正确的代码如下所示:
这让我感觉很不爽(让TS很不爽),所以我继续搜索,决定在返回客户端之前将PDF转换为base64,这看起来也很有效。在服务器上,看起来像这样: