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

标签 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 一切正常。但我也需要分页符-before。如果我插入一个 page-break-before div,它也会破坏页面,但在新页面上有一 block 空白并且 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 中不再有无意义的空白,也不再有一个文本在另一个文本之上,但是它使得不再有分页符


解决方案:

主要问题是,我从其他工具接收到的用于将其放入 wkhtmltopdf 工具的 html 非常复杂,包含许多 div block 和无用的 html 标签,以至于 wkhtmltopdf 工具出现了这个错误。使用经过清理的 html,它可以完美运行。

最佳答案

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

<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 会中断。就像猫一样 - “如果它适合 - 它会坐下”:)

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

关于html - wkhtmltopdf page-break-before div 在新页面中有空格,div 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28047892/

相关文章:

c# - 无法使用 MemoryStream 合并 2 个 PDF

javascript - 谷歌地图不支持API

javascript - 如何向列表中的每个元素逐一添加类

Vim 自动缩进空格

javascript - 使用 JavaScript 删除标签之间的所有空格

linux - Rails3 中的 wkhtmltopdf 在 Mac 上可以运行,但在 Ubuntu 上失败

html - WKHtmltoPDF 双页脚

android - 如何创建超链接以在移动设备上调用电话号码?

javascript - 如何使用ios 的phonegap 解压缩/提取文件?

java - 将空格转换为下划线