【发布时间】:2016-03-14 22:43:33
【问题描述】:
我正在使用带有 phantom 模块的 nodejs 从 html 生成 pdf。
首先,我阅读 html 模板并用数据填充它,然后将其呈现为 pdf。我希望使用 bootstrap css 来设置页面样式,但是样式在生成的 pdf 文件中无论如何都会被忽略。
这是我的 javascript 代码:
var phantom = require('phantom');
var htmlTemplate;
fs = require('fs')
fs.readFile('template.html', 'utf8', function (err,data) {
var htmlTemplate = populateTemplate(data, body)
phantom.create(function(ph){
ph.createPage(function(page) {
page.set("paperSize", {
format: "A4",
orientation: 'portrait',
margin: '1cm'
});
page.setContent(htmlTemplate, "", function(){
page.render("../userdata/test.pdf", function(){
console.log("page rendered");
ph.exit();
});
});
})
});
});
html 模板(简化)如下所示:
<!DOCTYPE html>
<html>
<head>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.5/paper/bootstrap.min.css", rel="stylesheet">
<meta charset="utf-8">
</head>
<body>
<div class="container">
<h1>Title</h1>
<%NAME%>
</div>
</body>
</html>
所有标记都呈现到页面,但没有样式。即使我使用本地css文件或在头部的<style>元素中包含样式,结果都是一样的
【问题讨论】: