使用pdfkit生成PDF文件并将其发送到nodejs-expressjs中的浏览器

我正在使用pdfkit生成PDF文件,我想发送这个PDF文件到浏览器。

但我得到的消息"TypeError: listener must be a function",此外,文件正在生成在我的父目录,我不想要。

任何人都可以解释我如何生成PDF文件,并将其发送到浏览器,而无需存储在父目录?
我在这里使用expressjs。

我的代码

 var PDFDocument = require('pdfkit'); var fs=require('fs'); doc = new PDFDocument(); doc.moveTo(300, 75) .lineTo(373, 301) .lineTo(181, 161) .lineTo(419, 161) .lineTo(227, 301) .fill('red', 'even-odd'); var loremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in...'; doc.y = 320; doc.fillColor('black') doc.text(loremIpsum, { paragraphGap: 10, indent: 20, align: 'justify', columns: 2 }); doc.write('out.pdf'); res.download('out.pdf'); 

       

网上收集的解决方案 "使用pdfkit生成PDF文件并将其发送到nodejs-expressjs中的浏览器"

doc.write是引起麻烦的一行,这也是一个废弃的方法,所以不要使用它。 相反,使用pipe来告诉你的文档在哪里传输信息,并记得使用doc.end()来closures它,也就是说:

 doc = new PDFDocument(); doc.pipe( fs.createWriteStream('out.pdf') ); // rest of the code goes here... doc.end(); 

请注意, doc.pipe()在顶部并不重要, doc.pipe()我来说是有意义的(你可以在doc.end()之前或之后doc.end()它,没关系,它可以正常工作)。 最后,请注意,您可以使用pipe直接传输到响应,不需要先创build文件然后下载它,即:

 doc.pipe( fs.createWriteStream(res) ) 

所以请尝试使用

doc.pipe(RES);