Node.js - 等待文件完全写入

标签 node.js wkhtmltopdf

我正在使用 child_process 运行 wkhtmltopdf 以从 html 文档构建 PDF。我想等到 wkhtmltopdf 将文档处理成 PDF 后再继续。我认为当 wkh​​tmltopdf 发送其完成信号时从 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/

相关文章:

c++ - EXC_BAD_ACCESS:调用 Nan::Callback 时

angularjs - EasyZip 生成的 Zip 无法正常工作

javascript - 在 headless 模式下针对 webkit 渲染引擎测试页面

c# - wkHTMLtoPDF 内存损坏和 AccessViolationException

python - PDFKIT 找不到 wkhtmltopdf

javascript - 使用 Powershell 编写具有 printSelectedDiv javascript 的网页的 pdf 打印脚本

node.js - 无法连接 Express 应用程序

node.js - Firestore函数: handle map value

javascript - .length 仅在 setTimeout 之后未定义

ruby-on-rails - ROR应用程序中的WKHTMLTOPDF路径