2017-09-03 3 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 .:ヘッダーの余白の上端は、画像を追加するためです。

+0

更新された回答を確認してください。その解決策はあなたに受け入れられますか? – luke

+0

はい、ありがとうございます! – panagulis72

答えて

1

残念ながら、いくつかのパラメータやスタイルを使用して行う方法はありません。

私は簡単なデバッグを行い、問題の解決策を見つけました。ソースコードを少し修正する必要があります。ソースコードで

image

I行がページ(方法canFitOnPage)に収まることができるかどうかのチェックがあること後行ごと方法printFullRowが、呼び出されていることを見出しました。

行がページに収まらない場合、その行にいくつの行が含まれているかチェックします(私の場合は10です)。行数が1より大きいため、行が分割されています。

この数値を大きい値に変更する必要があります。さらなるバグを避けるために、ページの高さに合わせる行の数を確保し、1の代わりにこの数を設定する必要があります。膨大な量を選択すると、ページ全体に収まらない非常に長いテキストの場合は、 common_1.addPage()は無限に実行されるため、レンダリングされません。前の50行がページに収まらない場合を除き

if (row.maxLineCount <= 50) { 

...

::、このような何かに変更ライン470をまとめると

enter image description here

後: enter image description here

更新されたフィドルをご確認ください: https://jsfiddle.net/9vgxvfkh/2/

関連する問題