J'utilise PhantomJS pour créer des PDF à partir de html.
Cela fonctionne bien, mais je ne peux pas savoir comment travailler avec la pagination; Je veux créer une page pour chaque div de mon document, mais je ne trouve rien dans le document. sur la pagination.
Si mon document est court, il ne fait qu'une page, et s'il est plus grand, il crée une seconde page vide et mon contenu est dans la première page qui devient très longue.
Une idée ? (J'utilise le module phantomJS-node pour nodeJS)
PhantomJS s'occupe de l'implémentation css du webkit. Pour implémenter des sauts de page manuels, vous pouvez utiliser ces propriétés:
page-break-before
: auto/toujours/éviter/...page-break-inside
: auto/toujours/éviter/...page-break-after
: auto/toujours/éviter/...Par exemple, un div peut être:
<div style="page-break-before:always;"><!-- content --></div>
ou
<div style="page-break-after:always;"> <!-- content --></div>
Le contrôle des sauts de page lors de l'impression dans Webkit n'est parfois pas facile, en particulier avec de longues tables html.
Vous devriez voir ceci problème avec différents conseils.
Essayez d'utiliser display:inline-block
dans l'élément que vous ne souhaitez pas interrompre car le saut de page. Le raisonnement derrière est que le webkit essaie déjà de préserver les images de la rupture. Et les images sont des blocs en ligne.
Très tard, mais j'ai eu des problèmes avec "break-inside: éviter" en utilisant JsReport qui ont été corrigés en changeant le type d'affichage de l'élément en inline-block. Plus d'informations ici: https://github.com/ariya/phantomjs/issues/10638
La pagination fonctionne bien avec:
var page = webPage.create();
page.paperSize = {
format: 'A4',
orientation: 'portrait',
margin: '1cm'
}
Consultez la documentation ici http://phantomjs.org/api/webpage/property/paper-size.html