6

I know there are a bunch of libraries out there but none seem to exactly match my scenario. So I'm hoping to get some advice here...

technologies: I'm using Node.js on Express.js for the backend, and html/css/js for the front-end. Browser support is IE8 and up, chrome, FF, and other modern browsers.

What I need to do is: have a "to pdf" button for the user to click, which would then convert a chunk of the DOM to pdf. This chunk of DOM's html is generated dynamically when the back-end makes API calls to another app. The CSS is static.

Other than these, I have a lot of freedom to do whatever I want, as long as I don't have to send clear text data to third parties and etc.

Any recommended ways to do it?


Update: looking into wkhtmltopdf

2
  • Which libraries have you found and why don't they match your case? Commented Jul 27, 2012 at 19:36
  • well, for instance, jspdf looks great, but it doesn't take in CSS Commented Jul 27, 2012 at 19:38

2 Answers 2

5

Basically, this is what I ended up doing

console.log("before");
fs.writeFile(html_filename, html, function (err) {
  if (err) {res.writeHead(400); res.end("" + err); return;}

  console.log("wrote html fine; now converting");
  exec('wkhtmltopdf ' + html_filename + ' ' + pdf_filename, function (err, stdout, stderr) {
    if (err) {res.writeHead(400); res.end("" + err); return;}

    console.log("converted; now reading");
    fs.readFile(pdf_filename, function (err, data) {
      if (err) {res.writeHead(400); res.end("" + err); return;}

      console.log("read fine; now serving");
      res.writeHead(200, {"content-type" : "application/pdf"});
      res.end(data);
    });
  });
});

IMO it's a bit ugly as it requires making a file, then converting it, and then serving it, and finally delete the two. I suspect scalability problems here. Also wkhtmltopdf seems to not play nice with osx. There's no such problem on linux though.

Sign up to request clarification or add additional context in comments.

Comments

0

Try wkhtmltopdf . You can easily look at the current implementation of the driver for Ruby on Rails and apply it to node and express. You basically call a command line app and it will be converted to a PDF using your print CSS.

2 Comments

I've been trying to get wkhtmltopdf to work but having major problems.
Currently, when I execute wkhtmltopdf, whether manually from terminal or from node, a new process pops up in my mac dock and I have to click it to proceed. Otherwise it just hangs.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.