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

文章讨论了在Java中实现Excel、Word、TXT、PPT等文件在线预览时遇到的问题,特别是对于07版本后的docx、xlsx、pptx格式不支持。问题源于输入格式为null,因为这些格式未包含在默认支持的21种文件格式中。解决方案是重写BasicDocumentFormatRegistry类,将传入的xlsx、docx、pptx转换为xls、doc、ppt格式后缀名,以绕过格式检查。
摘要由CSDN通过智能技术生成

前面一篇文章讲解了关于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练习生》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值