我在这里有一个大问题。我想使用express.js、幻影和EJS从具有自定义头和页脚的HTML模板自动生成PDF文件。
在PhantomJS生成的页脚头中放置任何“硬编码”HTML (它们可以工作)没有任何问题:
footer: {
height: "3cm",
contents: ph.callback(function(pageNum, numPages) {
return "<div style='padding: .2em; font-size: 10pt;border-top: 1px solid #ccc; color: #999;'> FOOTER <span style='float:right'> Página " + pageNum + " / " + numPages + "</span></div>";
})但是,每当我尝试以编程方式定制它时:
var pdfHeader = ejs.compile(fs.readFileSync(path.join('server/components/mail/html-templates/pdf-header.html'), 'utf8'));
pdfHeader = pdfHeader({info: info});
header: {
height: "3cm",
contents: ph.callback(function(pageNum, numPages) {
if (pageNum == numPages) {
return "";
}
return pdfHeader;
})
},它失败了,给了我这样的信息:
幻影stdout: SyntaxError:意外EOF
如何将带有一些自定义数据的自定义HTML代码放入标头?
发布于 2017-01-06 20:52:17
因此,有几件事与phatomjs内容回调有关。
ph.callback中的函数有自己的上下文。所以它不能在自己的作用域之外看到变量。见https://github.com/amir20/phantomjs-node/issues/224。Git问题中提供的@zgotts示例对我有用。
var headerHtml =headerHtml‘utf8’);var createHeader =函数(Html){返回函数(pageNum,numPages) {//sole.log( html);console.log(头集!);返回'%HTML%';}.toString().replace(/%HTML%/,html);};renderSession.createPage() .then(_page){ page = _page;var file = 'file.pdf';renderSession.callback(createHeader(headerHtml)) (‘纸大小’,{格式:‘字母’,标题:{高度:"3.75cm",目录:renderSession.callback(createHeader(headerHtml))} });https://stackoverflow.com/questions/33927772
复制相似问题