【问题标题】:How to send a file to download as response in node js如何在节点 js 中发送文件以作为响应下载
【发布时间】:2018-01-14 16:20:40
【问题描述】:

我要求 HTML 页面需要转换为 PDF 文件并发送 PDF 作为对节点中 api 调用的响应。为此,我使用 wkhtmltopdf 包将 HTML 转换为 PDF。

app.js

var express = require("express");
var http= require("http");
var app = express();
var wkhtmltopdf = require('wkhtmltopdf');
var fs = require('fs');
var res1 = fs.createWriteStream('out2.pdf');


app.get('/', function (req, res) {
  res.send('Hello World!')
});


app.get('/getPDF',function(req, res){
    wkhtmltopdf('<h1>Test</h1><p>Hello world</p>').pipe(res1);
    res.setHeader('content-type', 'application/pdf');
    res.send(res1);

});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
}); 

但它正在项目文件夹中创建 out2.pdf。但我无法在浏览器中将 out2.pdf 作为可下载文件获取,而是出现以下错误

错误

Example app listening on port 3000!
events.js:163
      throw er; // Unhandled 'error' event
      ^

Error: write after end
    at writeAfterEnd (_stream_writable.js:191:12)
    at WriteStream.Writable.write (_stream_writable.js:238:5)
    at Socket.ondata (_stream_readable.js:555:20)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at Pipe.onread (net.js:563:20)

知道如何满足我的要求

【问题讨论】:

    标签: javascript node.js pdf wkhtmltopdf


    【解决方案1】:

    试试,

    app.get('/getPDF',function(req, res){
      res.setHeader('content-type', 'application/pdf');
      wkhtmltopdf('<h1>Test</h1><p>Hello world</p>').pipe(res1).pipe(res);
    });
    

    wkhtmltopdf 的结果通过管道传输到response 流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      相关资源
      最近更新 更多