Rajeev
Rajeev

Reputation: 46909

converting html to pdf

I am trying to convert html to pdf from linux ,also i have to use this in web APP please let me know what tools are available for this.Please let me know any other tools for this

So far i have tried

    html2ps htmlfilename > a.ps
    ps2pdf a.ps > a.pdf

But the above doesnt convert images and is ignoring css .My Development environment is linux(RHEL5)

Also i have tried http://www.webupd8.org/2009/11/convert-html-to-pdf-linux.html i get this error

  [root@localhost bin]# ./wkhtmltopdf www.example.com a.pdf
  ./wkhtmltopdf: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory

Upvotes: 4

Views: 1566

Answers (3)

SukhRaj
SukhRaj

Reputation: 1

Two ways that are easy to implement and suitable to convert HTML+CSS to pdf are.

1) Using "Jspdf javascript" plugin with "html2canvas plugin" (Web App).

  • Insert stable version of jspdf plugin.

    var script = document.createElement('script'); script.type = 'text/javascript'; script.src ='https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.min.js'; document.head.appendChild(script);

  • Insert html2canvas plugin

    var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js'; document.head.appendChild(script);

  • Insert the following script

    var html2obj = html2canvas($('your div class here')); var queue = html2obj.parse(); var canvas = html2obj.render(queue);
    var img = canvas.toDataURL("image/jpg"); console.log(img);
    var doc=new jsPDF("p", "mm", "a4"); var width = doc.internal.pageSize.width;
    var height = doc.internal.pageSize.height; doc.addImage(canvas, 'JPEG', 15, 35, 180, 240,'SLOW'); doc.save("save.pdf");

  • Special Case for IE 11

    document.getElementById("your div here").style.backgroundColor = "#FFFFFF";

2) Using wkhtmltopdf

  • Install wkhtmltopdf from here

  • we can directly use wkhtmltopdf from terminal/commandLine , However in case of java language we have a wrapper which we can use.

  • Code Example using wkhtmltopdf wrapper

    import com.github.jhonnymertz.wkhtmltopdf.wrapper.Pdf; import com.github.jhonnymertz.wkhtmltopdf.wrapper.page.PageType; import com.github.jhonnymertz.wkhtmltopdf.wrapper.params.Param; public class PofPortlet extends MVCPortlet {
    @Override public void render(RenderRequest request , RenderResponse response) throws PortletException , IOException
    { super.render(request, response); Pdf pdf = new Pdf();
    pdf.addPage("http://www.google.com", PageType.url); // Add a Table of contents pdf.addToc(); // The "wkhtmltopdf" shell command accepts different types of options such as global, page, headers and footers, and toc. Please see "wkhtmltopdf -H" for a full explanation. // All options are passed as array, for example: // Save the PDF try { pdf.saveAs("E:\\output.pdf"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

3) Other tools include phantom.js , itextpdf , grabz.it

Upvotes: 0

Piskvor left the building
Piskvor left the building

Reputation: 92752

You are on the right path: wkhtmltopdf is the easiest way to do this. Note that the code in the repositories might be outdated (not sure how up-to date this package is); you may need to compile it from source, or get the statically-linked version (which is huge, but has the QT library and other dependencies already included).

Also, in your case, you may just be missing a library - installing libqt4-webkit-dev might do the trick here.

Upvotes: 5

eykanal
eykanal

Reputation: 27017

Probably the easiest way would be to launch any modern browser, go to the site, and then use the browser's "print" capability to print to a pdf (assuming your system has a pdf printer set up). I don't know if that's an option in your case, though, and this sort of thing won't work from within a web app. Still, you may want to try it.

Upvotes: -1

Related Questions