You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LibreOffice lowriter命令终端可执行,代码调用失败排查

解决Go调用lowriter转换DOCX到PDF失败的问题

问题根源

你的代码核心错误是错误使用了exec.Command:你将整个命令拼接成单个字符串传给exec.Command,但该函数的第一个参数是程序名,后续每个参数需要单独传入,不能合并成一个字符串。系统会把你传入的整个长字符串当成要执行的程序文件名,自然会报"no such file or directory"。

修正后的代码

直接拆分每个命令行参数,单独传递给exec.Command:

func DocxToPdf(srcDocxPath string, outputPath string) error{
    cmd := exec.Command(
        "lowriter",
        "--invisible",
        "--headless",
        "--convert-to",
        "pdf:writer_pdf_Export",
        "--outdir", outputPath,
        srcDocxPath,
    )
    _, err := cmd.Output()
    if err != nil {
        return err
    }
    return nil
}

补充说明

  1. 参数拆分规则:命令行中每个空格分隔的部分都要作为独立参数传入exec.Command,比如--outdir和输出路径是两个独立参数,不能合并成"--outdir /path"。
  2. 路径检查:你之前的路径替换逻辑(strings.Replace加fmt.Sprintf)其实没必要,直接使用原始路径即可,避免引入额外的路径错误。
  3. 环境变量验证:确保Go进程的PATH环境变量包含lowriter的路径,若不确定,直接使用lowriter的绝对路径(比如/usr/bin/lowriter)替换第一个参数。

内容的提问来源于stack exchange,提问作者rminaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:02:44