4

在网络应用程序中,我使用 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'

但我试过了,它没有用。

PS:页眉顶部的边距是因为我会添加一张图片。

4

2 回答 2

4

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

于 2019-08-14T08:31:30.563 回答
3

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

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

图片

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

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

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

总而言之,将第 470 行更改为如下内容:

if (row.maxLineCount <= 50) {

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

前: 在此处输入图像描述

后: 在此处输入图像描述

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

于 2017-09-06T19:08:13.787 回答