我正在开发一个带有 Debian 10 基础映像(这是固定依赖项)的 Docker 容器,该容器在无头模式下使用 LibreOffice (soffice) 将 docx 文件转换为 pdf。
我已经安装了以下软件包:
libreoffice
default-jre-headless
libreoffice-java-common
然而,构建后,Docker 容器大小超过 1GB。理想情况下,我希望容器尽可能小。有没有办法可以找出使 soffice 在无头模式下运行并将 docx 文件转换为 pdf 的最低软件包要求?
答案1
似乎没有官方支持这一点。我在使用 Docker/Kubernetes 时遇到了同样的问题,并通过以下方法成功解决了它。本例中为 LibreOffice v7.5。
- 从以下位置下载 deb 包https://de.libreoffice.org/download/download
- 解压它,你会得到大约 40-50 个 deb 文件
- 我进行了反复试验,发现在服务器端将 DOCX 转换为 PDF 需要以下一组 deb 文件:
libobasis7.5-en-us_7.5.4.2-2_amd64.deb
libobasis7.5-images_7.5.4.2-2_amd64.deb
libobasis7.5-ooofonts_7.5.4.2-2_amd64.deb
libobasis7.5-writer_7.5.4.2-2_amd64.deb
libreoffice7.5-ure_7.5.4.2-2_amd64.deb
libreoffice7.5-writer_7.5.4.2-2_amd64.deb
libreoffice7.5_7.5.4.2-2_amd64.deb
将这些 deb 放在单独的目录中并通过以下方式安装: dpkg -i *.deb
测试直接转换:
/opt/libreoffice7.5/program/soffice --headless --convert-to pdf ./demo.docx --outdir ./
运行守护进程:
/opt/libreoffice7.5/program/soffice --headless --accept=socket,host="127.0.0.1,port=8100\;urp;" &
为了更自动化的方式,我重新打包了上面的 deb 文件列表,通过 DOCKERFILE 部署和安装它们