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

これを回避するハックな方法は、image を body に 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 に答える