我正在尝试使用WKHTMLTOPDF实现报表引擎,但无法将内容与纸张边缘对齐。

考虑将纸张尺寸设置为A4并将打印边距设置为零,如下所示:

wkhtmltopdf-amd64 --load-error-handling ignore --orientation Portrait --page-size A4 --margin-top 0 --margin-bottom 0 --margin-left 0 --margin-right 0

现在,我想发表一份报告,其中的内容不会因纸张边缘而中断。例如我的内容由表格和单元格组成,我不希望将单元格分为两页。 CSS2专门为此提供了一项功能page-break-inside:avoid,但是我知道没有支持它的浏览器,而且webkit也不异常(exception)。

然后我想,如果我知道WKHTMLTOPDF中的A4纸实际上有多长时间,那么我可以编写一些Javascript以通过调整行的大小来对齐行。由于没有办法告诉CSS内的实际毫米数完全填满A4纸,因此我别无选择,只能使用错误和尝试。最后,我设法调整了CSS高度(height: 290.245261mm),以便页面内容垂直填充A4纸。此高度是为具有绝对定位的DIV设置的,顶部和左侧设置为零。所有有效的填充和边距也都设置为零(HTML,BODY等)。

一切都很好,直到我意识到页面数增加时情况的严重性。因此,我在HTML中放入了十个全页DIV,令我惊讶的是它打印了11页。在第11页的开始处有一小行像素。

因此,这是我的问题:在使用WKHTMLTOPDF转换HTML时,有没有人想出一种将HTML内容与纸张边缘对齐的解决方案?我正在使用WKHTMLTOPDF 0.11.0 rc1。

最佳答案

(尽管这是一个古老的问题,但人们仍然这么问...)

最好的解决方法是更新wkhtmltopdf工具。

您描述的错误已在version 0.12中修复,并且表行不再分为两页(如链接的更改日志中所述:

  • [qt] 防止表行中的分页符

  • 我将同一个库用于多个元素,即使我当时必须自定义编译它,这也节省了我的时间。

    关于javascript - 制作与WKHTMLTOPDF一起使用的与纸张对齐的html,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20453298/

    10-13 00:45