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

问题描述 投票:0回答:3

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

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

直接在命令行运行命令,转换成功。但是,如果我通过在节点中生成(或执行)子进程来运行它,它就会挂起(转换不会发生)。当我执行

ps aux
时,我可以看到此命令正在运行。

知道为什么会发生这种情况吗?

我已经尝试过很多事情,包括:

  1. 使用二进制文件的完整路径
  2. 确保文件权限都良好
node.js libreoffice
3个回答
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。


0
投票

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


0
投票

我将添加一个答案,以便 WINDOWS 用户尝试从 IIS 应用程序启动 LibreOffice。有多种情况可能导致 LibreOffice 无法工作和/或挂起。我自己的清单是:

  1. 将工作文件夹的权限授予 IIS AppPool/DefaultAppPool
  2. 启动 soffice.com 而不是 soffice.exe
  3. 在命令行上,显式设置输出文件夹
  4. 在命令行上,显式设置不同的配置文件文件夹

有关完整的救生员帖子,请参阅:

https://ask.libreoffice.org/t/accessing-libreoffice-from-iis-10-hangs-on-bootstrap/43719/7

© www.soinside.com 2019 - 2024. All rights reserved.