想在一个现有的 golang 后台服务里增加一个 Excel 文件转换 PDF 的功能。但是调研了一圈,并没有很好的 golang 或者 Python 开源免费的实现,基本都需要依赖 LibreOffice 命令工具。于是找到一个 docker 的集成镜像 gotenberg
A Docker-based API built for PDF conversion
可以将 HTML 网页,markodwn,office 文档(word,excel等)转换成 PDF。看起来非常强大,而且省去了自己折腾部署的痛苦。测试了一下非常靠谱,之前用 golang 开发了一套人事系统,因为没有找到合适的 golang 库就没有实现人事简历 PDF 版功能,现在看来完全可以使用这个 docker 方案来搞定。
docker 镜像
https://hub.docker.com/r/gotenberg/gotenberg
镜像大小 431.1 MB。
分为不同的版本,例如:Chromium-Only,LibreOffice-Only 等删除了部分依赖,能有效减少镜像的体积。可以通过不同的 tag 来区分。
不同版本的取舍
- 内置 Chromium 的镜像支持: HTML, URL, Markdown to PDF via Headless Chromium
- 内置 LibreOffice 的镜像支持:Office documents to PDF via LibreOffice (100+ formats)
如果只是 excel 到 pdf 的转换,只需要 LibreOffice-Only 版本即可。
Drops Chromium and its dependencies. ~38% smaller than the full image.
可以执行命令安装:
docker pull gotenberg/gotenberg:8-libreoffice
如果是国内,无法直接直接访问 docker hub,可以通过:
docker pull m.daocloud.io/docker.io/gotenberg/gotenberg:8-libreoffice
测试
没想到在 Windows 上安装了 Docker Desktop 客户端之后,也能在 powershell 中使用 docker 命令行。命令行就方便多了,哪个 docker desktop 的 GUI 用起来很不顺手。
转换接口,提供原始文件,就能返回 pdf 格式的文件。
curl \
--request POST http://localhost:3000/forms/libreoffice/convert \
--form files=@/path/to/docx \
-o my.pdf
参考:https://gotenberg.dev/docs/convert-with-libreoffice/convert-to-pdf
docker 实例内存占用
90M 左右。
关于作者 🌱
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式