分享一个超牛逼的 Java 文件在线预览项目

‍‍简介基于OpenOffice服务将文件(.doc、.docx、.xls、.ppt)转化为pdf、html格式,然后直接在浏览器渲染输出。内置功能文件上传功能文件转换功能文件预览…

大家好,又见面了,我是你们的朋友全栈君。

‍‍

简介

基于 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 文件在线预览项目

分享一个超牛逼的 Java 文件在线预览项目

分享一个超牛逼的 Java 文件在线预览项目

分享一个超牛逼的 Java 文件在线预览项目

分享一个超牛逼的 Java 文件在线预览项目

分享一个超牛逼的 Java 文件在线预览项目

分享一个超牛逼的 Java 文件在线预览项目

小结

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

源码

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

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

账号密码:admin admin2020

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127459.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux vim退出命令(保存与不保存)「建议收藏」

    Linux vim退出命令(保存与不保存)「建议收藏」按ESC键跳到命令模式,然后输入::w-保存文件,不退出vim:wfile-将修改另外保存到file中,不退出vim:w!-强制保存,不退出vim:wq-保存文件,退出vim:wq!-强制保存文件,退出vim:q-不保存文件,退出vim:q!-不保存文件,强制退出vim:e!-放弃所有修改,从上次保存文件开始再编辑…

    2022年6月14日
    132
  • axios实现跨域三种方法_react antdesign

    axios实现跨域三种方法_react antdesign1.启动springboot后端,提供接口2.在config文件夹下创建proxy.tx文件,如果存在,在dev中添加axios环境代理,例如在我的demo中添加了/asd映射到http://localhost:8889/***在生产环境代理是无法生效的,所以这里没有生产环境的配置*Theagentcannottakeeffectintheproductionenvironment*sothereisnoconfigurationoftheproduc

    2025年10月26日
    4
  • VUE中diff比较

    VUE中diff比较

    2021年6月28日
    115
  • 认识UART接口[通俗易懂]

    认识UART接口[通俗易懂]内容待添加

    2025年11月18日
    4
  • id门禁卡复制到手机_怎么把手机变成门禁卡 手机NFC复制门禁卡图文教程

    id门禁卡复制到手机_怎么把手机变成门禁卡 手机NFC复制门禁卡图文教程无论是在学校、小区或者是单位里面,一般都会有一道安全的门禁,保证范围内部的安全。但是每次都需要找到专用的门禁卡开门,经常容易忘记或者不小心弄丢了。今天,小编教大家一个技巧,教你如何把门禁卡悄无声息的放在手机上,这样以后就可以用手机当门禁卡了,这样是不是方便很多呢?下面是详细的方法步骤。通过修改手机NFCID过门禁大概流程就是利用手机上的APP(推荐:NFCTagInfo)读取出门禁卡的ID,然…

    2022年6月10日
    340
  • apache 负载均衡_windows apache 实现负载均衡

    apache 负载均衡_windows apache 实现负载均衡最近做的一个项目可能需要用Aapche实现访问请求分流提高访问性能。因此自己研究了一下。现在把我自己配置成功的过程分享一下。首先要下载Apache.建议从官网下载http://httpd.apache.org/download.cgi我安装的是最新的版本2.4.25。安装方法参照http://jingyan.baidu.com/article/296

    2025年8月26日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号