如何在PhantomJS中处理PDF分页

时间:2013-06-11 12:13:35

标签: node.js pdf pdf-generation phantomjs

我正在使用PhantomJS从html创建PDF。

它工作正常,但我无法找到如何使用分页;我想在文档中为每个div创建一个页面,但是我在文档中找不到任何内容。关于分页。

如果我的文档很短,它只会生成一个页面,如果它更大,它会创建一个第二个空白页面,而我的内容会在第一页面中变得很长。

有什么想法吗? (我正在使用nodeJS的phantomJS节点模块)

4 个答案:

答案 0 :(得分:45)

PhantomJS负责webkit的css实现。要实现手动分页符,您可以使用以下属性:

  • page-break-before:auto / always / avoid /...
  • page-break-inside:auto / always / avoid /...
  • page-break-after:auto / always / avoid /...

例如,div可以是:

 <div style="page-break-before:always;"><!-- content --></div>

<div style="page-break-after:always;"> <!-- content --></div>

在Webkit中打印时控制分页符有时并不容易,特别是对于长html表。

答案 1 :(得分:4)

很晚,但我遇到了使用JsReport的“break-inside:avoid”问题,这些问题是通过将元素的显示类型更改为inline-block来修复的。更多信息: https://github.com/ariya/phantomjs/issues/10638

答案 2 :(得分:3)

您应该看到此issue有不同的提示。

尝试在您不想破解的元素中使用display:inline-block因为分页符。其背后的原因是webkit已经尝试保护图像不被破坏。图像是内联块。

答案 3 :(得分:1)

分页工作正常:

 var page = webPage.create();

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

在此处查看文档http://phantomjs.org/api/webpage/property/paper-size.html