加更实现docx、xlsx、pptx在线预览

news/2024/7/21 4:22:01 标签: java, excel, 开发语言

前面一篇文章讲解了关于java实现excel、word、txt、ppt等办公文件在线预览功能,上文也提到了不支持07版本之后的docx/xslx/pptx。

异常问题

SocketOpenOfficeConnection : connected

java.lang.IllegalArgumentException: inputFormat is null at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.ensureNotNull(AbstractOpenOfficeDocumentConverter.java:113)

分析的定位问题点

从报错代码中可以看出由于inputFormat参数为null,导致inputFormat is null 校验异常,进一步分析,既然是由于参数为null触发的这个异常,那这个参数到底从获取的呢?

跟着代码进入到程序中,可以看到BasicDocumentFormatRegistry抽象类的getFormatByFileExtension方法,功能就是提供文件扩展名

支持文件格式有21种,但是,咱们传入的文件类型xlsx、docx、pptx这3种格式,均不在这21种格式之内,因此,导致返回的sourceFormat参数是null

实现思路

这个校验是由于传入的文件类型,不在默认21种文件格式之内

咱们需要想个办法,让他跳过这个校验,既然默认提供的21种格式,又不能新增文件格式,能不能让咱们传入的格式在默认提供的21种格式之内呢?

当传入的参数为xlsx、docx、pptx文件格式时,返回的对应的文件格式为xls、doc、ppt格式后缀名,就可实现了

既然DefaultDocumentFormatRegistry继承BasicDocumentFormatRegistry类,那咱们就重写BasicDocumentFormatRegistry类,在判断后缀名之前对传入的文件后缀名做处理“返回的对应的文件格式为xls、doc、ppt格式后缀名”

新建包重写类

新建com.artofsolving.jodconverter重写BasicDocumentFormatRegistry类

欢迎大家点击下方卡片,关注《coder练习生》


http://www.niftyadmin.cn/n/197136.html

相关文章

go binary包

binary包使用与详解 最近在看一个第三方包的库源码,bigcache,发现其中用到了binary 里面的函数,所以准备研究一下。 可以看到binary 包位于encoding/binary,也就是表示这个包的作用是编辑码作用的,看到文档给出的解释…

【操作系统】IO模型篇之从BIO、NIO、AIO到内核select、epoll剖析

【操作系统】IO模型篇之从BIO、NIO、AIO到内核select、epoll剖析! 参考资料: Java网络编程-IO模型篇 【Redis】网络模型:Redis的IO多路复用 【操作系统】全面解析IO 多路复用:select、poll、epoll 文章目录【操作系统】IO模型篇之…

PDF转PPT:多种方案让你任选

在现代办公和学习中,我们常常需要将PDF文件转换为PPT格式,以便进行演示或编辑等操作。以下是几种PDF转PPT的方案,你可以根据自己的需求来选择其中一种。 一、使用Adobe Acrobat Pro DC Adobe Acrobat Pro DC是一款强大的PDF编辑软件&#x…

论文笔记_SLAM_2022_An Overview on Visual SLAM: From Tradition to Semantic

基本情况 出处:Chen W, Shang G, Ji A, et al. An overview on visual slam: From tradition to semantic[J]. Remote Sensing, 2022, 14(13): 3010. 作者单位:泉州信息工程学院/南京信息工程大学/南京航空航天大学 参考:https://blog.csd…

傅里叶谱方法-傅里叶谱方法求解二维 Schnakenberg 模型及其Matlab程序实现

3.3.4 二维 Schnakenberg 模型 Schnakenberg模型是一种描述化学反应动力学的数学模型,旨在研究化学反应中自组织现象和空间模式的形成。 该模型最早由德国化学家Heinrich Otto Wieland提出,后由德国数学家Theodor Schnakenberg在其博士论文中进行了推导…

Maven工具复习

Maven从入门到放弃Maven概述Maven 的配置Maven的基本使用IDEA 配置MAVENMaven坐标IDEA 创建MavenIDEA 导入Maven关于右侧Maven小标签(也就是Maven面板)找不到问题的解决办法关于不小心把IDEA主菜单搞消失的解决办法依赖管理Maven概述 Maven是一个工具提供了一套标准的项目结构…

Java_Spring:13. Spring5 的新特性

目录 1 与 JDK 相关的升级 1.1 jdk 版本要求: 1.2 利用 jdk8 版本更新的内容 2 核心容器的更新 3 JetBrains Kotlin 语言支持 4 响应式编程风格 5 Junit5 支持 6 依赖类库的更新 1 与 JDK 相关的升级 1.1 jdk 版本要求: spring5.0 在 2017 年 9 月…

Linux uart驱动框架

Linux内核提供了标准的UART驱动程序,可以通过以下步骤编写: 首先需要定义一个结构体来存储串口设备数据。在该结构体中,包含一个uart_port结构体,用于与Linux内核通信,并包含一些设备特定的数据(例如波特率…