Comment gérer la pagination PDF dans PhantomJS

J'utilise PhantomJS pour créer des fichiers 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 dans mon document, mais je ne trouve rien dans le document. A propos de 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)

23
demandé sur Rayjax 2013-06-11 16:13:34

4 réponses

PhantomJS s'occupe de l'implémentation CSS de 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>

Contrôler les sauts de page lors de L'impression dans Webkit n'est parfois pas facile, en particulier avec de longues tables html.

39
répondu Cybermaxs 2013-06-11 12:33:44

Très tard, mais j'ai eu des problèmes avec "break-inside: avoid" en utilisant JsReport qui ont été corrigés en changeant le type d'affichage de l'élément en inline-block. Plus d'info ici: https://github.com/ariya/phantomjs/issues/10638

4
répondu R. Salisbury 2015-07-01 13:36:48

, Vous devriez voir ce question avec différents conseils.

Essayez d'utiliser display:inline-block dans l'élément que vous ne voulez pas des pauses parce que le saut de page. Le raisonnement derrière est que webkit essaie déjà de préserver les images de la rupture. Et les images sont des blocs en ligne.

3
répondu gusgard 2016-03-11 15:15:00

La Pagination fonctionne bien avec:

 var page = webPage.create();

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

Voir la documentation ici http://phantomjs.org/api/webpage/property/paper-size.html

1
répondu sbalcerowski 2018-06-11 09:39:30