java实现(如:WORD、EXCEL、PPT、ZIP 等)文件在线预览功能-程序员宅基地

技术标签: java  kkFileView文件在线预览  前端  开源软件  

一:背景

用户在查看文章详情的时候,文章除了正文外还附带有各类型附件(如:word,excel,ppt,zip等),当用户想要查看附件时,需要先下载到本地再打开,这样很不方便,于是用户希望能够有在线预览附件的功能。

二:方案(参考:https://blog.csdn.net/xinghui_liu/article/details/125641300

日常开发中常见的文件格式有pdf,word,Excel,PPT,Html,txt,图片等。pdf,Html,txt,图片这种实现在线预览非常简单,有一些前端的插件可以满足要求。word,Excel,PPT如果要实现在线预览,就非常的困难。word,Excel,PPT实现在线预览常用的方式就是先转换成pdf,然后在进行预览。下面我就介绍常用的几种方案
方法一、kkfileview 文件在线预览

kkfileview支持文件格式多,而且不用开发。不过需要单独部署一个文件预览的服务,而且服务
器也需要安装openoffice。

方法二、officetohtml纯前端的方式

officetohtml纯前端的方式可以不用安装任何插件及服务,但是目前只支持文件地址的方式预览
,如果是文件流的话无法使用。

方法三、JODConverter

JODConverter 依赖于openoffice,需要在服务器单独安装openoffice。

方法四、Aspose

Aspose使用的是破解版的,如果商用使用需要考虑版权问题。

综上所述,考虑到方法四有版权问题所以我首先排除了选四,一,二,三都需要安装openoffice,又由于方法一支持的文件类型更多而且无需开发,所以最终我选择了方法一,接下来我就单讲方法一的整个实现过程。

三:kkfileview 文件在线预览具体实现

1. windows环境部署运行

1.1 环境要求

1.  Java: 1.8+
2.  OpenOffice或LiberOffice(Windows下已内置)无需考虑此条

1.2 下载 kkFileView-4.0.0.zip(Windows版)

下载链接:kkFileView 发行版 - Gitee.com

或从我的资源里拿

1.3  解压 kkFileView-4.0.0.zip ,然后进入到kkFileView-4.0.0/bin/ 目录下,双击 startup.bat 即可启动该应用。浏览器能正常访问:http://localhost:8012  即可表示启动正常。

1.4  项目接入使用

如果你的项目需要接入文件预览项目,达到对docx,excel,ppt,jpg等文件的预览效果,那么通过在你的前端项目中加入下面的代码即可成功实现。

var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent
(Base64.encode(url)));

黄色背景部分为运行的kkFileView的地址

Base64 一定要用,否则文件打不开

完毕!

2. linux环境部署运行

 2.1 环境要求

1.  Java: 1.8+

2. OpenOffice或LiberOffice(CentOS或Ubuntu下, 联网了会自动下载安装,MacOS下需要
自行安装),由于我是CentOS系统且是内网,无法自动下载,于是我选择了手动下载安装包并离线安装LiberOffice。

2.2 下载 LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz(Linux版)

下载链接: Download LibreOffice | LibreOffice - Free Office Suite - Based on OpenOffice - Compatible with Microsoft

将LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz上传到服务器后解压,进入到LibreOffice_7.1.4_Linux_x86-64_rpm/RPMS/目录下,进行LibreOffice的安装:

>    cd /LibreOffice_7.1.4_Linux_x86-64_rpm/RPMS/

>    yum localinstall *.rpm

安装完成后会出现/opt/libreOffice7.1目录。

备注:如果想要卸载libreOffice,则:

    1.查看安装的(会显示安装了的列表):rpm -qa|grep libreoffice 

    2.卸载(根据列表显示的):yum remove libreoffice7.1-ure-7.1.4.2-2.x86_64

    3. yum remove 剩余列表显示的

    4.删除 /opt/ 目录下的libreOffice7.1 文件夹即可完成卸载。

2.3 下载 kkFileView-4.0.0.tar.gz (Linux或MacOS版)

下载链接:kkFileView 发行版 - Gitee.com

或从我附件里拿

2.4 上传 kkFileView-4.0.0.tar.gz 包到服务器后解压

tar -zxvf kkFileView-4.0.0.tar.gz

2.5 进入解压后的文件夹目录  /kkFileView-4.0.0/bin/ ,启动 kkFileView 应用

>  sh startup.sh

2.6 启动后可以去 /kkFileView-4.0.0/log/kkFileView.log查看日志,如果日志报如下错误,可以先将

kkFileView进程 kill掉,然后 kill 掉报错信息里的 2001端口的pid和2002端口的pid,然后再次重启即可

报错信息:Caused by:.....Error creating bean with name 'officePluginManager': Invocation of init method failed:....failed to start and connect

Caused by:org.artofsolving.jodconverter.office.OfficeException:failed to start and connect

Caused by:....office.OfficeException:could not establish connection

Caused by:.....a process with acceptString 'socket,host=127.0.0.1,port=2001' is already running;pid 299361

 2.7 浏览器能正常访问:http://服务器ip:8012 表明kkFileView应用运行正常,接下来参照上面的项目接入使用即可。

完毕!

非root用户安装 LiberOffice+kkfileview:

kkFileView文件在线预览-(非root用户安装)_你要控几你几己的博客-程序员宅基地

如有其它疑问微信咨询:shx0928

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37951794/article/details/126606939

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签