【问题标题】:LibreOffice (soffice) command line stuck when executed as a node child processLibreOffice (soffice) 命令行在作为节点子进程执行时卡住
【发布时间】:2014-07-14 01:04:02
【问题描述】:

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

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

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

知道为什么会这样吗?

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

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

【问题讨论】:

  • 这里相同,但使用 php
  • 请添加一些代码(如何生成/执行子进程?)。

标签: node.js libreoffice


【解决方案1】:

正如 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。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您好,奇迹重启后您是否遇到过同样的问题?
    • 谢谢,虽然我昨天确实发现了这个问题:多个 soffice 实例会导致这个问题。 XD
    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2018-05-26
    • 2016-04-09
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多