如何呈现页面并将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);
});
});
});
})
有人知道吗?
答案 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,并且您不会发送回渲染的文件。