Nodejs PDFMake下载无法打开

1 pdf node.js pdfmake

我现在正在做 Nodejs,尝试使用 PDFMake 生成 PDF。生成后,我希望立即下载它。但是,下载文件后,我无法打开文件。它显示“无法加载 PDF 文档”。我写的代码如下。

var docDefinition = { content: 'test', };

var pdfDoc = printer.createPdfKitDocument(docDefinition);
pdfDoc.pipe(fs.createWriteStream('name.pdf'));

pdfDoc.end();

res.download('name.pdf');
Run Code Online (Sandbox Code Playgroud)

Mar*_*Ong 5

查看我对此问题的解决方案pdfMake - cannot open file

为什么pdfmake无法打开文件是因为文件流fs仍在写入内存块,这使得它无法读取并且下载的PDF会被损坏,大小为0KB。

解决方案:添加一个事件监听器fs.createWriteSteam,等待fs写入完成再发送文件。

var temp123;
pdfDoc.pipe(temp123 = fs.createWriteStream('./PDF/' + name), { encoding:'utf16' });

pdfDoc.end();

temp123.on('finish', async function () {
  // do send PDF file 
  res.download('name.pdf');
});
Run Code Online (Sandbox Code Playgroud)