2017-09-03 114 views
3

在Web應用程序中,我使用JSPDF Autotable構建PDF。 問題是數據將是動態的(我將使用AngularJS 1.x),因此行可以有不同的高度。JSPDF Autotable中斷行

在某些情況下,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 .:表頭上的邊緣是因爲那麼我會添加一個圖像。

+0

請檢查更新的答案。該解決方案可以接受嗎? – luke

+0

是的,謝謝! – panagulis72

回答

1

不幸的是,沒有辦法使用一些參數或樣式來做到這一點。

我做了一個快速調試,發現問題的解決方案,你需要稍微修改源代碼。

image

在源代碼中,我發現,對於每一行的方法printFullRow被調用時,後有如果行可以適應頁(方法canFitOnPage)在支票上。

如果行不能放在頁面上,檢查它包含多少行文本(在我的情況下是10)。行正在分割,因爲行數大於1.

您需要將此數字更改爲更大。爲了避免出現進一步的錯誤,您需要確保有多少行可以適合整個頁面高度,並將此數字設置爲1。如果您選擇的數量巨大,如果文本很長,甚至不適合整個頁面,根本不會被渲染,因爲common_1.addPage()會被無休止地執行。

綜上所述,變線470是這樣的:

if (row.maxLineCount <= 50) { 

除非50行無法適應頁...

前: enter image description here

後: enter image description here

請檢查更新的提琴: https://jsfiddle.net/9vgxvfkh/2/

相關問題