WPS Office 配合pywpsrpc可以实现一些自动化的功能,比如服务端自动化文档转换。然而,WPS 本质上是一个桌面级办公软件,依赖图形界面和用户配置,直接在无 GUI 的 Docker 容器中运行会出现各种错误。
Docker缺少图形界面
Docker绝大多数基础镜像是没有图形界面的,运行WPS需要图形界面,在Docker里使用我试了几款低占用的图形界面方案,X server, XFCE, LXDE, LXQT, 最终选择了LXQT,LXQT在Docker里使用遇到奇怪的问题的概率最小而且占用也很低。
RUN apt-get update && apt-get install -y \
lxqt x11vnc xvfb dbus-x11
xvfb用于无头模式下启动WPS,下文会使用到
同意EULA和切换multi-component mode
写一个stath.sh
启动脚本,用于启动的时候通过修改WPS的配置文件同意EULA和切换到 muti-component mode 以及其他的启动事项
timeout 3 xvfb-run wps # 第一次使用WPS生成conf文件
# 同意EULA
echo "common\AcceptedEULA=true" >>/root/.config/Kingsoft/Office.conf
echo "common\UserInfo\ACUPI=true" >>/root/.config/Kingsoft/Office.conf
# 切换到multi-component mode模式
echo "wpsoffice\Application%20Settings\AppComponentMode=prome_independ" >>/root/.config/Kingsoft/Office.conf
echo "wpsoffice\Application%20Settings\AppComponentModeInstall=prome_independ" >>/root/.config/Kingsoft/Office.conf
timeout 3 xvfb-run wps # 再次打开WPS,让WPS补充其他的conf
无法使用WPS PDF
WPS预览PDF和Word转PDF都需要用到WPS PDF,缺少libtiff.so.5会无法打开使用
RUN apt-get update && apt-get install libtiff6 \
&& ln -sv /usr/lib/x86_64-linux-gnu/libtiff.so.6 /usr/lib/x86_64-linux-gnu/libtiff.so.5 \
&& ldconfig
pywpsrpc正常调用WPS
Python应用需要使用xvfb运行才能正常调用WPS
xvfb-run python3 ./main.py