将Word、Excel和PPT转成PDF和html
简介OFFICE 文档转换为html在线预览
最近想开发一个项目,主要是对Office文档在线进行预览,虽然网上有很简单的方法,但是文件的地址是透明的,可以拿到真实的文件,所以就考虑能否将文档转成PDF或者HTML,直接在网上进行预览。下面简单说一下几种技术方案:
方案:
- 1、服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览,比如flexpaper
- 2、Office文档直接转换为SWF,通过网页加载Flash预览
- 3、转换成PDF,直接用浏览器打开
- 4、转换成html
本文主要介绍如何使用libreoffice将文档转换成PDF,然后再将文档转换成html。本文安装是在Centos8系统上。
一、安装JAVA环境
1.1、下载安装包
JDK下载推荐使用镜像:
JDK:https://repo.huaweicloud.com/java/jdk/
您同样可以使用开源的OpenJDK
OpenJDK:https://mirrors.huaweicloud.com/openjdk/
wget https://repo.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-linux-x64.tar.gz
1.2、解压
tar -zxvf jdk-8u192-linux-x64.tar.gz
1.3、移动到指定目录(个人习惯)和修改目录名称
mv jdk1.8.0_192 /apps/
mv jdk1.8.0_192 jdk1.8.0
1.4、添加环境变量
export JAVA_HOME=/apps/jdk1.8.0
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
1.5、让环境变量生效和测试
[root@localhost apps]# source /etc/profile
[root@localhost apps]# java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
以上java环境就配置完成
二、安装libreoffice
2.1、libreoffice官网下载最新版安装包
wget https://download.documentfoundation.org/libreoffice/stable/7.1.4/rpm/x86_64/LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz
2.2、解压并安装
tar -zxvf LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz
cd LibreOffice_7.1.4.2_Linux_x86-64_rpm/RPMS/
yum localinstall *.rpm
2.3、安装相关依赖
yum install cairo cups-libs libSM
2.4、添加环境变量
export LibreOffice_PATH=/opt/libreoffice7.1/program
export PATH=$LibreOffice_PATH:$PATH
2.5、使环境变量生效和测试
source /etc/profile
#上传一个1.docx文件到/tmp目录下,然后生成pdf,如果没有报错就OK
soffice --headless --invisible --convert-to pdf /tmp/1.docx --outdir /tmp/
2.6、启动服务
soffice --accept="socket,host=127.0.0.1,port=2002;urp;" --nofirststartwizard
2.7、Python调用服务
参考地址:https://github.com/mirkonasato/pyodconverter/, 将DocumentConverter.py下载下来
python DocumentConverter.py /tmp/1.docx /tmp/2.pdf
2.8、在转换后如果字体有问题,就需要将windows的字体复制到服务器,然后刷新字体缓存
- windows字体位置:C:\Windows\Fonts
- Centos字体位置:/usr/share/fonts
刷新缓存命令如下:
sudo fc-cache -fv 2>&1 | grep failed | cut -f1 -d":" | xargs -i sudo touch {} && sudo fc-cache -fv