在节点中打开 pdfkit 创建的 pdf 文件时出错

问题描述 投票:0回答:2
const doc = new PDFDocument(); 
// do stuff here
const writeStream = fs.createWriteStream('output.pdf')
doc.pipe(writeStream);
doc.end();

上面的代码生成pdf文件,但无法打开pdf,显示文件已损坏的错误。

node.js fs pdfkit
2个回答
4
投票

您可能遇到异步问题,在文档写入磁盘之前尝试访问/返回文档。

用处理程序修复:

writeStream.on('finish', () => { .. your code here .. });

0
投票

在 AlienWebguy 的答案之上,如果您处于异步函数中,则可以执行以下操作:

import { once } from 'events'

async function main () {
  const doc = new PDFDocument(); 
  // do stuff here
  const writeStream = fs.createWriteStream('output.pdf')
  doc.pipe(writeStream);
  doc.end();
  await once(writeStream, 'finish');
}

main()
完成执行时,您可以保证流已完成写入磁盘,并且可以再次安全地操作文件,或退出进程。

© www.soinside.com 2019 - 2024. All rights reserved.