convert HTML ( having Javascript ) to PDF using JavaScript

I want to convert HTML (containing JavaScript ) to a PDF. How can I do that?

I just want to show what is being shown in web page. I am displaying a gantt chart that is generated by a JavaScript library.

Now I want to save that HTML web page as a PDF, how to do that?



We are also looking for some way to convert html files with complex javascript to pdf. The javasript in our files contains document.write and DOM manipulation.

We have tried using a combination of HtmlUnit to parse the files and Flying Saucer to render to pdf but the results are not satisfactory enough. It works, but in our case the pdf is not close enough to what the user wants.

If you want to try this out, here is a code snippet to convert a local html file to pdf.

URL url = new File("test.html").toURI().toURL();
WebClient webClient = new WebClient(); 
HtmlPage page = webClient.getPage(url);

OutputStream os = null;
   os = new FileOutputStream("test.pdf");

   ITextRenderer renderer = new ITextRenderer();
} finally{
   if(os != null) os.close();

I'm surprised no one mentioned the possibility to use an API to do the work.

Granted, if you want to stay secure, converting HTML to PDF directly from within the browser using javascript is not a good idea.

But here's what you can do:

When your user hit the "Print" (for example) button, you:

  1. Send a request to your server at a specific endpoint with details about what to convert (URL of the page for instance).
  2. This endpoint will then send the data to convert to an API, and will receive the PDF in response
  3. which it will return to your user.

For a user point of view, they will receive a PDF by clicking on a button.

There are many available API that does the job, some better than others (that's not why I'm here) and a Google search will give you a lot of answers.

Depending on what is written your backend, you might be interested in PDFShift (Truth: I work there).

They offer ready to work packages for PHP, Python and Node.js. All you have to do is install the package, create an account, indicate your API key and you are all set!

The advantage of the API is that they work well in all languages. All you have to do is a request (generally POST) containing the data you want to be converted and get a PDF back. And depending on your usage, it's generally free, except if you are a heavy user.


You can use iText for Java to convert to PDF.

Using itext to convert HTML to PDF

I have used iText a lot and it's very easy and you learn it quick.


Use a browser widget (like the one from SWT) to render the chart as an image, and then use iText to create PDF from that.


I recommend using wkhtmltopdf:


Using the browser's Print... menu item, you can utilize a PDF Printer Driver, like PDFCreator. This way any JavaScript included in the page is processed by the browser when the page is rendered.

PDFCreator is a free tool to create PDF files from nearly any Windows application.

  • Create PDFs from any program that is able to print

With Docmosis or JODReports you could feed your HTML and Javascript to the document render process which could produce PDF or doc or other formats. The conversion underneath is performed by OpenOffice so results will be dependent on the OpenOffice import filters. You can try manually by saving your web page to a file, then loading with OpenOffice - if that looks good enough, then these tools will be able to give you the same result as a PDF.


Try out TableExport, a jQuery plugin.


PhantomJS has the potential to achieve this with it's capturing functionality which also supports PDF.

In case you want something that is interactable over the command line; I've attempted to build an app for that called Nota (still in it's infancy). It allows for JavaScript to render/manipulate and then capture the page as a PDF.


Check this out

Basically you need to use html2canvas and jspdf to make it work. First you will convert your dom to image and then you will use jspdf to create pdf with the images.

EDIT: A short note on how it work. We will use two libraries to make this job done. and First we will create a dom image by using html2canvas them we will use jspdf addImage method to add that image to pdf. It seems simple but there are few bugs in jsPdf and html2cavas so you may need to change dom style temporarily. Hope this helps.


Copy and paste this in your site to provide a link which will convert the page to a PDF page.

<a href="javascript:void(''+window.location))">Convert To PDF</a>

You can do it using a jquery plugin,

Use this link.

Use this code to link the button...

$(document).ready(function() {
    $("#button_id").click(function() {
        return false;

This link may be also helpful: jQuery Print HTML Pdf Page Options Link


Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.