我正在使用PhantomJS从html创建pdf。
它工作得很好,但我不知道如何与分页工作;我想为文档中的每个div创建一个页面,但在文档中找不到任何内容。关于分页。
如果我的文档很短,它只创建一个页面,如果它更大,它创建第二个空页面,我的内容在第一页变得很长。
你知道吗?(我使用的是phantomJS-node模块的nodeJS)
PhantomJS负责webkit的css实现。要实现手动分页符,可以使用以下属性:
-
page-break-before
: auto/always/avoid/… -
page-break-inside
: auto/always/avoid/… -
page-break-after
: auto/always/avoid/…
例如:
<div style="page-break-before:always;"><!-- content --></div>
或
<div style="page-break-after:always;"> <!-- content --></div>
在Webkit中打印时控制分页符有时并不容易,特别是对于长html表。
非常晚,但是我在使用JsReport时遇到了"break-inside:avoid"的问题,通过将元素的显示类型更改为inline-block来修复。更多信息请点击这里:https://github.com/ariya/phantomjs/issues/10638
您应该在不同的提示中看到这个问题。
尝试在您不想中断的元素中使用display:inline-block
,因为分页符。这背后的原因是webkit已经在尝试保护图像不被破坏。
使用:
var page = webPage.create();
page.paperSize = {
format: 'A4',
orientation: 'portrait',
margin: '1cm'
}
查看这里的文档http://phantomjs.org/api/webpage/property/paper-size.html