文章目录
前言
提示:想要在手机端和电脑端实现在线预览office文件,之前想的办法是统一把文件转换成pdf的格式,试了一圈网上的方法,要么是收费要么是样式错乱或者是环境问题最终采用了kkview+libreoffice 的实现方式`,这种方式目前支持pdf、ppt、pptx、xlsx、xls、doc、docx等格式,暂时不支持.vsdx,这种方式也有一定概率会出现样式错乱的问题。
正文
-
下载和安装 libreoffice 这里我的linux的环境是CentOS 7的 版本
语言包:LibreOffice_7.4.5.1_Linux_x86-64_rpm_langpack_zh-CN.tar.gz
libreoffice 包:LibreOffice_7.4.5.1_Linux_x86-64_rpm.tar.gz
powershelltar -zxvf LibreOffice_7.4.5.1_Linux_x86-64_rpm_langpack_zh-CN.tar.gz tar -zxvf LibreOffice_7.4.5.1_Linux_x86-64_rpm.tar.gz cd /LibreOffice_7.4.5.1_Linux_x86-64_rpm/RPMS/ yum localinstall *.rpm cd /LibreOffice_7.4.5.1_Linux_x86-64_rpm_langpack_zh-CN/RPMS/ yum localinstall *.rpm # 环境变量 # libreoffice export LibreOffice_PATH=/opt/libreoffice7.4/program export PATH=$LibreOffice_PATH:$PATH # 验证版本 libreoffice7.4 --version -
下载kkview并运行,点击这里跳转官网,我这里使用的是4.4.0的版本,更高的版本对jdk的版本要求更高,目前这套使用的是java1.8的版本。
kkview配置: kkview需要更改一些配置
powershell# 这里配置成我们libreoffice7.4的安装目录 office.home = ${KK_OFFICE_HOME:/opt/libreoffice7.4} #信任地址,如果提供文件的地址需要加入到这里 trust.host = ${KK_TRUST_HOST:127.0.0.1,xxx.oss-cn-xxx.com,172.16.1.228,xxx.xxx.cn}nginx配置: 我用的是nginx转发的所以需要配置nginx,preview为kkview预览请求地址
powershelllocation /preview/ { proxy_pass http://127.0.0.1:8012/; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; set $my_proxy_add_x_forwarded_for $proxy_add_x_forwarded_for; if ($proxy_add_x_forwarded_for ~* "127.0.0.1"){ set $my_proxy_add_x_forwarded_for $remote_addr; } proxy_set_header X-Forwarded-For $my_proxy_add_x_forwarded_for; }
3.kkview运行后,我们只需要让前端请求我们部署的kkview的路径加上我们文件的在线地址(需要base64加密)就可以实现在线预览
java
// 文件地址
String url = "xxx.xx.png";
String base64Ulr =URLEncoder.encode(Base64.getEncoder().encodeToString(url.getBytes()))
// 文件预览地址onlinePreview前面是kkview的请求地址,后面是base64后的原文件地址,在浏览器输入下面的预览地址就可以实现在线预览
String previewurl = "https://xxx.xxx.cn/preview/onlinePreview?url="+base64Ulr;
doc在线预览

ppt在线预览

xls在线预览
