【发布时间】:2017-01-04 20:40:08
【问题描述】:
我正在尝试从我的一个视图创建 PDF。
此视图使用 Jade 和 Express 呈现,加载一些 Javascript、一些 CSS 文件、扩展一些 Jade 视图,并查询数据库以填充不同的图形。渲染过程大约需要 7 秒,因为它没有得到很好的优化。
另外,视图的 GET 请求使用passport 和connect-ensure-login 在渲染之前验证用户是否已登录,并传递一些变量供 Jade 在渲染时使用。这是处理程序代码:
var express = require('express');
var router = express.Router();
var moment = require('moment');
router.get('/', require('connect-ensure-login').ensureLoggedIn(), function (req, res, next) {
res.render('summary', {
title: 'Summary',
day: moment().format('D'),
month: moment().locale('es').format('MMMM'),
year: moment().format('YYYY')
});
});
module.exports = router;
这是需要转成PDF的Jade文件:
extends layout
block content
.container-fluid
#banner
.chart#chart1
.chart#chart2
.chart#chart3
script(type='text/javascript', src='/javascripts/summary.js')
这是扩展的 Jade 文件(布局):
doctype html
html
head
meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(http-equiv='content-type', content='text/html; charset=UTF-8')
meta(content='width=device-width, initial-scale=1', name='viewport')
title=title
link(rel='stylesheet', type='text/css', href='/stylesheets/styles.css')
script(type='text/javascript', src='/assets/jquery-3.1.1/jquery-3.1.1.min.js')
script(type='text/javascript', src='/assets/bootstrap-3.3.7/js/bootstrap.min.js')
body
.page-wrapper
block content
如何加载页面并截取屏幕截图并将其转换为 PDF 或将 Jade 文件中的 PDF 渲染为 PDF?
我听说过 PhantomJS,但我找不到最新的信息。
如果有人可以帮助我,我将非常感激。
【问题讨论】:
标签: node.js pdf express phantomjs pug