Docker安装unoconvert
Docker安装unoconvert
1 介绍
unoconvert是使用LibreOffice作为文档转换服务器。这个比kkfileview快,转出的效果要好一点。
https://github.com/unoconv/unoserver
2 使用Docker安装服务
2.1 创建容器
使用libreoffice安装unoconvert
# 下载镜像
docker pull linuxserver/libreoffice:25.2.5
创建容器
docker run -itd \
--name pyunoconv \
linuxserver/libreoffice:25.2.5
2.2 创建环境
(1)设置环境
进入容器
docker exec -it pyunoconv /bin/bash
在Linux中添加环境变量,如果不设置会出现下面的问题。
ImportError: Could not find the 'uno' library. This package must be installed with a Python installation that has a 'uno' library. This typically means you should install it with the same Python executable as your Libreoffice installation uses.
设置环境变量
export URE_BOOTSTRAP=vnd.sun.star.pathname:/usr/lib/libreoffice/program/fundamentalrc
export PATH=/usr/lib/libreoffice/program:$PATH
export UNO_PATH=/usr/lib/libreoffice/program
export LD_LIBRARY_PATH=/usr/lib/libreoffice/program:/usr/lib/libreoffice/ure/lib
export PYTHONPATH=/usr/lib/libreoffice/program:$PYTHONPATH
(2)解决中文乱码
没安装中文字体会出现转换时都是空,无法转中文。解决方法将Windows下的C:\Windows\Fonts的字体全部打包为”Fonts.zip“,复制到容器中的/usr/share/fonts/。
在宿主机中将"Fonts.zip"复制到容器中。
docker cp Fonts.zip pyunoconv:/home/
在pyunoconv容器中解压和移动字体
# 进入容器
docker exec -it pyunoconv /bin/bash# 进入目录
cd /home# 进入容器解压字体包
unzip Fonts# 将字体移动到字体目录下
mv Fonts/* /usr/share/fonts/
(3)创建环境
# 进入容器中的home目录
cd /home# 在home中创建虚拟环境
python -m venv pyunoconv# 激活虚拟环境
source ./pyunoconv/bin/activate# 安装依赖包
pip install unoserver
2.3 转PDF文件
(1)直接使用libreoffice转PDF
此方法比较耗时
libreoffice --headless --convert-to pdf /home/test7.docx
(2)使用unoserver转化
# (1)进入虚拟环境
source /home/pyunoconv/bin/activate# (2)启动unoserver服务
unoserver# (3)转化PDF文件
unoconvert test7.docx test7.pdf
(3)截图
启动服务截图

转换文件

