我正在运行无头的命令行libreoffice,将文档转换为pdf或png。我在跑步。例如。

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


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

知道为什么会发生吗?

我已经尝试了很多方法,包括:


使用二进制的完整路径
确保文件权限都很好

最佳答案

正如borisdiakur已经指出的那样,如果没有实际代码很难调试它。另外,我没有在这台机器上安装办公室。但是,类似这样的事情应该可以工作,如果不能,那么应该至少通过打印命令输出为您提供更多的见解:

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。

关于node.js - 作为 Node 子进程执行时,LibreOffice(办公室)命令行被卡住,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24728317/

10-11 22:04
查看更多