KKFileView前端实现Word,Excel,PPT在线预览(实测可⽤于内⽹项⽬)⽬前⽹上现有的⽂件在线预览⽅式有以下⼏种:
1、通过a标签href属性直接打开⽂件
这种⽅式是通过把⽂件上传到服务器,在后台将⽂件转为pdf。通过浏览器可直接查看pdf⽂件的特点使⽤a标签直接就可以打开预览。
缺点就是需要⼿动将⽂件转为pdf⽂件 还有涉及到编码及内容乱码问题。
2、通过jquery插件dia.js实现
这个插件可以实现pdf预览功能(包括其他各种媒体⽂件)但是对word等类型的⽂件⽆能为⼒。
3、直接通过页⾯内嵌iframe
对页⾯的UI和内容展⽰实现不太好,类似于a标签查看pdf还可以。
4、使⽤微软在线预览接⼝
这种也是⽐较⽅便和常⽤的⼀种⽅式,word、ppt、xls⽂件实现在线预览的⽅式⽐较简单可以直接通过
调⽤微软的在线预览功能实现 (预览前提:资源必须是公共可访问的)。如果项⽬是要部署在内⽹下使⽤那就⽆能为⼒了。
以上这⼏种在线预览的⽅式虽然都能实现需求 但是都各⾃有各⾃的局限性。
本次我采⽤的是 第三⽅⼯具来实现在线预览,主要考虑到了两个因素:1、项⽬是内⽹的项⽬资源⽂件不能公共访问。2、预览的⽂件类型不⼀致;
KKFileView是基于SpringBoot和OpenOffice编写的⽂件转换和在线预览⼯具;
使⽤⽅式也⾮常简单,官⽅提供打包好的服务及配置只需要把他部署在服务器上就可以使⽤了。并且他是免费开源的。
kkFileView是git的开源(不花钱)在线预览项⽬ ⽀持格式:doc、docx、ppt、pptx、xls、xlsx、zip、rar、mp4、mp3以及众多类⽂本如txt、html、xml、java、properties、sql、js、md、json、conf、ini、vue、php、py、bat、gitignore
Windows⽬录,进⼊到bin下 点击startup.bat执⾏脚本就可以启动,默认端⼝是8012;启动成功后访问127.0.0.1:8012就可以看到测试主页了。
虽然windows版中也有linux的启动脚本 但是不建议将Windows版放到linux中使⽤sh脚本启动。
注:Windows版⾃带openOffice,所以不需要⾃⼰再⼿动安装。
前台只需要在预览的⽅法中调⽤服务即可:
注:⽂件的请求地址需要⽤restful的格式,⽽不能⽤key=value的拼接形式;并且还需要以⽂件格式的拓展名结尾(后台接⼝接收可以不使⽤,但是必须有⼀个参数来放⽂件拓展名)。要预览word就要以docx/doc 预览excel就要以xls/xlsx结尾,kkFileView要以请求地址中的拓展名判断要预览那种类型的⽂件。
php文件管理系统mvc 源码>html电商网页设计代码
⽂件的请求地址必须是 直接在浏览器上请求可以下载的那种。
/
/要预览⽂件的访问地址,访问项⽬可以将⽂件下载的地址;
var url ='127.0.0.1:8080/file/test.docx';
霹雳100万字数以上的小说//调⽤本地的kkFileView服务即可达到预览的效果jquery下载文件请求
window.open('127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(url));
//带有⽔印的预览
//window.open('127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(url))+'&watermarkTxt=测试⽔印';
后台需要编写⽂件下载接⼝:
@RequestMapping("/file/{fileName}")
public void viewOfdDoc(@PathVariable("fileName")String fileName, HttpServletRequest req, HttpServletResponse response)throws IOException {
// 获取upload⽂件夹真实路径
String upload = ServletContext().getRealPath("/upload");
开源操作系统// 获取上传⽂件实
// 拼接路径创建File对象
File file =new File(upload +"/reference-file/公司各部门检查评估记录表.docx");
InputStream inputStream =new FileInputStream(file);
OutputStream outputStream = OutputStream();
response.setContentType("application/x-download");
response.addHeader("Content-Disposition","attachment;filename="+new String("公司各部门检查评估记录表.docx".getBytes("UTF-8"),"iso-8859-1"));
outputStream.flush();
}
到此 ⼀个完整的内⽹⽂件在线预览功能就完成了。
遇到的问题:
1、接⼝权限问题:
在搭建测试的过程中发现路径明明是完整的可以在浏览器上访问的,发现放到KKFileView中就是不⾏。后来发现是项⽬中有浏览器 ⽽该接⼝访问的时候被拦截了。因为把⽂件请求的路径给KKFileView,他就会请求该地址去下载⽂件。需要把项⽬中的⽂件预览接⼝放开python安装教程2022
2、预览word⽂件部门字体乱码:
成功在本地实现预览后,放到服务器上测试发现预览⼀篇word 其中部门内容全是⼀些⼩⽅块 。这是因为服务器字体不全从⽽导致
的,KKFileView在转换的时候拿不到想要的字体会乱码。根据官⽹提供的字体包安装后还是不⾏。
最终的解决⽅案是:将linux服务器上的字体包全部卸载删除,将Windows上的字体包全部安装到linux上同时把官⽹提供的常⽤字体包也可以安装上去(这块关于Linux字体的操作具体可参考⽹上其他⽂章,或官⽹的⽂档)。然后重启⼀下kkFileView服务就OK了。
附:
kkFileView和OpenOfice已整理好对应的版本和⽂件

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。