JSPDF Autotable打破行

时间:2017-09-03 09:49:40

标签: javascript jquery pdf jspdf jspdf-autotable

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

在某些情况下,Autotable会中断页面​​的最后一行,继续下一行。如何防止此行为,并设置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。:标题上的边距顶部是因为我将添加图像。

2 个答案:

答案 0 :(得分:2)

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

我做了一个快速调试并找到了解决问题的方法,你需要稍微修改源代码。

image

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

如果行不能适合页面,则检查它包含多少行文本(在我的例子中为10)。行被拆分,因为行数大于1。

您需要将此数字更改为更大的数字。为了避免进一步的错误,你需要确保多少行适合整个页面高度并将这个数字放在1而不是1.如果你选择了一些巨大的数量,如果真的很长的文本甚至不适合整个页面,它根本不会渲染,因为common_1.addPage()将无休止地执行。

总而言之,将第470行改为:

if (row.maxLineCount <= 50) {

除非50行不适合页面......

在: enter image description here

在: enter image description here

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

答案 1 :(得分:1)

使用最新版本,可以修复此特定示例。但是对于其他不希望分割多行的情况,可以使用rowPageBreak: 'avoid'