无法使用express.js

时间:2017-10-29 17:32:19

标签: node.js express pdfkit

我正在使用带有pdfkit的express.js,尝试生成pdf并强制在webbrowser中下载。

我定义了存储pdf的静态位置,但是当我想要读取此位置并下载文件时,没有任何反应。我也试过设置标题,但这不起作用。

我读过这可能与运行服务器和前端的端口有关。在我的例子中,它们是:4200(Angular)和8080(Node.js)

这是服务器代码的片段:

var downl = doc.pipe(fs.createWriteStream('C:/Users/Martyna/Desktop/test pdfow/out.pdf') );

doc.end();

downl.on('finish', function() {
    res.download('C:/Users/Martyna/Desktop/test pdfow/out.pdf', 'out.pdf');
})

2 个答案:

答案 0 :(得分:1)

您需要在响应中添加以下标题。要下载文件而不是查看

Content-Type: application/pdf
Content-Disposition: attachment; filename="You_File_Name.pdf"

向浏览器表明应该在浏览器中查看该文件:

Content-Type: application/pdf
Content-Disposition: inline; filename="You_File_Name.pdf"

答案 1 :(得分:0)

您只需读取文件并将其作为响应发送即可。 该代码对我有用!

fs.readFile('C:/Users/Martyna/Desktop/test pdfow/out.pdf',(err,data)=>{
if(err){
  consol.log(err);
}else {
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'attachment; filename=your_file_name_for_client.pdf');

res.send(data)
}
})