2017-03-21 7 views
0

私はJSPDFで新しく、Lable view of dataのようなPDFページを作成しました。問題は、このページでデータがいっぱいになると新しいページが生成されないという問題です。私はgithubと他の解決策がスタックオーバーフローしている。解決策は得られません。 [デモリンクはこちらJSPDF] [3]データがいっぱいになったときにJSPDFが新しいページに移動

[3]:>https://jsfiddle.net/jodfkz59/7/

var data = [{ 
 
     "Name": "Ronan", 
 
     "Email": "[email protected]", 
 
     "Company": "Malesuada Malesuada Ltd" 
 
    }, { 
 
     "Name": "Calvin", 
 
     "Email": "[email protected]", 
 
     "Company": "Donec Egestas Foundation" 
 
    }, { 
 
     "Name": "Kane", 
 
     "Email": "[email protected]", 
 
     "Company": "Arcu Institute" 
 
    }, { 
 
     "Name": "Kasper", 
 
     "Email": "[email protected]", 
 
     "Company": "Tempor LLP" 
 
    }]; 
 
    
 
    
 
    var doc = new jsPDF('p', 'pt', 'a4'); 
 
    //Dimension of A4 in pts: 595 × 842 
 
    
 
    var pageWidth = 595; 
 
    var pageHeight = 842; 
 
    var y=500; 
 
    var pageMargin = 10; 
 
    
 
    pageWidth -= pageMargin * 2; 
 
    pageHeight -= pageMargin * 2; 
 
    
 
    var cellMargin = 5; 
 
    var cellWidth = 250; 
 
    var cellHeight = 60; 
 
    
 
    var startX = pageMargin; 
 
    var startY = pageMargin; 
 
    
 
    function createCard(item) { 
 
    
 
     // doc.getTextDimensions(item.Name); turncate or split string if you needed 
 
     
 
    if (y >= pageHeight) 
 
{ 
 
    doc.addPage(); 
 
    y = 0 // Restart height position 
 
} 
 
    
 
     doc.text(item.Name, startX, startY); 
 
     doc.text(item.Email, startX, startY + 20); 
 
     doc.text(item.Company, startX, startY + 40); 
 
    
 
     var nextPosX = startX + cellWidth + cellMargin; 
 
    
 
     if (nextPosX > pageWidth) { 
 
     startX = pageMargin; 
 
     startY += cellHeight; 
 
     } else { 
 
     startX = nextPosX; 
 
     } 
 
    
 
    } 
 
    
 
    
 
    for (var i = 0; i < data.length; i++) { 
 
     createCard(data[i]); 
 
    }

+0

あなたは 'y'と' startY'を混同しないのですか?あなたのコードでは、yは常に500 – Fefux

+0

@Fefuxです。私はdiff値で試していました。あなたが私を案内してくれますか? –

+0

ここをクリックしてください:https://jsfiddle.net/jodfkz59/7。私はちょうどあなたの条件をページを追加するために変更する – Fefux

答えて

2

問題は機能createCardた状態です。 yオフセットの実際の現在の値でテストを変更する必要があります。

このフィドルを参照してください:https://jsfiddle.net/jodfkz59/8/

var data = [{ 
     "Name": "Ronan", 
     "Email": "[email protected]", 
     "Company": "Malesuada Malesuada Ltd" 
    }, { 
     "Name": "Calvin", 
     "Email": "[email protected]", 
     "Company": "Donec Egestas Foundation" 
    }, { 
     "Name": "Kane", 
     "Email": "[email protected]", 
     "Company": "Arcu Institute" 
    }, { 
     "Name": "Kasper", 
     "Email": "[email protected]", 
     "Company": "Tempor LLP" 
    }]; 


    var doc = new jsPDF('p', 'pt', 'a4'); 
    //Dimension of A4 in pts: 595 × 842 

    var pageWidth = 595; 
    var pageHeight = 842; 
    var y=500; 
    var pageMargin = 10; 

    pageWidth -= pageMargin * 2; 
    pageHeight -= pageMargin * 2; 

    var cellMargin = 5; 
    var cellWidth = 250; 
    var cellHeight = 60; 

    var startX = pageMargin; 
    var startY = pageMargin; 

    function createCard(item) { 

     // doc.getTextDimensions(item.Name); turncate or split string if you needed 

    if (startY >= pageHeight) 
{ 
    doc.addPage(); 
    startY = pageMargin // Restart height position 
} 

     doc.text(item.Name, startX, startY); 
     doc.text(item.Email, startX, startY + 20); 
     doc.text(item.Company, startX, startY + 40); 

     var nextPosX = startX + cellWidth + cellMargin; 

     if (nextPosX > pageWidth) { 
     startX = pageMargin; 
     startY += cellHeight; 
     } else { 
     startX = nextPosX; 
     } 

    } 


    for (var i = 0; i < data.length; i++) { 
     createCard(data[i]); 
    } 
+0

ありがとう@Fefuxの兄弟。 –

関連する問題