JSPDF Autotable 断行
JSPDF Autotable breaks rows
在 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.: header 顶部的margin top 是因为那时我会添加一个图像。
遗憾的是,使用某些参数或样式无法做到这一点。
我进行了快速调试并找到了解决您问题的方法,您需要稍微修改源代码。
在源代码中我发现,对于每一行都会调用一个方法 printFullRow
,之后会检查该行是否适合页面(方法 canFitOnPage
)。
如果行放不下页面,则会检查它包含多少行文本(在我的例子中是 10 行)。正在拆分行,因为行数大于 1。
您需要将此数字更改为更大的数字。为了避免进一步的错误,您需要确保有多少行适合整个页面高度,并将这个数字而不是 1。如果您选择一些巨大的数量,以防万一非常长的文本甚至不适合整个页面,它根本不会被渲染,因为 common_1.addPage()
会被无休止地执行。
总而言之,将第 470 行更改为如下内容:
if (row.maxLineCount <= 50) {
除非页面放不下 50 行...
之前:
之后:
请检查更新 fiddle:
https://jsfiddle.net/9vgxvfkh/2/
使用最新版本修复了此特定示例。但是对于其他您不想拆分多行行的情况,您可以使用 rowPageBreak: 'avoid'
.
在 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.: header 顶部的margin top 是因为那时我会添加一个图像。
遗憾的是,使用某些参数或样式无法做到这一点。
我进行了快速调试并找到了解决您问题的方法,您需要稍微修改源代码。
在源代码中我发现,对于每一行都会调用一个方法 printFullRow
,之后会检查该行是否适合页面(方法 canFitOnPage
)。
如果行放不下页面,则会检查它包含多少行文本(在我的例子中是 10 行)。正在拆分行,因为行数大于 1。
您需要将此数字更改为更大的数字。为了避免进一步的错误,您需要确保有多少行适合整个页面高度,并将这个数字而不是 1。如果您选择一些巨大的数量,以防万一非常长的文本甚至不适合整个页面,它根本不会被渲染,因为 common_1.addPage()
会被无休止地执行。
总而言之,将第 470 行更改为如下内容:
if (row.maxLineCount <= 50) {
除非页面放不下 50 行...
之前:
之后:
请检查更新 fiddle: https://jsfiddle.net/9vgxvfkh/2/
使用最新版本修复了此特定示例。但是对于其他您不想拆分多行行的情况,您可以使用 rowPageBreak: 'avoid'
.