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


相关推荐

  • char转换为数字_char字符转int

    char转换为数字_char字符转int刷题遇到一个考点是char型数字转int进行计算的问题。一看就会,一做就错,显然是在这里的认识薄弱了。将一番搜索的结果记录下来,以备再忘来打脸。char的定义参考:Java基本数据类型之char。首先,char跟int这两种类型可以直接互转:charch1=’a’;inti=ch1;charch2=(char)i;那么面对charin=‘2’需要转成int做计算,那么很…

    2022年9月27日
    2
  • datagridview 自定义格式_怎么用有效样式建立目录

    datagridview 自定义格式_怎么用有效样式建立目录GridView是很便利的数据控件,在MIS中的应用很广泛,其样式编写很简单,但是每次新增都要重新编写,工作很是烦琐,而且由于其本身的特性,样式并不好编写,最好的办法就是在单双行、Header、Pager、Footer等栏目引用单独的样式,如下:

    2022年9月15日
    3
  • Idea激活码永久有效Idea2021.2.4激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2021.2.4激活码教程-持续更新,一步到位Idea激活码永久有效2021.2.4激活码教程-Windows版永久激活-持续更新,Idea激活码2021.2.4成功激活

    2022年6月17日
    117
  • webstorm激活码【注册码】

    webstorm激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    42
  • 安卓天天练练(五)CompoundButton

    安卓天天练练(五)CompoundButtonToggleButton让我想起了从前jQuery还没有取消toggle方法时是怎么偷懒的。。注意:如果LinearLayout,与RelativeLayout不同,必须有orientation。用可视化顶部的横着隔开或者竖着隔开的方形按钮也可以选择,例如android:orientation=”vertical”三目运算符前面和js一样,那个state是不需要额外带括号的按…

    2022年5月25日
    36
  • IDEA(Jetbrains系列,pycharm,goland…)翻译插件推荐Translation 安装和使用以及快捷键绑定…

    IDEA(Jetbrains系列,pycharm,goland…)翻译插件推荐Translation 安装和使用以及快捷键绑定…首先第一步是安装该插件如图:File->setting–>plugins进入该页面,点击如图所示按钮.然后搜索Translation如图:我们需要的结果一般都不会排在前面,需要往下拉再找找,名字应当也是Translation,我这边已经安装了所以没有这个图标,找到Translation插件以后,就可以点击Install就可以…

    2022年8月28日
    6

发表回复

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

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