DEV Community · Show DEV8/11 22:1465精选

用单个Rust二进制替代无头LibreOffice实现DOCX转PDF

We Replaced Headless LibreOffice with a Single Rust Binary for DOCX PDF

阅读原文

推荐理由:我认为这条对做文档处理或自建管道的AI创作者极有价值:用Rust单二进制替代LibreOffice,性能提升明显(171页仅420ms),且开源可抄,能避开进程挂起和输出漂移的坑。

一个生产环境中的文档管道原本依赖无头LibreOffice将DOCX模板转为PDF,但面临序列化转换、进程挂起、配置目录管理、输出漂移和体积庞大等问题。为此,开发团队自研了开源工具dxpdf:一个用Rust编写的单一二进制,直接解析OOXML,使用Skia渲染,无需Office或云API。在M3 Max上,转换3页文档耗时170毫秒,171页文档耗时420毫秒,且字体解析是主要成本。目前支持74项OOXML特性,11项部分支持,12项不支持。该工具并非完全替代LibreOffice,但针对特定场景提供了更可控的解决方案。