jsPDF HTML Example with html2canvas for Multiple Pages PDF

The jsPDF with html2canvas library is one of the best choices, giving the best output PDF from HTML.

You need to understand the dependent libraries to get better out of it. Effort-wise, it is easier to create a PDF from HTML.

Before getting into the theory part, I want to give the solution directly to save you time :-). Then, I will highlight the area to strengthen the basics of jsPDF and html2canvas.

Quick solution

window.jsPDF = window.jspdf.jsPDF; function generatePdf() < let jsPdf = new jsPDF('p', 'pt', 'letter'); var htmlElement = document.getElementById('doc-target'); // you need to load html2canvas (and dompurify if you pass a string to html) const opt = < callback: function (jsPdf) < jsPdf.save("Test.pdf"); // to open the generated PDF in browser window // window.open(jsPdf.output('bloburl')); >, margin: [72, 72, 72, 72], autoPaging: 'text', html2canvas: < allowTaint: true, dpi: 300, letterRendering: true, logging: false, scale: .8 >>; jsPdf.html(htmlElement, opt); >

jspdf html example

Steps to create the HTML example of generating a Multi-page PDF

This JavaScript imports the jsPDF and loads the html2canvas libraries. This example approaches the implementation with the following three steps.

  1. It gets the HTML content.
  2. It sets the html2canvas and jsPDF options of PDF display properties.
  3. It calls the jsPDF .html() function and invokes a callback to output the PDF.

HTML code for Multi-page PDF content

This example HTML has the content target styled with internal CSS properties. These styles are for setting fonts and spacing while converting this HTML to PDF.

The #doc-target is the PDF’s content target in this HTML. But, the #outer is the outer container to take care of the UI perception.

That means the PDF will reflect the styles from the #doc-target level of the HTML DOM. The #outer is for synchronizing the UI preview and the PDF result for the sake of the perception.

If you want to show a preview before PDF generation, there is an example before generating an invoice PDF.

These styles are

  jsPDF HTML Example with html2canvas for Multiple Pages PDF #doc-target < font-family: sans-serif; -webkit-font-smoothing: antialiased; color: #000; line-height: 1.6em; margin: 0 auto; >#outer  

jsPDF HTML Example

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam tempor purus a congue ullamcorper. Nunc vulputate eros nunc, sed molestie orci interdum ut. Mauris non tristique neque, ut tincidunt lectus. Nunc sollicitudin eros sapien. Donec metus ex, vestibulum vel pharetra in, convallis id diam. Sed eu tellus pulvinar, fringilla est ut, feugiat nibh. Etiam eget commodo risus. Proin faucibus elementum enim, ut hendrerit nisi convallis at. Pellentesque volutpat, purus faucibus varius tincidunt, nulla erat convallis lacus, eu accumsan felis mauris eget velit. Vestibulum a neque purus. Vestibulum in ultricies justo. Fusce dapibus, sapien a mollis luctus, risus dolor hendrerit ex, in semper justo enim sed ante. Morbi ut urna et velit finibus vehicula. Vivamus elementum egestas ultrices. Proin rutrum orci odio, sit amet hendrerit diam vulputate a.

JavaScript jsPDF options for getting a multi-page PDF

In this example code, the JavaScript jsPDF code sets some options or properties. These are required for the following purposes

The list below briefly describes each option and its properties used in this example.