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