web-dev-qa-db-ja.com

全ページ背景付きのwkhtmltopdf

Wkhtmltopdfを使用して、プリンターに送信されるPDFファイルを生成していますが、結果のPDFでページ全体をコンテンツで埋めるのに問題があります。

CSSでは、幅と高さを2480 X 3508ピクセル(a4 300 dpi)に設定し、PDFを作成するときにマージンに0を使用しますが、それでも小さな白い境界線で終了しますまた、mmとパーセンテージを使用しようとしましたが、同じ結果になりました。

結果のPDFページが背景全体に表示されるように、HTMLのスタイル設定方法とコマンドラインで使用するオプションの例を誰かに教えてください。ブリーディング(これはとにかく必要かもしれません)を含んでいますが、どんなヒントでも大歓迎です。現時点では、1つの大きなHTMLページを作成しています(CSS改ページなし-役立つかもしれません)。それらすべてをwkhtmltopdfに。

27
Lorentz

wkhtmltopdf v 0.11.0 rc2

何が機能したか:

wkhtmltopdf --margin-top 0 --margin-bottom 0 --margin-left 0 --margin-right 0 <url> <output>

短縮

wkhtmltopdf -T 0 -B 0 -L 0 -R 0 <url> <output>

stdinからhtmlを使用(ダッシュに注意)

echo "<h1>Testing Some Html</h2>" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0 - <output>

標準入力から標準出力へのHTMLの使用

echo "Htmlのテスト" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0-test.pdf

echo "Htmlのテスト" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0--> test.pdf

Whatdid notwork:

  • --dpiを使用
  • --page-width and --page-heightを使用
  • --zoomを使用
33
Ryan Q

私はこれが古くて寒いことを知っていますが、誰かがこれを見つけて同じ/同様の問題がある場合に備えて、試行錯誤の後に私のために働いた回避策があります。

次のような単純なfiller.htmlを作成しました。

<!DOCTYPE html>
<html>
<head>
</head>
<body style="margin: 0; padding: 0;">
<div style="height: 30mm; background-color: #F7EBD4;">
&nbsp;
</div>
</body>
</html>

有効なHTML(!DOCTYPEが重要)とインラインスタイルのみを使用してください。背景色をメイン文書の背景色と一致させ、余白以上の高さを使用します。

次の引数を使用してバージョン0.12.0を実行します。

wkhtmltopdf --print-media-type --orientation portrait --page-size A4
 --encoding UTF-8 --T 10mm --B 10mm --L 0mm --R 0mm
 --header-html filler.html --footer-html filler.html - - <file.html >file.pdf

これが誰かを助けることを願っています...

8
savedario

http://code.google.com/p/wkhtmltopdf/issues/detail?id=359 で、このバグに苦しんでいる人が増えていることがわかりました。 --dpi 300回避策はうまくいきませんでした。--zoom 1.045少し拡大して、余分な右と下の境界線を非表示にしました...

6
lmeurs

--disable-smart-shrinking オプションを使用して、同じ問題を解決しました。

5
hangy

-B 0 -L 0 -R 0 -T 0オプションを使用して、A4サイズのdivをセットアップするトリックを使用すると、うまく機能します。

Body {margin:0;を使用することを覚えていましたかpadding:0;}はCSSの上部にありますか?

エラーが発生したものをまだ試用していないため、CSSの改ページを支援することはできませんが、ページ上でスクリプトを実行して巧妙なことを行うことができます。以下は、コンテンツの長さに基づいてコンテンツをページサイズチャンクに分割する方法のjQueryの例です。 wkhtmltopdfで動作するように適応できる場合は、ここに投稿してください!

http://www.script-tutorials.com/demos/79/index.html

5
ʍǝɥʇɐɯ

私はバージョン0.12.2.1を使用して設定しています:

body { padding: 0; margin 0; }
div.page-layout { height: 295.5mm; width: 209mm;}

私のために働いた。

もちろん、次の方法で0マージンを追加する必要があります。

wkhtmltopdf -T 0 -B 0 -L 0 -R 0
4
srokatonie

あなたが経験しているのはバグです。

ファイルを変換するときは、--dpiオプションを設定する必要があります。あなたの場合、おそらく--dpi 300が欲しいでしょうが、それはもっと低く設定することができます。

1
Paul Haggo