6

我知道那里有很多库,但似乎没有一个与我的场景完全匹配。所以我希望在这里得到一些建议......

技术:我在 Express.js 上使用 Node.js 作为后端,使用 html/css/js 作为前端。浏览器支持 IE8 及更高版本、chrome、FF 和其他现代浏览器。

我需要做的是:有一个“to pdf”按钮供用户单击,然后将一大块 DOM 转换为 pdf。这块 DOM 的 html 是在后端对另一个应用程序进行 API 调用时动态生成的。CSS 是静态的。

除此之外,我有很大的自由做任何我想做的事,只要我不必将明文数据发送给第三方等。

有什么推荐的方法吗?


更新:查看 wkhtmltopdf

4

2 回答 2

5

基本上,这就是我最终做的

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有点难看,因为它需要制作一个文件,然后转换它,然后提供它,最后删除这两个文件。我怀疑这里的可扩展性问题。wkhtmltopdf 似乎也不适合 osx。但是在linux上没有这样的问题。

于 2012-08-01T00:21:51.630 回答
0

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

于 2012-07-31T01:10:56.287 回答