gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:00:02 31 4
gpt4 key购买 nike

我正在使用 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');

最佳答案

doc.write是导致问题的行,也是deprecated method所以不要使用它。相反,请使用管道告诉您的文档将信息流式传输到哪里,并记住使用 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 )

关于javascript - 使用pdfkit生成pdf文件并发送到nodejs-expressjs中的浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23624005/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com