簡體   English   中英

jspdf將具有多個頁面的html轉換為pdf

[英]jspdf convert html to pdf with multiple pages

我正在使用jsPdf和html2pdf將html轉換為pdf文件。

我可以很好地轉換html並下載文件,但是如果html太大而無法放在單個頁面上,則它不會創建其他頁面,我該怎么做?

代碼是:

 var pdf = new jsPDF('l', 'pt', 'a4');
 pdf.canvas.height = 72 * 11;
 pdf.canvas.width = 72 * 8.5;
 html2pdf(document.getElementById(id), pdf, function(pdf){
     pdf.save('file.pdf');
 });

另一個解決方案。

var pdf = new jsPDF('p', 'pt', 'a4');
var options = {
     pagesplit: true
};

pdf.addHTML($(".pdf-wrapper"), options, function()
{
pdf.save("test.pdf");
});

來源: 帶有HTML渲染器的jsPDF多頁PDF

另一個答案: 具有HTML渲染器的jsPDF多頁PDF

如果以上答案不起作用,我已經這樣做了:

下載並按順序包括:

  1. jQuery的
  2. html2canvas
  3. jspdf

谷歌他們很容易找到。 然后將可打印代碼包含在div包裝器報告中。 並使用打印按鈕調用該功能。 例如(在jsfiddle中,代碼將無法工作,因為它不允許來自非CDN站點的外部代碼,但可以在服務器上運行)

$(document).ready(function() {
   var form = $('#report');
   var cache_width = form.width();
   var a4 = [595.28, 841.89];


   $('#create_pdf').on('click', function() {
     $('body').scrollTop(0);
     createPDF();
   });

   //create pdf
   function createPDF() {
     getCanvas().then(function(canvas) {
       var imgWidth = 200;
       var pageHeight = 290;
       var imgHeight = canvas.height * imgWidth / canvas.width;
       var heightLeft = imgHeight;
       var doc = new jsPDF('p', 'mm');
       var position = 0;

       var img = canvas.toDataURL("image/jpeg");




 doc.addImage(img, 'JPEG', 0, position, imgWidth, imgHeight);
   heightLeft -= pageHeight;



   while (heightLeft >= 0) {
     position = heightLeft - imgHeight;
     doc.addPage();
     doc.addImage(img, 'JPEG', 0, position, imgWidth, imgHeight);
     heightLeft -= pageHeight;
   }


   doc.save('Report.pdf');
   form.width(cache_width);
  });
 }


 // create canvas object
   function getCanvas() {
     form.width((a4[0] * 1.33333) - 80).css('max-width', 'none');
     return html2canvas(form, {
       imageTimeout: 2000,
       removeContainer: false
     });
   }

});

https://jsfiddle.net/vnfts73o/1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM