分享一个超牛逼的 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Docker启动mysql服务「建议收藏」

    Docker启动mysql服务「建议收藏」1:确保自己的服务器已经安装好了docker输入dockerinfo或者dockerversion2:然后我们去dockerhub去下载自己的想要的mysql镜像找到offic的版本,点击进入3:经命令放入linux中执行。[root@iZ2zehajf73atd9gbz1qdbZredisconf]#dockerpullmysql:5.64:然后检测自己是否下载成功:dockerimages5:dockerrun–name…

    2022年10月6日
    0
  • 【Redis】内存回收策略

    【Redis】内存回收策略【Redis】内存回收策略

    2022年4月25日
    46
  • Redis 集群搭建

    Redis集群搭建前言最近通过看视频学习了一下Redis,前天使用CentOS7配置了一下Redis4.0.9单机版(相关链接:CentOS7配置Redis4.0.9),今天则通过之前的笔记,视频以及redis官网上集群搭建的教程(https://redis.io/topics/cluster-tutorial)的资料来搭建一下Redis集群。…

    2022年4月7日
    34
  • Python数字/字符串补零操作[通俗易懂]

    Python数字/字符串补零操作[通俗易懂]字符串补零可以使用zfill()函数来给字符串补零>>>str=”123″>>>print(str.zfill(8))00000123还能把整数转化成字符来使用zfill()补零>>>num=123>>>print(str(num).zfill(8))00000123数字补零对于数字可以使用格式化的方式来进行补零:>>>number=123>>&

    2022年10月12日
    0
  • 单工半双工和全双工的区别_什么是单工双工半双工

    单工半双工和全双工的区别_什么是单工双工半双工一、单工1、数据只在一个方向上传输,不能实现双方通信。2、栗子:电视、广播。二、半双工1、允许数据在两个方向上传输,但是同一时间数据只能在一个方向上传输,其实际上是切换的单工。2、栗子:对讲

    2022年8月2日
    4
  • 搭建个人网站需要的三个步骤

    记录一下自己的个人网站的搭建过程。其实网上有很多教程了,有的讲的好,很详细,有的就很笼统了,当然还有抄别人的,我这篇就纯属记录一下自己搭建的过程。搭建一个个人网站要知道以下三个步骤,做个比喻吧:域

    2021年12月26日
    81

发表回复

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

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