使用幻像渲染PDF并将其发送到node.js中的浏览器

时间:2017-01-10 23:28:20

标签: node.js

如何呈现页面并将PDF发送到浏览器?这个代码可以在服务器上生成pdf,使用phantom = require('phantom')并表达:

app.get('/report/:c', function(req, res) {
    phantom.create().then(function(ph) {
        ph.createPage().then(function(page) {
            page.property('paperSize', {
                format: 'Letter',
                orientation: 'portrait'
            });
            page.property('viewportSize', {
                width: 1056,
                height: 816
            });
            page.open("myUrl").then(function(status) {
                setTimeout(function() {
                    page.render('mypage.pdf').then(function() {
                        res.send('Page Rendered');
                        ph.exit();
                    });
                }, 2000);
            });
        });
    });
})

有人知道吗?

2 个答案:

答案 0 :(得分:0)

你需要这样的东西:

这会将您的信息流传输到res

router.get('/some_route', function(req, res, next) {


    phantom.create().then(function(ph) {
        ph.createPage().then(function(page) {

            var url = "somethingggg";

            page.open(url).then(function(status) {

                var file_name = path.join(__dirname, 'report.pdf');

                page.render(file_name).then(function() {

                    var from = fs.createReadStream(file_name);

                    from.pipe(res);
                    from.on('end', function() {
                        ph.exit();
                    });

                });
            });
        });
    });
});

答案 1 :(得分:0)

您需要为pdf 'Content-Disposition': 'attachment; filename=example.pdf'设置内容处理。您可以查看此仓库以获取更多详细信息aProxy,并且您不会发送回渲染的文件。