javascript - 使纸张对齐的 html 与 WKHTMLTOPDF 一起使用

标签 javascript html css wkhtmltopdf

我正在尝试使用 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

现在我想做一个内容不被纸边 chop 的报告。例如我的内容由表格和单元格组成,我不希望将一个单元格分成两页。 CSS2 有一个专门针对这个的特性,page-break-inside:avoid,但我知道没有浏览器支持它,webkit 也不异常(exception)。

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

一切都很好,直到我意识到页面数量增加时情况的严重性。所以我在我的 HTML 中放入了 10 个整页 DIV,令我惊讶的是它打印了 11 页。在第 11 页的开头有一小排像素。

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

最佳答案

(虽然这是个老问题,但还是有人这么问...)

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

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

  • [qt]防止表格行分页

我在多个元素中使用同一个库,这救了我,即使我当时不得不自定义编译它。

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

相关文章:

javascript - 自定义 dnn 皮肤无法检测到底部滚动,但它的工作原理是相反的 (7.1.1)

safari - 位置 :absolute div on Safari 5 for Windows 上的不可见滚动条

css - 为什么输入字段比它的父 div 宽?

javascript - 在 JavaScript 中连续播放两个文件

javascript - JSON 文件仅在函数中加载,但一旦完成,加载的数据就会在 React 中消失

javascript - dojox 图表突出显示效果不起作用

html - Flexbox Hero 不会居中

javascript - Gremlin 暂停响应写入,因为 RequestMessage 超出了 writeBufferHighWaterMark

jquery - 滑动切换和改变字形

html - 无法获得 100% 的高度