springboot实现文件预览

如果直接预览.pdf文件

由于安全问题,当url为本地路径的时候,前端不能直接使用window.open(url)打开文件。
解决方案:

-pom.xml导入

<!--    文件格式转换--><dependency><groupId>com.artofsolving</groupId><artifactId>jodconverter</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>jurt</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>ridl</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>juh</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>unoil</artifactId><version>3.0.1</version></dependency>
  • 写一个config
@Configuration
public class MyConfig  implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/Path/**").addResourceLocations("file:/E:/file_PDF/");}
}

前面的路径为返回前端的虚拟路径,后面的 路径为保存文件的本地路径。

需要文件格式转换

  • 需要下载officeopen
  • 下载完成后进入officeopen.exe 文件目录(我的为C:\Program Files (x86)\OpenOffice 4\program\)
  • 在目录下cmd执行soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
  • 代码进行转换
@RequestMapping("/showPDF")public String changeType(String fid,String fileName,HttpServletRequest request) throws ConnectException {String srcPath = "E:\\file_upload\\" + fid + "_" + fileName;File inputFile = new File(srcPath);if (!inputFile.exists()){System.out.println("源文件不存在!");return "";}
//  把文件名转化为.pdf结尾String targetFileName = fileName.substring(0,fileName.lastIndexOf('.')) + ".pdf";String targetPath = "E:\\file_PDF\\"+fid + "_" + targetFileName;File outputFile = new File(targetPath);
// 如果这个文件之前转换过
//      直接展示if (outputFile.exists()){return "/Path/" + fid + "_" + targetFileName;}if (!outputFile.getParentFile().exists()){outputFile.getParentFile().mkdirs();}// 调用openoffice服务线程
//      进入officeopen 目录启动
//soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizardString command = "C:\\Program Files (x86)\\OpenOffice 4\\program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";Process p = null;try {p = Runtime.getRuntime().exec(command);} catch (IOException e) {e.printStackTrace();}// 连接openoffice服务OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);connection.connect();// 支持转换txt doc ppt xls文件到pdfDocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);converter.convert(inputFile, outputFile);// 关闭连接connection.disconnect();// 关闭进程p.destroy();System.out.println("转换完成!");return "/Path/" + fid + "_" + targetFileName;}

注意:
由于jodconverter 2.2.1版本不能将.doxc 文件转化成pdf。将版本改为2.2.2
2.2.2版本的仓库里面没有需要自己在网上然后下载jar包自己导入

springboot实现文件预览相关推荐

  1. springboot搭建文件预览解决方案,支持目前主流格式office文件,txt文件,png,jpg等图片以及压缩文件的在线预览功能

    应用场景及实现思路 应用场景:给定一个网址,输入网址后立即显示预览文件. 实现思路: 1.将文件下载到本地,存储到某个指定目录  2.进行文件转换,此处是重点      3.进行文件展示 实现过程 首 ...

  2. Vue+SpringBoot实现文件预览

    一.前端代码 此处比较简陋,就用了一个window.open("后端访问地址") 二.后端代码 1.设置访问静态资源的地址映射 新建了一个配置类,用于映射静态资源的地址. @Con ...

  3. springboot使用pdfjs预览office文件

    由于springboot使用aspose预览office文件可以实现文件预览,但部分浏览器却不兼容,所以使用pdfjs预览office文件,兼容浏览器. 在springboot使用aspose预览of ...

  4. springboot使用aspose预览office文件

    springboot项目使用aspose预览office文件,运行实现预览效果: 主要实现原理是:浏览器可以直接预览pdf,所以使用aspose把office文件转换为pdf文件,进行预览. 1.主要 ...

  5. vue+springboot文件预览

    一.下载OpenOffice 4 脚本之家下载地址:https://www.jb51.net/softs/595118.html 百度网盘: 链接:https://pan.baidu.com/s/1x ...

  6. java文件预览_java 在线预览doc,pdf

    先说一说如何实现在线预览doc网上查了很多资料,基本思路就是将doc 转为 pdf,由于低版本浏览器不支持预览pdf,所以基本是再将pdf 转为 swf. 由于我这次做的需求只需要兼容chrome即可 ...

  7. java使用aspose实现文件预览工功能

    前后端分离项目实现文件预览 效果图: 1.实现思路 用户上传的文件类型多种多样,这里主要是实现对office文件的预览,预览一般是不需要编辑的,所以预览时pdf文件最为方便,我们的思路就是将用户上传的 ...

  8. 基于开源项目kkFileView打造文件预览

    1.需求 一般管理系统都有文件上传功能,基于此一般会诞生一个需求:用户需要在线预览自己上传的文件.需求很合理,但是没那么好做,原因在于浏览器默认支持图片.pdf等少量格式预览,而实际情况是你并不能要求 ...

  9. (0095)iOS开发之本地文件预览的三种方法(3)

    (0090)iOS开发之本地文件预览的三种方法(1) (0094)iOS开发之本地文件预览的三种方法(2) 用功能强大的Webview来实现文件预览功能 我导入的 ios.pdf 前两种可以打开,但是 ...

最新文章

  1. 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)
  2. CV:计算机视觉技术之图像基础知识(二)—图像内核的可视化解释
  3. java filereader类_Java FileReader类
  4. 正确理解Python函数是第一类对象
  5. Android笔记 apk的反编译 | 更新于2017/7/25
  6. 【OpenCV】图像金字塔
  7. hercules z/OS 安装 RPG 编译器
  8. 阻止路由跳转得方式_vue中路由跳转的三种方式 简洁易懂
  9. Computing Platform------系统平台及其系列
  10. OpenCV 与 Matlab 中最小二乘法拟合直线数据不一致的问题
  11. SwiftyJson 的初步理解
  12. linux中 halt shutdown
  13. 离线编译安装lrzsz
  14. 苹果怎么关闭自动更新系统_iPhone系统关闭自动更新教程
  15. uint64 和字符串相互转换
  16. android 读写cpu卡,RAM/CPU和SD卡读写性能提升_联想 K860i_手机Android频道-中关村在线...
  17. 程序员最重要的核心竞争力是什么?
  18. 中外对比:国内云计算平台的三大特点
  19. 朱 蚌埠机器人餐厅_据说,这是蚌埠人气爆棚10家自助餐厅!你吃过几家?!
  20. cocos2dx 简介

热门文章

  1. 掌财社:怎么写BUI折叠菜单插件?案例分析!
  2. 如何对班级表中的班级名称进行分组查询?
  3. linux在什么环境运行,Linux的应用环境
  4. Java后端手机号校验工具类
  5. 单体、集群、分布式、SOA、微服务之间的联系与区别
  6. 个税专项附加扣除怎么搞?新华社逐条解析
  7. FPGA实现边缘检测Sobel算法
  8. lite version是什么
  9. 6个最优秀的微信小程序UI组件库
  10. 大疆无人机 从Mavic Pro 兼容 Mavic 2 zoom (解决方案)