28

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

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

如果我的文档很短,它只制作一页,如果它更大,它会创建第二个空白页,我的内容在第一页,这变得很长。

任何的想法 ?(我正在为 nodeJS 使用 phantomJS-node 模块)

4

4 回答 4

51

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

  • page-break-before:自动/总是/避免/...
  • page-break-inside:自动/总是/避免/...
  • page-break-after:自动/总是/避免/...

例如,一个 div 可以是:

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

或者

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

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

于 2013-06-11T12:33:44.847 回答
4

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

于 2015-07-01T13:36:48.747 回答
4

你应该看到这个问题有不同的提示。

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

于 2016-03-11T15:15:00.123 回答
1

分页适用于:

 var page = webPage.create();

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

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

于 2018-06-11T09:39:30.437 回答