Javascript 如何将变量放入PhantomJS生成的HTML头中进行PDF转换?
我这里有一个很大的问题。我想使用express.js、phantomjs和EJS从带有自定义页眉和页脚的HTML模板自动生成PDF文件 在PhantomJS生成的页脚页眉中放入任何“硬编码”HTML字符串都没有任何问题(它们可以工作): 它失败了,给了我这样的信息: 幻象标准输出:语法错误:意外的EOFJavascript 如何将变量放入PhantomJS生成的HTML头中进行PDF转换?,javascript,html,node.js,pdf,phantomjs,Javascript,Html,Node.js,Pdf,Phantomjs,我这里有一个很大的问题。我想使用express.js、phantomjs和EJS从带有自定义页眉和页脚的HTML模板自动生成PDF文件 在PhantomJS生成的页脚页眉中放入任何“硬编码”HTML字符串都没有任何问题(它们可以工作): 它失败了,给了我这样的信息: 幻象标准输出:语法错误:意外的EOF 如何将带有一些自定义数据的自定义HTML代码放入标题中?因此,phatomjs内容回调有几个方面 ph.callback中的函数有自己的上下文。所以它不能看到自己范围之外的变量。看见 @zgot
如何将带有一些自定义数据的自定义HTML代码放入标题中?因此,phatomjs内容回调有几个方面
ph.callback
中的函数有自己的上下文。所以它不能看到自己范围之外的变量。看见
@zgotts在Git问题中提供的例子对我很有用
var headerHtml = ejs.compile(fs.readFileSync(path.join('server/components/mail/html-templates/pdf-header.html'), 'utf8'));
var createHeader = function(html) {
return function (pageNum, numPages) {
//console.log(html);
console.log('Header set!');
return '%HTML%';
}.toString().replace(/%HTML%/, html);
};
renderSession.createPage()
.then(function(_page) {
page = _page;
var file = 'file.pdf';
page.property('paperSize', {
format: 'Letter',
header: {
height: "3.75cm",
contents: renderSession.callback(createHeader(headerHtml))
}
})
});
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;
})
},
var headerHtml = ejs.compile(fs.readFileSync(path.join('server/components/mail/html-templates/pdf-header.html'), 'utf8'));
var createHeader = function(html) {
return function (pageNum, numPages) {
//console.log(html);
console.log('Header set!');
return '%HTML%';
}.toString().replace(/%HTML%/, html);
};
renderSession.createPage()
.then(function(_page) {
page = _page;
var file = 'file.pdf';
page.property('paperSize', {
format: 'Letter',
header: {
height: "3.75cm",
contents: renderSession.callback(createHeader(headerHtml))
}
})
});