我从生成的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,它可以完美运行。
答案 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示例。