LibreOffice(soffice)命令行在作为节点子进程执行时被卡住

时间:2014-07-14 01:04:02

标签: node.js libreoffice

我正在运行无头,命令行libreoffice将文档转换为pdf或png。我在跑步。 E.g。

soffice --headless --convert-to png --outdir /tmp /tmp/myfile.pub

当我直接在命令行上运行命令时,转换成功。但是,如果我通过在节点中生成(或执行)子进程来运行它,它只会挂起(转换不会发生)。当我执行ps aux时,我可以看到此命令正在运行。

知道为什么会这样吗?

我已经尝试了很多东西,包括:

  1. 二进制的完整路径
  2. 确保文件权限都很好

2 个答案:

答案 0 :(得分:0)

正如borisdiakur已经指出的那样,如果没有实际代码,很难对其进行调试。此外,我没有在这台机器上安装soffice。但是,像这样的东西应该有效,如果没有,它至少应该通过打印出你的命令输出来给你更多的洞察力:

var spawn   = require('child_process').spawn,
    soffice = spawn('soffice', ['--headless', '--convert-to', 'output.png', '--outdir', '/tmp', '/tmp/myfile.pub' ]);

soffice.stdout.on('data', function (data) {
    console.log('stdout: ' + data);
});

soffice.stderr.on('data', function (data) {
    console.log('stderr: ' + data);
});

soffice.on('close', function (code) {
    console.log('child process exited with code ' + code);
});

更新0:好的,我继续追踪我的硬盘上的soffice可执行文件(显然我确实拥有它)。给定正确的路径时,该命令执行得很好。我必须做的一件事就是创建output.png文件YMMV。

答案 1 :(得分:0)

服务器重启奇迹般地修复了它。