10

我正在使用 phantomjs 生成 pdf 文件,但我想用 HTML 重复定义的标头,它在没有图像时有效,但一旦我添加它就不起作用

page.viewportSize = { width: 600, height: 600 };
page.paperSize = {
  format: 'A4', orientation: 'portrait', margin: '0px',
  header: {
    height: "1.2cm",
    contents: phantom.callback(function(pageNum, numPages) {
      return '<img src="https://www.google.com.bo/images/srpr/logo4w.png" height="0.95cm"/>';
    })
  },
  footer: {
    height: "0.7cm",
    contents: phantom.callback(function(pageNum, numPages) {
      return '<h3 class="header">Footer</h>';
    })
  }
}
4

2 回答 2

8

解决这个问题的方法是,通过将 img 放在带有 display: none; 的正文中来预先缓存页面上的图像。

<img src="https://www.google.com.bo/images/srpr/logo4w.png" height="0.95cm" style="display: none;"/>

然后在您的页眉和/或页脚中添加 img 标签。

这是必需的,因为在继续光栅之前,页眉和页脚不会等待 html 完成加载。它需要改进以更加异步并且是一个已知的错误。

由于页眉和页脚是在页面完全加载后处理的,因此图像也可供他们使用。这也适用于 base64 图像源。

于 2014-10-20T04:53:57.190 回答
5

它适用于来自https://github.com/ariya/phantomjs/pull/359
的补丁 来安装它:

git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 1.9

edit [remote "origin"] part in .git/config
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = https://github.com/ariya/phantomjs.git
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

git fetch
git merge pr/359
./build.sh
于 2013-07-19T06:10:56.320 回答