github掘金:一个超赞的 Java 文件在线预览项目

本文介绍如何使用SpringBoot与OpenOffice服务实现文件(.doc, .docx, .xls, .ppt)的自动转换为PDF和HTML,并在浏览器渲染。涉及配置、上传功能及代码示例,包括自动生成转换进程和文件预览功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击上方关注 “终端研发部

设为“星标”,和你一起掌握更多数据库知识

简介

基于 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();
        }
    }
}

软件截图


小结

网上很多文章,Java 集成 OpenOffice 已经老得不能再老了,在 Linux 下还有各种启动问题,本案例只需要在系统中安装好相关服务,程序启动会自动生成 OpenOffice 进程。

源码

源码地址:https://gitee.com/52itstyle/SPTools

演示地址:https://tools.cloudbed.vip

账号密码:admin admin2020

BAT等大厂Java面试经验总结 想获取 Java大厂面试题学习资料扫下方二维码回复「BAT」就好了回复 【加群】获取github掘金交流群回复 【电子书】获取2020电子书教程回复 【C】获取全套C语言学习知识手册回复 【Java】获取java相关的视频教程和资料回复 【爬虫】获取SpringCloud相关多的学习资料回复 【Python】即可获得Python基础到进阶的学习教程回复 【idea破解】即可获得intellij idea相关的破解教程关注我gitHub掘金,每天发掘一篇好项目,学习技术不迷路!



回复 【idea激活】即可获得idea的激活方式
回复 【Java】获取java相关的视频教程和资料
回复 【SpringCloud】获取SpringCloud相关多的学习资料
回复 【python】获取全套0基础Python知识手册
回复 【2020】获取2020java相关面试题教程
回复 【加群】即可加入终端研发部相关的技术交流群
阅读更多
为什么HTTPS是安全的
因为BitMap,白白搭进去8台服务器...
《某厂内部SQL大全 》.PDF
字节跳动一面:i++ 是线程安全的吗?
大家好,欢迎加我微信,很高兴认识你!
在华为鸿蒙 OS 上尝鲜,我的第一个“hello world”,起飞!

相信自己,没有做不到的,只有想不到的在这里获得的不仅仅是技术!



如果喜欢就给个“在看”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值