Exporting images to jsPDF from html

18,826

Solution 1

Check this working code.

You can check code on fiddle also.

<!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.4/jspdf.debug.js"></script>
        <script type="text/javascript">
            var testDivElement = document.getElementById('someHtml');

            function savePDF() {
                var imgData;
                html2canvas($("#someHtml"), {
                    useCORS: true,
                    onrendered: function (canvas) {
                        imgData = canvas.toDataURL(
                           'image/png');
                        var doc = new jsPDF('p', 'pt', 'a4');
                        doc.addImage(imgData, 'PNG', 10, 10);
                        doc.save('sample-file.pdf');
                        window.open(imgData);
                    }
                });
            }


        </script>
        <style>
            .handsomeHtml {
                background: red;
            }

            .crazyFrog {
                background: url('http://e-cdn-images.deezer.com/images/artist/01eb92fc47bb8fb09adea9f763bb1c50/500x500.jpg');
                width: 500px;
                height: 500px;
            }
        </style>
    </head>
    <body>
        <div id="someHtml" class="handsomeHtml">
            Hello, handsome HTML
      <br />
            <img class="crazyFrog"></img>
        </div>
        <br />
        <button id="savePDFbutton" onclick="savePDF()">
            save pdf
        </button>
    </body>
    </html>

Solution 2

It might be that the jsPDF library cannot resolve images "over the wire", have you attempted to include it as a base64-encoded image directly in the CSS instead?

Share:
18,826
kodeaben
Author by

kodeaben

Updated on June 12, 2022

Comments

  • kodeaben
    kodeaben almost 2 years

    I have a webpage on which I wish to print some HTML. To do so, I use html2canvas and jsPDF.

    The issue that I encounter is that it does not print the images shown in the HTML.

    My HTML and css looks as follows (complete code in fiddle):

    .handsomeHtml {
     background: red;
    }
    
    .crazyFrog {
     background: url('http://e-cdn-images.deezer.com/images/artist/01eb92fc47bb8fb09adea9f763bb1c50/500x500.jpg');
     width: 500px;
     height: 500px;
    }
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js">
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.4/jspdf.debug.js">
    </script>
    
    <div id="someHtml" class="handsomeHtml">
      Hello, handsome HTML
     <br>
     <img class="crazyFrog"></img>
    </div>
    
     <button id="savePDFbutton" onclick="savePDF()">
      save pdf
     </button>
    

    Expected result:

    enter image description here

    Actual PDF result

    enter image description here