首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将变量放入PhantomJS生成的headers中进行PDF转换?

如何将变量放入PhantomJS生成的headers中进行PDF转换?
EN

Stack Overflow用户
提问于 2015-11-25 22:48:37
回答 1查看 859关注 0票数 5

我在这里有一个问题。我想使用express.js、幻影和EJS从具有自定义头和页脚的HTML模板自动生成PDF文件。

在PhantomJS生成的页脚头中放置任何“硬编码”HTML (它们可以工作)没有任何问题:

代码语言:javascript
复制
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>";
    })

但是,每当我尝试以编程方式定制它时:

代码语言:javascript
复制
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代码放入标头?

EN

回答 1

Stack Overflow用户

发布于 2017-01-06 20:52:17

因此,有几件事与phatomjs内容回调有关。

  1. 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))} });
  2. 我发现的第二个问题是,如果ejs文件中有换行符,它就无法工作。另外,样式不适用,所以如果有样式,就必须添加内联样式。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33927772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档