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

2024-04-11

我正在使用 pdfkit 生成 pdf 文件,我想将此 pdf 文件发送到浏览器。

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

谁能解释一下如何生成 pdf 文件并将其发送到浏览器而不将其存储在父目录中?
我这里用的是expressjs。

My code

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');

doc.write是造成麻烦的线路,这也是已弃用的方法 http://pdfkit.org/docs/getting_started.html所以不要使用它。相反,使用管道告诉您的文档在哪里传输信息,并记住使用关闭它doc.end(),即像这样:

doc = new PDFDocument();
doc.pipe( fs.createWriteStream('out.pdf') );

// rest of the code goes here...

doc.end();

请注意,这并不重要doc.pipe()位于顶部,这对我来说很有意义(您可以将其放在之前或之后doc.end()。没关系,它会工作得很好)。最后,请注意,您可以使用pipe要直接流式传输到响应,无需先创建文件然后下载它,即:

doc.pipe( res )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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