web-dev-qa-db-ja.com

取り扱い方法PDF PhantomJSのページネーション

PhantomJSを使用してHTMLからPDFを作成しています。

それは正常に動作しますが、ページネーションを処理する方法を見つけることができません。ドキュメントの各divにページを作成したいのですが、ドキュメントに何も見つかりません。ページネーションについて。

私のドキュメントが短い場合は1ページしか作成されず、大きい場合は1秒の空のページが作成され、コンテンツが最初のページにあるため非常に長くなります。

何か案が ? (私はnodeJSにphantomJS-nodeモジュールを使用しています)

26
Rayjax

PhantomJSは、webkitのcss実装を処理します。手動改ページを実装するには、次のプロパティを使用できます。

  • page-break-before:auto/always/avoid/...
  • page-break-inside:auto/always/avoid/...
  • page-break-after:auto/always/avoid/...

たとえば、divは次のようになります。

 <div style="page-break-before:always;"><!-- content --></div>

または

<div style="page-break-after:always;"> <!-- content --></div>

特に長いhtmlテーブルでは、Webkitでの印刷時に改ページを制御するのが難しい場合があります。

45
Cybermaxs

この issue にさまざまなヒントが表示されます。

display:inline-block改ページしないために改ページしたくない要素。背後にある理由は、webkitがすでに画像の破損を防止しようとしているためです。そして、画像はインラインブロックです。

4
gusgard

非常に遅いですが、要素の表示タイプをインラインブロックに変更することで修正されたJsReportの使用に関する「break-inside:avoid」の問題がありました。詳細はこちら: https://github.com/ariya/phantomjs/issues/10638

4
R. Salisbury

ページネーションは以下でうまく動作します:

 var page = webPage.create();

 page.paperSize = {
  format: 'A4',
  orientation: 'portrait',
  margin: '1cm'
 }

ここでドキュメントを確認してください http://phantomjs.org/api/webpage/property/paper-size.html

1
sbalcerowski