Java实现文件预览

一、需求背景

        项目需要实现一个在Android端群文件上传后支持预览的功能。

PS:常见文件格式如pdf、html、txt、图片在线预览较为简单,word,excel,ppt在线预览较为困难

二、技术方案调研

方案1:通过腾讯TBS代替原生WebView(还有Google doc、Office Web 365等也需付费使用)
优点:安卓端集成SDK方式,效率高,功能强大
缺点:目前新版本已收费(若没有成本预算顾虑,直接选择该方案即可)

详见:Android 通过腾讯TBS实现文件预览功能-编程学习网

方案2:安卓端使用Apache的poi组件读取word、excel,结合itext生成pdf
优点:安卓端实现方便
缺点:预览效果差,不支持ppt的转换,且存在jwt的jar包无法调用问题(这里不作展开)

方案3:服务端jodconverter+openOffice实现office文档转换为pdf,安卓端使用AndroidPdfViewer预览pdf文档
优点:一般格式预览效果还行,linux可使用中文路径,跨平台
缺点:复杂格式可能有错位,jodconverter依赖于openOffice,需在linux服务安装openOffice

详见:Java实现word、excel、ppt、txt等办公文件在线预览功能 - 腾讯云开发者社区-腾讯云

方案4:服务端Aspose实现office文档转换为pdf,安卓端使用AndroidPdfViewer预览pdf文档
优点:实现简单,无需安装插件服务,文件转换较快,跨平台
缺点:使用Aspose破解版,商用涉及版权问题,使用中文路径会乱码(这里不作展开)

方案5:使用kkfileview+openOffice实现转换和预览
优点:开源项目,支持文件格式齐全,不用开发,文件转换较快,跨平台(emmm,真香~)
缺点:需在linux服务安装openOffice(安装简单,兼容性较差)或libreOffice(建议采用,centOS系统低版本安装较麻烦),kkfileview(可详见下述步骤)

最终决策:选择方案5

三、安装libreOffice/openOffice

安装libreOffice参考(kkFileView 4.0.0之后的版本,建议安装libreOffice),安装教程参考:centos7 安装LibreOffice(超级详细)_刘奶奶向柳奶奶借牛奶的博客-CSDN博客

参考安装教程:centos7 安装LibreOffice(超级详细)_刘奶奶向柳奶奶借牛奶的博客-CSDN博客
1.解压
新建目录:mkdir /data/libreOffice7.4
上传并解压:tar -zxvf LibreOffice_7.4.5.1_Linux_x86-64_rpm_helppack_zh-CN.tar.gz
LibreOffice_7.4.5.1_Linux_x86-64_rpm_langpack_zh-CN.tar.gz
2.更新配置(参照教程)
vim /etc/profile
export LibreOffice_PATH=/opt/libreoffice7.4/program
export PATH=$LibreOffice_PATH:$PATH
source /etc/profile
3.进入目录:cd /data/libreOffice/LibreOffice_7.4.5.1_Linux_x86-64_rpm/RPMS
执行(安装所有rpm文件):su -c 'yum install *.rpm'
默认安装目录:/opt/libreoffice7.4/program
4.启动
执行启动命令:/opt/libreoffice7.4/program/soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &
检查启动情况,查看进程:ps -ef|grep libreoffice
5.卸载:
cd /data/libreOffice
sudo yum remove libreoffice7.4-*

遇到的问题1:开始执行安装命令为yum localinstall *.rpm,安装没进程日志提示:

解决办法:查阅官网手册后,发现可以使用:su -c 'yum install *.rpm'

遇到的问题2:我自己安装时,因为centos6.7的版本glibc仅支持到2.12以前的版本,启动时出现如下报错:

解决办法:libreoffice6.2报错 - 知乎 

openOffice官方安装包下载地址:Apache OpenOffice - Official Download

1.解压安装包
在/data目录(可自行选择)下新建目录:/data/openoffince,将安装包ftp上传到该目录并解压:
tar -xvzf Apache_OpenOffice_4.1.14_Linux_x86-64_install-rpm_zh-CN.tar.gz
2.进入到解压目录,比如/data/openoffince/zh-CN/RPMS,执行:
rpm -Uvih *rpm
如果是redhat操作系统,选择对应的rpm,比如执行:
rpm -ivh openoffice4.1.14-redhat-menus-4.1.14-9811.noarch.rpm
这时openOffice己经安装完成,默认会安装在/opt下

启动openOffice
1.进入到目录:/opt/openoffice4/program
2.执行启动命令:soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
3.检查启动情况,查询进程:ps -ef|grep openoffice

四、安装kkFileView

项目官网:https://kkview.cn/zh-cn/index.html

开源项目:https://gitee.com/kekingcn/file-online-preview

若下载最新安装包需加入知识星球收费,可尝试下载链接:

kkFileView-4.1.0.tar.gz (Linux 或 MacOS 版)

或下载源码后,找到对应的安装包(我改过源码,重新package打新的部署包再部署),如下图:

1.解压安装包
进入/data目录,上传并解压:
tar -xvzf kkFileView-4.2.1.tar.gz
2.修改配置文件属性:vi /data/kkFileView-4.2.1/config/application.properties
office.home = /opt/openoffice4

或office.home = /opt/libreoffice7.5
3.进入解压文件夹的bin目录:/data/kkFileView-4.2.1/bin
4.运行脚本:Linux以root用户运行startup.sh


5.浏览器访问:http://ip:8012

注意:
1.网络原因,自动安装内置的openoffice会报错,所以openoffice需要单独安装,修改kkFileView配置
2.linux环境下,会出现中文乱码,此时需要把windows下的字体配置复制到linux下,刷新配置即可

五、nginx添加配置

location /preview/ {
proxy_pass http://xxx.xxx.xxx.xxx:8012/;
client_max_body_size 100m;
}

详见:kkFileView - 在线文件预览

六、测试验证

在线预览体验:kkFileView演示首页

原始文件url:http://xxx.aliyuncs.com/20220804/3973c5ae77874b3790677250819bd37f/外面的世界1222活动参会人员列表.xls


转换后的预览文件url(可浏览器访问):http://xxx.xxx.cn/preview/onlinePreview?url=aHR0cDovLzR5ZS1yc2Mub3NzLWNuLXFpbmdkYW8uYWxpeXVuY3MuY29tLzIwMjIwODA0LzM5NzNjNWFlNzc4NzRiMzc5MDY3NzI1MDgxOWJkMzdmL3hpYW94aW5fNyDlpJbpnaLnmoTkuJbnlYwxMjIy5rS75Yqo5Y%2BC5Lya5Lq65ZGY5YiX6KGoLnhscw%3D%3D

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值