与bug从斗争到共存 2023-11-08 16:58 采纳率: 0%
浏览 129
已结题

docker项目,使用LibreOffice实现word转pdf

问题遇到的现象和发生背景

遇到了一个word转pdf的需求,经过几番波折,决定使用LibreOffice+jodconverter的方式来实现

操作环境、软件版本等信息

现在的情况是,在windows下以及linux下都能实现word转pdf,
但是一旦使用docker来部署项目,将LibreOffice在Linux的安装路径挂载到docker,启动项目,调用到word转pdf的功能时,就会爆出下面的错误
[2023-11-08 16:38:23.313] [WARN ] [] [jodconverter-offprocmng-20] [o.j.local.office.LocalOfficeProcessManager:703] >> An I/O error prevents us to determine office version
2023-11-08T08:38:23.315243788Z java.io.IOException: Cannot run program "/opt/libreoffice7.5/program/soffice.bin": error=2, No such file or directory
2023-11-08T08:38:23.315259448Z at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
2023-11-08T08:38:23.315266187Z at org.jodconverter.local.office.LocalOfficeProcessManager.detectOfficeDescriptor(LocalOfficeProcessManager.java:691)
2023-11-08T08:38:23.315272789Z at org.jodconverter.local.office.LocalOfficeProcessManager.startProcessAndConnect(LocalOfficeProcessManager.java:374)
2023-11-08T08:38:23.315294489Z at org.jodconverter.local.office.LocalOfficeProcessManager.lambda$start$1(LocalOfficeProcessManager.java:213)
2023-11-08T08:38:23.315301412Z at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2023-11-08T08:38:23.315308024Z at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2023-11-08T08:38:23.315314409Z at java.lang.Thread.run(Thread.java:748)
2023-11-08T08:38:23.315320627Z Caused by: java.io.IOException: error=2, No such file or directory
2023-11-08T08:38:23.315326988Z at java.lang.UNIXProcess.forkAndExec(Native Method)
2023-11-08T08:38:23.315333543Z at java.lang.UNIXProcess.(UNIXProcess.java:247)
2023-11-08T08:38:23.315340109Z at java.lang.ProcessImpl.start(ProcessImpl.java:134)
2023-11-08T08:38:23.315346263Z at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
2023-11-08T08:38:23.315373884Z ... 6 common frames omitted
2023-11-08T08:38:23.327367427Z [2023-11-08 16:38:23.326] [INFO ] [] [jodconverter-offprocmng-20] [o.j.local.office.LocalOfficeProcessManager:416] >> Starting process with --accept 'socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;StarOffice.ServiceManager' and profileDir '/tmp/.jodconverter_socket_host-127.0.0.1_port-2002_tcpNoDelay-1'
2023-11-08T08:38:23.329965909Z [2023-11-08 16:38:23.328] [ERROR] [] [jodconverter-offprocmng-20] [o.j.local.office.LocalOfficeProcessManager:215] >> Could not start the office process.
2023-11-08T08:38:23.329998652Z org.jodconverter.core.office.OfficeException: An error prevents us to start a process with --accept 'socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;StarOffice.ServiceManager'
2023-11-08T08:38:23.330008428Z at org.jodconverter.local.office.LocalOfficeProcessManager.executeStartProcessAndConnect(LocalOfficeProcessManager.java:442)
2023-11-08T08:38:23.330015568Z at org.jodconverter.local.office.LocalOfficeProcessManager.startProcessAndConnect(LocalOfficeProcessManager.java:395)
2023-11-08T08:38:23.330022130Z at org.jodconverter.local.office.LocalOfficeProcessManager.lambda$start$1(LocalOfficeProcessManager.java:213)
2023-11-08T08:38:23.330028832Z at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2023-11-08T08:38:23.330035097Z at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2023-11-08T08:38:23.330041936Z at java.lang.Thread.run(Thread.java:748)
2023-11-08T08:38:23.330048405Z Caused by: java.io.IOException: Cannot run program "/opt/libreoffice7.5/program/soffice.bin": error=2, No such file or directory
2023-11-08T08:38:23.330105761Z at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
2023-11-08T08:38:23.330115350Z at org.jodconverter.local.office.StartProcessAndConnectRetryable.startProcess(StartProcessAndConnectRetryable.java:143)
2023-11-08T08:38:23.330121855Z at org.jodconverter.local.office.StartProcessAndConnectRetryable.attempt(StartProcessAndConnectRetryable.java:95)
2023-11-08T08:38:23.330128447Z at org.jodconverter.core.office.AbstractRetryable.execute(AbstractRetryable.java:86)
2023-11-08T08:38:23.330134695Z at org.jodconverter.core.office.AbstractRetryable.execute(AbstractRetryable.java:60)
2023-11-08T08:38:23.330141247Z at org.jodconverter.local.office.LocalOfficeProcessManager.executeStartProcessAndConnect(LocalOfficeProcessManager.java:428)
2023-11-08T08:38:23.330186993Z ... 5 common frames omitted
2023-11-08T08:38:23.330196061Z Caused by: java.io.IOException: error=2, No such file or directory
2023-11-08T08:38:23.330202279Z at java.lang.UNIXProcess.forkAndExec(Native Method)
2023-11-08T08:38:23.330208680Z at java.lang.UNIXProcess.(UNIXProcess.java:247)
2023-11-08T08:38:23.330215306Z at java.lang.ProcessImpl.start(ProcessImpl.java:134)
2023-11-08T08:38:23.330221513Z at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
2023-11-08T08:38:23.330227868Z ... 10 common frames omitted

我想要达到的结果

可以实现word转pdf的功能

  • 写回答

16条回答 默认 最新

  • 社区专家-Monster-XH 2023-11-08 16:59
    关注
    获得0.60元问题酬金

    基于Monster 组和AIGC的调写:若有帮助,还望采纳~~:

    • 错误信息表明,启动的LibreOffice二进制文件/opt/libreoffice7.5/program/soffice.bin在容器中找不到。这通常是因为以下几个原因:
    1. LibreOffice没有被正确安装:在构建Docker镜像时,要确保LibreOffice软件包已经被正确安装到指定路径下。

    2. 挂载卷的问题:如果你是通过挂载卷的方式来让Docker容器访问宿主机的LibreOffice安装目录,要确保该卷的挂载路径与容器内的预期路径一致。

    3. 文件系统权限:在某些情况下,容器可能没有权限访问挂载的目录,你可能要调整权限设置。

    4. 依赖问题:可能是缺少了LibreOffice运行所需要的某些依赖库,尤其是在轻量级的容器环境中。

    为了解决这个问题,你可以尝试以下步骤:

    • 确保Docker镜像构建过程中包含了LibreOffice的安装步骤,并且安装路径与容器内的预期路径匹配。
    • 检查Docker容器的挂载卷设置,确保LibreOffice的路径被正确挂载。
    • 在容器内手动运行/opt/libreoffice7.5/program/soffice.bin以检查是否能够成功执行。
    • 检查并安装任何可能缺失的依赖库。
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 创建了问题 11月8日

悬赏问题

  • ¥100 有没有苹果游戏的海克斯技术,如何解决?
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!