PDF2Word Converter (Go + LibreOffice)
一个基于 Go 语言和 LibreOffice 的高性能 PDF 转 Word 桌面转换工具。通过守护进程模式与平台级窗口隐藏技术,解决了传统调用方式启动慢、控制台闪烁等痛点,提供流畅的本地文档转换体验。
✨ 核心特性
🚀 极速转换:采用 LibreOffice 守护进程(Daemon)常驻模式,避免重复冷启动,二次转换提速 5-10 倍
🙈 静默运行:Windows 平台下完全隐藏外部进程控制台窗口,无黑框闪烁,体验纯净
🧹 优雅退出:自动监听系统中断信号,程序退出时安全清理后台 LibreOffice 进程,杜绝残留
🖥️ 跨平台兼容:通过 Go Build Tags 实现平台代码隔离,完美支持 Windows / macOS / Linux
⏱️ 精准计时:内置转换耗时统计,便于性能诊断与优化追踪
📋 环境依赖表格
依赖项 最低版本 说明
Go ≥ 1.21 编译运行环境
LibreOffice ≥ 7.0 必须安装,程序自动检测路径
⚠️ 重要提示:请确保 LibreOffice 已正确安装并可通过命令行调用 soffice。程序会按以下优先级自动查找:
Windows: C:\Program Files\LibreOffice\program\soffice.exe → PATH 环境变量
macOS: /Applications/LibreOffice.app/Contents/MacOS/soffice → Homebrew → PATH
Linux: PATH 环境变量中的 soffice
🏗️ 架构设计要点
守护进程模式
传统方案每次转换都执行 soffice --headless --convert-to ...,导致完整的 GUI 框架初始化开销(10-30秒)。本项目改为:
首次调用时以 --accept=pipe,name=pdf2word_pipe 启动 LibreOffice 为后台服务
后续转换复用同一进程实例,仅传递文件路径参数
程序退出时通过 signal.Notify 捕获 SIGINT/SIGTERM,主动 Kill 守护进程
跨平台窗口隐藏
使用 Go Build Tags 将平台相关代码物理隔离,避免编译错误: