wkhtmltopdf page-break-before div在新页面中有空格,div未显示

时间:2015-01-20 14:33:43

标签: html whitespace wkhtmltopdf page-break

我从生成的html文件生成带有wkhtmltopdf的PDF。 我为 windows 使用最新的wkhtmltopdf版本(0.12.2.0)。

我的其他wkhtmltopdf参数是:

--zoom 1.0
--encoding "UTF-8"
--page-offset -1
--footer-html "C:\tmp\footer.html"
--header-html "C:\tmp\header.html"
--header-spacing 10
--footer-spacing 10 toc
--xsl-style-sheet "C:\tmp\toc.xsl"

footer.html中,header.html,toc.xsl 没有任何关于分页符的定义。 HTML有效。打开的每个标签都按正确的顺序关闭。我已经检查了两次。

如果我在 div之后插入分页符 - ,则一切正常。但我也需要一个分页符 - 之前。如果我在 div之前插入分页符 - ,它也会破坏页面,但在新页面上会出现一个空格块,并且不会显示div。

<div style='page-break-before: always; height: 10px; width: 100%; background-color: red;'>
 <span style='color:rgb(0, 0, 0)'>OOO</span>
</div>

是否设置了此样式属性并不重要:“height:10px; width:100%;”

两页应该如下:

+--------------------+
|                  1 |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|                    |
|                    |
|                    |
+--------------------+
-
+--------------------+
|                  2 |
|   OOOOOOOOOOOOOO   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|                    |
|                    |
|                    |
|                    |
+--------------------+

但它们看起来像(div未显示,下一页有大空格):

+--------------------+
|                  1 |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|                    |
|                    |
|                    |
+--------------------+
-
+--------------------+
|                  2 |
|                    |
|                    |
|                    |
|                    |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|   xxxxxxxxxxxxxx   |
|                    |
+--------------------+

x-es是文本的占位符。 O-s是我div的占位符。

我已经从答案1中尝试了这个。wkhtmltopdf page-break-after have whitespace空白已经存在。


更新

在我生成的其他一些PDF中,有一些文本在另一个上面。我不知道为什么wkhtmltopdf有时会做一些空格,有时它会把一个文本放在另一个上但是如果我设置了css属性:

overflow-x: visible !important;

在我的CSS文件中。然后在PDF中没有更多无意义的空白,并且没有一个文本在另一个上面,但是它使不再有分页符


解决方案:

主要的问题是,我从其他工具收到的html将它放在wkhtmltopdf工具中是如此复杂,有很多div块和无用的html标签,wkhtmltopdf-tool犯了这个错误。使用已清理的html,它可以完美运行。

2 个答案:

答案 0 :(得分:2)

在尝试修复类似问题数小时后,我发现解决方案是将立即页面放在正文中

<body>
<div style="page-break-inside: avoid;"> Here goes my page </div>
<div style="page-break-inside: avoid;"> Here goes my another page </div>
....
</body>

另一个警告是,如果内容大于页面 - 生成的PDF中断。就像猫一样 - “如果它适合 - 它坐着”:)

尝试在页面之间移动内容以查看它是否适合。

答案 1 :(得分:0)

尝试定义页面大小(A4,A3,Letter),此库也有自己的边距。所以你应该把它设置为0

http://wkhtmltopdf.org/usage/wkhtmltopdf.txt

请通过jsfiddle提供您的html示例。