node.js - nodejs - Cómo manejar la paginación de PDF en PhantomJS
phantomjs pdf (4)
Estoy usando PhantomJS para crear archivos PDF desde html.
Funciona bien, pero no puedo encontrar la manera de trabajar con la paginación; Quiero crear una página para cada div en mi documento, pero no puedo encontrar nada en el documento. sobre la paginación.
Si mi documento es corto, solo tiene una página, y si es más grande, crea una segunda página vacía y mi contenido está en la primera página, que es muy largo.
Alguna idea ? (Estoy usando el módulo phantomJS-node para nodeJS)
Deberías ver este https://github.com/ariya/phantomjs/issues/10638 con diferentes consejos.
Intente utilizar display:inline-block
en el elemento que no quiere que se rompa debido al salto de página. El razonamiento detrás es que el webkit ya intenta preservar las imágenes de las roturas. Y las imágenes son bloques en línea.
La paginación funciona bien con:
var page = webPage.create();
page.paperSize = {
format: ''A4'',
orientation: ''portrait'',
margin: ''1cm''
}
Consulte la documentación aquí http://phantomjs.org/api/webpage/property/paper-size.html
Muy tarde, pero tuve problemas con "break-inside: avoid" utilizando JsReport que se corrigieron cambiando el tipo de visualización del elemento a inline-block. Más información aquí: https://github.com/ariya/phantomjs/issues/10638
PhantomJS se encarga de la implementación de css de webkit. Para implementar saltos de página manuales, puede usar estas propiedades:
-
page-break-before
: auto / always / avoid / ... -
page-break-inside
: auto / siempre / evitar / ... -
page-break-after
: auto / always / avoid / ...
Por ejemplo, un div puede ser:
<div style="page-break-before:always;"><!-- content --></div>
o
<div style="page-break-after:always;"> <!-- content --></div>
Controlar los saltos de página al imprimir en Webkit a veces no es fácil, en particular con tablas largas html.