原标题:分享一个超牛逼的 Java 文件在线预览项目
简介
基于 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")
publicclassConverterController{
@Autowired
privateDocumentConverter documentConverter;
/**
* 文件上传
*/
@RequestMapping( "/upload")
publicResult 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 = newFile(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 = newFile(parentFile, uuid + ".pdf");
documentConverter.convert(docFile).to(toFile).execute;
logger.info( "开始转换html......");
toFile = newFile(parentFile, uuid + ".html");
converter( docFile,toFile);
returnResult.ok(imagePath);
} else{
returnResult.error;
}
} catch(Exception e) {
logger.error( "转换异常{}",e);
returnResult.error;
}
}
}
软件截图
小结
网上很多文章,Java 集成 OpenOffice 已经老得不能再老了,在 Linux 下还有各种启动问题,本案例只需要在系统中安装好相关服务,程序启动会自动生成 OpenOffice 进程。
源码
源码地址:https://gitee.com/52itstyle/SPTools
演示地址:https://tools.cloudbed.vip
账号密码:admin admin2020
责任编辑: