使用JavaScript将HTML和CSS转换为PDF

我知道有一大堆库,但似乎没有完全符合我的情况。 所以我希望在这里得到一些build议…

技术:我在后端使用Express.js上的Node.js,前端使用html / css / js。 浏览器的支持是IE8和以上,铬,FF和其他现代浏览器。

我需要做的是:为用户点击一个“to pdf”button,然后将DOM的一部分转换为pdf。 这个DOM的html块是在后端将API调用到另一个应用程序时dynamic生成的。 CSS是静态的。

除此之外,只要我不需要向第三方发送明确的文本数据,我就可以自由地做我想做的事情。

任何build议的方法来做到这一点?


更新:调查wkhtmltopdf

基本上,这是我最终做的

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); }); }); }); 

国际海事组织有点丑,因为它需要一个文件,然后转换,然后服务,最后删除这两个。 我怀疑这里的可伸缩性问题。 另外wkhtmltopdf似乎不与osx玩好。 虽然在linux上没有这样的问题。

尝试wkhtmltopdf。 您可以轻松查看Ruby on Rails的驱动程序的当前实现,并将其应用于节点和快捷方式。 你基本上调用一个命令行应用程序,它将被转换为使用您的打印CSS的PDF。