基本上,这就是我最终做的
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上没有这样的问题。