Search code examples
angular7ionic4jspdfhtml2canvas

Html2Canvas doesn't works... the pdf shows empty


When I run the app and I click on the button, the PDF looks empty.

I was looking for by console.log() and the canvas doesn't show anything.

import { Component, OnInit } from '@angular/core';
import * as jspdf from 'jspdf'; 

import html2canvas from 'html2canvas';

  generatePDF(){

    html2canvas(document.getElementById('albaran')).then(canvas => {  
      // Few necessary setting options  
      var imgWidth = 208;   
      var pageHeight = 295;    
      var imgHeight = canvas.height * imgWidth / canvas.width;  
      var heightLeft = imgHeight;  

      const contentDataURL = canvas.toDataURL('image/png')  
      let pdf = new jspdf('p', 'mm', 'a4'); // A4 size page of PDF  
      var position = 0;  
      pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight)  
      pdf.save('MYPdf.pdf'); // Generated PDF   
    });  
  }

}

Solution

  • Finally, I have found a solution. I use jsPDF and dom-to-image libraries. https://www.npmjs.com/package/jspdf

    https://www.npmjs.com/package/dom-to-image

    import * as jsPDF from 'jspdf';
    import domtoimage from 'dom-to-image';
    
    exportPdf(){
        const div = document.getElementById('pdf');
        const options = { background: 'white', height: 845, width: 595 };
        domtoimage.toPng(div, options).then((dataUrl) => {
            //Initialize JSPDF
            const doc = new jsPDF('p', 'mm', 'a4');
            //Add image Url to PDF
            doc.addImage(dataUrl, 'PNG', 0, 0, 210, 340);
            doc.save('pdfDocument.pdf');
        }
    }