我正在运行无头的命令行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/