在网络应用程序中,我正在使用JSPDF Autotable构建PDF。
问题在于数据将是动态的(我将使用AngularJS 1.x),因此行的高度可以不同。

在某些情况下,“自动表”会中断页面​​的最后一行,继续到下一行。如何防止这种行为,并将Autotable设置为采用最后一行(默认行会中断)并将其带到下一页?

这是我的代码:https://jsfiddle.net/9vgxvfkh/1/

我想我必须更改样式中的一些设置:

styles: {
    cellPadding: 1.5,
    overflow: 'linebreak',
    valign: 'middle',
    halign: 'center',
    lineColor: [0, 0, 0],
    lineWidth: 0.2
},
pageBreak: 'always'

但是我尝试了,但没有成功。

P.S .:页眉顶部的空白处是因为我要添加一张图片。

最佳答案

不幸的是,无法使用某些参数或样式来做到这一点。

我进行了快速调试,找到了您的问题的解决方案,您需要稍微修改源代码。

javascript - JSPDF Autotable中断行-LMLPHP

在源代码中,我发现,对于每一行,都会调用printFullRow方法,然后检查该行是否适合页面(方法canFitOnPage)。

如果行不能容纳在页面上,则检查它包含多少行文本(在我的情况下是10行)。行被分割,因为行数大于1。

您需要将此数字更改为更大的数字。为了避免出现其他错误,您需要确保适合整个页面高度的行数,而不是1。如果您选择的字数过多,则如果文本太长而无法容纳整个页面,则需要选择几行根本不会渲染,因为common_1.addPage()会被无休止地执行。

总结一下,将第470行更改为以下内容:

if (row.maxLineCount <= 50) {

除非页面上不能容纳50行...

之前:
javascript - JSPDF Autotable中断行-LMLPHP

后:
javascript - JSPDF Autotable中断行-LMLPHP

请检查更新的小提琴:
https://jsfiddle.net/9vgxvfkh/2/

10-07 13:36