springboot实现文件预览
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实现文件预览相关推荐
- springboot搭建文件预览解决方案,支持目前主流格式office文件,txt文件,png,jpg等图片以及压缩文件的在线预览功能
应用场景及实现思路 应用场景:给定一个网址,输入网址后立即显示预览文件. 实现思路: 1.将文件下载到本地,存储到某个指定目录 2.进行文件转换,此处是重点 3.进行文件展示 实现过程 首 ...
- Vue+SpringBoot实现文件预览
一.前端代码 此处比较简陋,就用了一个window.open("后端访问地址") 二.后端代码 1.设置访问静态资源的地址映射 新建了一个配置类,用于映射静态资源的地址. @Con ...
- springboot使用pdfjs预览office文件
由于springboot使用aspose预览office文件可以实现文件预览,但部分浏览器却不兼容,所以使用pdfjs预览office文件,兼容浏览器. 在springboot使用aspose预览of ...
- springboot使用aspose预览office文件
springboot项目使用aspose预览office文件,运行实现预览效果: 主要实现原理是:浏览器可以直接预览pdf,所以使用aspose把office文件转换为pdf文件,进行预览. 1.主要 ...
- vue+springboot文件预览
一.下载OpenOffice 4 脚本之家下载地址:https://www.jb51.net/softs/595118.html 百度网盘: 链接:https://pan.baidu.com/s/1x ...
- java文件预览_java 在线预览doc,pdf
先说一说如何实现在线预览doc网上查了很多资料,基本思路就是将doc 转为 pdf,由于低版本浏览器不支持预览pdf,所以基本是再将pdf 转为 swf. 由于我这次做的需求只需要兼容chrome即可 ...
- java使用aspose实现文件预览工功能
前后端分离项目实现文件预览 效果图: 1.实现思路 用户上传的文件类型多种多样,这里主要是实现对office文件的预览,预览一般是不需要编辑的,所以预览时pdf文件最为方便,我们的思路就是将用户上传的 ...
- 基于开源项目kkFileView打造文件预览
1.需求 一般管理系统都有文件上传功能,基于此一般会诞生一个需求:用户需要在线预览自己上传的文件.需求很合理,但是没那么好做,原因在于浏览器默认支持图片.pdf等少量格式预览,而实际情况是你并不能要求 ...
- (0095)iOS开发之本地文件预览的三种方法(3)
(0090)iOS开发之本地文件预览的三种方法(1) (0094)iOS开发之本地文件预览的三种方法(2) 用功能强大的Webview来实现文件预览功能 我导入的 ios.pdf 前两种可以打开,但是 ...
最新文章
- 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)
- CV:计算机视觉技术之图像基础知识(二)—图像内核的可视化解释
- java filereader类_Java FileReader类
- 正确理解Python函数是第一类对象
- Android笔记 apk的反编译 | 更新于2017/7/25
- 【OpenCV】图像金字塔
- hercules z/OS 安装 RPG 编译器
- 阻止路由跳转得方式_vue中路由跳转的三种方式 简洁易懂
- Computing Platform------系统平台及其系列
- OpenCV 与 Matlab 中最小二乘法拟合直线数据不一致的问题
- SwiftyJson 的初步理解
- linux中 halt shutdown
- 离线编译安装lrzsz
- 苹果怎么关闭自动更新系统_iPhone系统关闭自动更新教程
- uint64 和字符串相互转换
- android 读写cpu卡,RAM/CPU和SD卡读写性能提升_联想 K860i_手机Android频道-中关村在线...
- 程序员最重要的核心竞争力是什么?
- 中外对比:国内云计算平台的三大特点
- 朱 蚌埠机器人餐厅_据说,这是蚌埠人气爆棚10家自助餐厅!你吃过几家?!
- cocos2dx 简介