2017-10-11 116 views
0

使用pdfmake.js在javascript中生成pdf。但是如果內容太大,它會生成一個空白文檔。使用html2canvas創建畫布並使用此創建PDF。如何解決這個問題?Angularjs - html to pdf using pdfmake.js

self.exportAsCanvas = function (contentObject, fileName, heading) { 
    var useWidth = $(contentObject)[0].offsetWidth; 
    var useHeight = $(contentObject)[0].offsetHeight; 
    //var graphContent = angular.element(contentObject).find('.graph-content'); 

    html2canvas(contentObject, { 
     onrendered: function (canvas) { 
      document.body.appendChild(canvas); 
      var data = canvas.toDataURL(); 

      var docDefinition = { 
       header: { text: heading, style: 'header' }, 
       footer: { 
        columns: [ 
         { text: 'Copyright © 2015 H&R Block. All Rights Reserved.', alignment: 'center',fontSize: 11 } 
        ] 
       },      
       pageOrientation: self.pageOrientation, 
       content: [{ 
        image: data, 
        fit: [1000, 1100] 
        //width: 500, 
        //height:1100 
       }], 
       styles: { 
        header: { 
         fontSize: 14, 
         bold: true, 
         alignment: 'center', 
         margin: [0, 10, 0, 10] 
        } 
       } 
      }; 

      pdfMake.createPdf(docDefinition).download(fileName + ".pdf"); 
     }, 
     width: useWidth, 
     height: useHeight 
    }); 
}; 
+0

你能告訴你的一些代碼? – aqwright31

+0

@ aqwright31更新了代碼:) – Aswathy

回答

-1

你應該嘗試實現分頁:

var docDefinition = { 
      header: { text: heading, style: 'header' }, 
      footer: { 
       columns: [ 
        { text: 'Copyright © 2015 H&R Block. All Rights Reserved.', alignment: 'center',fontSize: 11 } 
       ] 
      },      
      pageOrientation: self.pageOrientation, 
      content: [{ 
       image: data, 
       fit: [1000, 1100], 
       pageBreak: 'after', //PAGE BREAK 
       //width: 500, 
       //height:1100 
      }], 
      styles: { 
       header: { 
        fontSize: 14, 
        bold: true, 
        alignment: 'center', 
        margin: [0, 10, 0, 10] 
       } 
      } 
     }; 
+0

對不起。這也不起作用。新頁面添加空內容:( – Aswathy