J'utilise wkhtmltopdf pour générer un fichier PDF qui va sur une imprimante et j'ai des problèmes pour que le contenu remplisse une page entière dans le PDF résultant.
Dans le CSS, j'ai défini la largeur et la hauteur sur 2480 X 3508 pixels (a4 300 dpi) et lors de la création du PDF j'utilise 0 pour les marges mais je me retrouve toujours avec une petite bordure blanche pour à droite et en bas. A également essayé d'utiliser mm et pourcentage mais avec le même résultat.
J'aurais besoin de quelqu'un pour fournir un exemple sur la façon de styliser le HTML et les options à utiliser en ligne de commande afin que les pages PDF PDF remplissent tout l'arrière-plan. Une façon pourrait être de inclure des saignements (cela peut être nécessaire de toute façon), mais tous les conseils sont les bienvenus. Pour le moment, je crée une grande page HTML (sans les sauts de page CSS - pourrait aider?) mais si nécessaire, il serait bien de générer chaque page séparément puis de nourrir tous à wkhtmltopdf.
wkhtmltopdf v 0.11.0 rc2
Ce qui a fini par fonctionner:
wkhtmltopdf --margin-top 0 --margin-bottom 0 --margin-left 0 --margin-right 0 <url> <output>
raccourci à
wkhtmltopdf -T 0 -B 0 -L 0 -R 0 <url> <output>
tilisation de html depuis stdin (Note tiret)
echo "<h1>Testing Some Html</h2>" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0 - <output>
tilisation de html de stdin à stdout
echo "Tester du HTML" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0 - test.pdf
echo "Tester du HTML" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0 - -> test.pdf
Ce que n'a pas fonctionné:
--dpi
--page-width and --page-height
--zoom
Je me rends compte que c'est vieux et froid, mais juste au cas où quelqu'un trouverait cela et aurait le même problème/similaire, voici une solution de contournement qui a fonctionné pour moi après quelques essais et erreurs.
J'ai créé un simple filler.html comme:
<!DOCTYPE html>
<html>
<head>
</head>
<body style="margin: 0; padding: 0;">
<div style="height: 30mm; background-color: #F7EBD4;">
</div>
</body>
</html>
Utilisez un code HTML valide (! DOCTYPE est important) et uniquement des styles en ligne. Faites correspondre la couleur d'arrière-plan à celle du document principal et utilisez une hauteur égale ou supérieure à vos marges.
J'exécute la version 0.12.0 avec les arguments suivants:
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 ...
À http://code.google.com/p/wkhtmltopdf/issues/detail?id=359 J'ai découvert que plus de gens "souffraient" de ce bogue. Le --dpi 300
la solution de contournement n'a pas fonctionné pour moi, j'ai dû définir --zoom 1.045
pour zoomer un peu ce qui a fait disparaître la bordure extra droite et inférieure ...
Nous venons de résoudre le même problème en utilisant --disable-smart-shrinking
option.
Fonctionne bien pour moi avec les options -B 0 -L 0 -R 0 -T 0 et en utilisant votre astuce pour configurer un div au format 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 testé ces erreurs, cependant, vous pouvez exécuter des scripts sur la page pour faire des choses intelligentes. Voici un exemple jQuery de la façon de diviser le contenu en morceaux de taille de page en fonction de la longueur du contenu. Si vous pouvez l'adapter pour travailler avec wkhtmltopdf, veuillez poster ici!
J'utilise la version 0.12.2.1 et le réglage:
body { padding: 0; margin 0; }
div.page-layout { height: 295.5mm; width: 209mm;}
travaillé pour moi.
Bien sûr, vous devez ajouter 0 marges en:
wkhtmltopdf -T 0 -B 0 -L 0 -R 0
Ce que vous rencontrez est un bug.
Vous devrez définir le --dpi
option lors de la conversion du fichier. Dans votre cas, vous voudrez probablement --dpi 300
, mais qui peut être réglé plus bas.