我正在使用 child_process 运行 wkhtmltopdf 以从 html 文档构建 PDF。我想等到 wkhtmltopdf 将文档处理成 PDF 后再继续。我认为当 wkhtmltopdf 发送其完成信号时从 stdout 读取以捕获是执行此操作的最佳方法,但以下代码在 res.send() 处报告 stdout 为空。当标准输出向我提供数据时,如何设置要触发的事件?
代码:
var buildPdf = function(error){
var pdfLetter;
var child = exec('wkhtmltopdf temp.html compensation.pdf', function(error, stdout, stderr) {
if (error)
res.send({
err:error.message
});
else
res.send({
output : stdout.toString()
});
// sendEmail();
});
};
最佳答案
您遇到了 wkhtmltopdf 陷阱。它不会将状态信息写入 STDOUT,而是将其写入 STDERR。
$ node -e \
"require('child_process').exec( \
'wkhtmltopdf http://stackoverflow.com/ foo.pdf', \
function(err, stdout, stderr) { process.stdout.write( stderr ); } );"
Loading pages (1/6)
content-type missing in HTTP POST, defaulting to application/octet-stream
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
关于Node.js - 等待文件完全写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11111323/