有偿问答
面经分享
技术探讨
资料领取
登录
分享一个超牛逼的 Java 文件在线预览项目
社长
1年前
⋅ 541 阅读
简介 ----- 基于 OpenOffice 服务将文件 (.doc、.docx、.xls、.ppt) 转化为 pdf、html 格式,然后直接在浏览器渲染输出。 内置功能 ---- * 文件上传功能 * 文件转换功能 * 文件预览功能 * 远程文件预览功能 代码集成 ---- 基于 SpringBoot + OpenOffice 实现的项目案例,配置文件 application.properties 引入: ``` # 默认不开启 需要开启的设置成true jodconverter.local.enabled=true # 开启多个openOffice进程,每个端口对应一个进程 jodconverter.local.portNumbers=8100,8200 # openOffice进程重启前的最大进程数 jodconverter.local.maxTasksPerProcess=100 ``` 项目启动会自动生成两个转换进程,下面是伪代码实现: ``` @RestController @RequestMapping("document") public class ConverterController { @Autowired private DocumentConverter documentConverter; /** * 文件上传 */ @RequestMapping("/upload") public Result upload(MultipartFile file) { try { if (file != null) { File parentFile = createParentFile(); String fileName = file.getOriginalFilename(); String suffix = fileName.substring(fileName.lastIndexOf(".")); String uuid = IdUtil.simpleUUID(); fileName = uuid + suffix; File docFile = new File(parentFile, fileName); FileUtil.writeFromStream(file.getInputStream(), docFile); /** * 年月日目录 */ String fileDay = DateUtil.thisYear() + "/" + (DateUtil.thisMonth() + 1) + "/" + DateUtil.thisDayOfMonth(); String imagePath = SystemConstant.FILE + "/document/" + fileDay + "/" + fileName; /** * 实时转换 */ logger.info("开始转换pdf......"); File toFile = new File(parentFile, uuid + ".pdf"); documentConverter.convert(docFile).to(toFile).execute(); logger.info("开始转换html......"); toFile = new File(parentFile, uuid + ".html"); converter( docFile,toFile); return Result.ok(imagePath); } else { return Result.error(); } } catch (Exception e) { logger.error("转换异常{}",e); return Result.error(); } } } ``` 软件截图 ---- ![](https://image-1300566513.cos.ap-guangzhou.myqcloud.com/upload/images/20210319/59ce8f100eb84f2a818adf9af17772e1.png) ![](https://image-1300566513.cos.ap-guangzhou.myqcloud.com/upload/images/20210319/17a8be05b14944d6ac9a5f6cdf14ff5f.png) ![](https://image-1300566513.cos.ap-guangzhou.myqcloud.com/upload/images/20210319/5ca2b64e02824a5a8a1d83a480bdb095.png) ![](https://image-1300566513.cos.ap-guangzhou.myqcloud.com/upload/images/20210319/c4a8b9e46fcb4d07b59f60b05202c18f.png) ![](https://image-1300566513.cos.ap-guangzhou.myqcloud.com/upload/images/20210319/e7dc204e68444ddf8661b53b506f63e1.png) ![](https://image-1300566513.cos.ap-guangzhou.myqcloud.com/upload/images/20210319/57a17aa6583e427f971932065869f651.png) ![](https://image-1300566513.cos.ap-guangzhou.myqcloud.com/upload/images/20210319/30c2ac307c224ff9b5a6d46adc43f324.png) 小结 -- 网上很多文章,Java 集成 OpenOffice 已经老得不能再老了,在 Linux 下还有各种启动问题,本案例只需要在系统中安装好相关服务,程序启动会自动生成 OpenOffice 进程。 源码 -- 源码地址:https://gitee.com/52itstyle/SPTools 演示地址:https://tools.cloudbed.vip 账号密码:admin admin2020 ---- (完)
阅读全部
全部评论:
0
条
我有话说:
@
发送
-- 目录 --
关注官方公众号:
Java问答社
接收最新有赏问答推送!
最新发布
1.
SpringBoot 接口数据加解密技巧,so easy!
2.
一个依赖搞定 Spring Boot 反爬虫,防止接口盗刷!
3.
Java8 Stream 极大简化了代码,它是如何实现的?
4.
马上大四了,秋招还是春招好?先找工作还是找实习?
5.
万字详解 Linux 常用指令(值得收藏)
6.
4年工作经验,多线程间的5种通信方式都说不出来,你敢信?
最新评论
部署文档没有了,您能提供下吗
部署文档没有了,能提供下吗
我测你的🐎
源码从哪里获取请问
想学
那篇石墨文档 没有权限查看哇