English | 简体中文
本项目旨在提供一套针对 Linux 平台的文档自动化处理解决方案,包含两个核心组件:
- 独立 GUI 应用:基于 PySide6 构建,通过 UNO API 调用办公软件内核执行批量打印任务。
- 办公软件扩展插件 (
.oxt):深度集成于办公软件内部,提供菜单入口与快捷操作,并在底层自动调度独立应用实现打印任务。
project-root/
├── run.sh # 独立应用启动脚本 (自动配置 UNO 运行时环境)
├── main.py # 主程序入口
├── services/ # 批量打印核心逻辑
├── ui/ # PySide6 界面文件
└── plugin-oxt/ # 办公软件插件源码
本项目同时支持 LibreOffice 与 LoongOffice。由于两者底层 UNO API 及目录结构高度一致,切换办公软件时无需改动任何 Python 业务代码,仅需在 run.sh 中配置正确的路径。
| 办公软件 | 默认安装路径 ($OFFICE_HOME) |
备注 |
|---|---|---|
| LibreOffice | /usr/lib/libreoffice/program |
主流 Linux 发行版默认路径 |
| LoongOffice | /opt/loongoffice/program |
龙芯平台默认安装路径 |
提示:若您的安装路径与上述默认路径不同,请在执行后续脚本时,将路径替换为实际安装路径。
本项目推荐使用 Python 虚拟环境 进行开发隔离,并使用 PyInstaller 生成可执行文件。
强烈建议使用虚拟环境以避免包冲突。
# 1. 创建虚拟环境
python3 -m venv venv
# 2. 激活虚拟环境
source venv/bin/activate
# 3. 安装依赖
pip install pyinstaller cups PySide6 PyMuPDF python-magic使用 PyInstaller 将应用打包为独立的可执行文件。
# 1. 清理旧构建
rm -rf dist/ build/ *.spec
# 2. 执行打包命令
pyinstaller \
--name=lobatchprint \
--windowed \
--add-data "locales:locales" \
--add-data "fonts:fonts" \
main.py插件通过 subprocess.Popen 调度独立应用,并设置 start_new_session=True 以确保后台任务在办公软件关闭后仍能独立运行。
在打包 .oxt 文件之前,请打开 plugin-oxt/config.py 文件,修改 APP_PATH 变量,将其指向您实际部署的独立应用启动脚本:
# plugin-oxt/config.py
APP_PATH = "/usr/lib/libreoffice/program/lobatchprint"- 在
plugin-oxt/目录下执行zip -rq ../batchprintextension.oxt *生成扩展文件。 - 在办公软件中通过
工具 -> 扩展管理器 -> 添加安装该.oxt文件,重启后生效。
为确保独立应用能正确加载 UNO 接口,需配置 run.sh 启动脚本以注入必要的环境变量。
打开项目根目录下的 run.sh,根据您的实际安装环境,修改 OFFICE_HOME 变量:
# 根据实际环境修改
OFFICE_HOME="/usr/lib/libreoffice/program"run.sh 脚本通过注入以下关键环境变量,确保应用能正确加载办公软件内置的 UNO 运行时:
URE_BOOTSTRAP:指向fundamentalrc配置文件,引导 UNO 引擎启动。LD_LIBRARY_PATH:指定底层 C++ 动态库的搜索路径。PYTHONPATH:强制指向办公软件内置的uno.py,避免与系统 pip 安装的版本冲突。
此外,脚本会自动检测办公软件内置的 Python 版本并优先使用,若未找到则回退到系统默认的 python3,从而保证 import uno 能够正确执行。
本项目基于 Mozilla Public License 2.0 (MPL 2.0) 协议开源。 有关详细信息,请参阅项目根目录下的 LICENSE 文件。