wkhtmltopdf avec plein de fond de page

j'utilise wkhtmltopdf pour générer un fichier PDF qui va vers une imprimante et j'ai quelques problèmes à faire remplir une page entière dans le PDF résultant.

dans le CSS j'ai mis la largeur et la hauteur à 2480 X 3508 pixels (a4 300 dpi) et lors de la création du PDF j'utilise 0 pour les marges mais je finis toujours avec une petite bordure blanche à droite et en bas. Aussi essayé d'utiliser le mm et le pourcentage, mais avec le même résultat.

j'aurais besoin de quelqu'un pour donner un exemple sur le style du HTML et les options à utiliser en ligne de commande pour que les pages PDF qui en résultent remplissent l'arrière-plan entier. Une façon pourrait être d'inclure le saignement (cela pourrait être nécessaire de toute façon), mais tous les conseils sont les bienvenus. En ce moment, je crée une grande page HTML (sans cassures de page CSS - pourrait aider?) mais si nécessaire, il serait bien de générer chaque page séparément et ensuite de les transmettre toutes à wkhtmltopdf.

27
demandé sur Brian Webster 2011-05-19 15:16:45

7 réponses

wkhtmltopdf v 0.11.0 rc2

Ce qui a fini par travailler:

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

raccourcit

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

utilisant html de stdin (Note dash)

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

utilisant html de stdin à stdout

echo "Test Html" | wkhtmltopdf -T 0 -B 0 -L 0-l 0 - test.pdf

echo "Test Html" | wkhtmltopdf -T 0 -B 0 -L 0-l 0 - - > test.pdf

ne pas:

  • en utilisant --dpi
  • en utilisant --page-width and --page-height
  • en utilisant --zoom
27
répondu Ryan Q 2017-09-25 10:09:19

je me rends compte que c'est vieux et froid, mais juste au cas où quelqu'un trouve cela et a le même/problème similaire, voici une solution qui a fonctionné pour moi après quelques essais et erreurs.

j'ai créé un simple remplissage.html:

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

Utiliser du HTML valide (!DOCTYPE est important) et seulement les styles en ligne. Associez la couleur de fond à celle du document principal et utilisez une hauteur égale ou supérieure à vos marges.

j'exécute la version 0.12.0 avec la suivante arguments:

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

en Espérant que cela aide quelqu'un...

7
répondu savedario 2015-05-26 23:07:20

http://code.google.com/p/wkhtmltopdf/issues/detail?id=359 j'ai trouvé plus de personnes souffrir de ce bug. --dpi 300 le contournement n'a pas fonctionné pour moi, j'ai dû mettre --zoom 1.045 pour zoomer un peu ce qui a fait disparaître la bordure droite et inférieure...

6
répondu lmeurs 2016-03-02 15:30:34

fonctionne très bien pour moi avec les options-B 0-L 0-R 0-T 0 et en utilisant votre astuce de configurer un div de taille A4.

avez-vous pensé à utiliser body {margin:0; padding:0;} en haut de votre CSS?

Je ne peux pas vous aider avec les sauts de page CSS car je n'ai pas encore essayé les erreurs, cependant, vous pouvez exécuter des scripts sur la page pour faire des choses intelligentes. Voici un exemple de jQuery de la façon de diviser le contenu en morceaux de taille de page basée sur la longueur du contenu. Si vous pouvez obtenir cela adapté pour travailler avec wkhtmltopdf alors s'il vous plaît poster ici!

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

5
répondu ʍǝɥʇɐɯ 2011-05-25 13:16:09

j'utilise la version 0.12.2.1 et le paramètre:

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

a fonctionné pour moi.

bien sûr besoin d'ajouter de 0 marges par:

wkhtmltopdf -T 0 -B 0 -L 0 -R 0
4
répondu srokatonie 2015-07-24 20:20:01

On vient de résoudre le même problème en utilisant le --disable-smart-shrinking option.

3
répondu hangy 2017-07-13 14:09:34

ce que vous éprouvez est un bug.

vous aurez besoin de mettre le --dpi option lors de la conversion du fichier. Dans votre cas, vous voudrez probablement --dpi 300, mais cela peut être réglé plus bas.

1
répondu Paul Haggo 2012-11-10 04:12:37