Java使用openoffice将office系列文档转换为PDF

搭建好 OpenOffice + jodconverter 后,转换doc(97-2003)时正常,但是转换 docx 时报了以下错误:

java.lang.IllegalArgumentException: unknown document format for file: E:\word.docx

openoffice2.2.2是支持转换的,但Maven 中没有 2.2.2版本的。

openoffice2.2.1依赖jar,以maven为例:

        <!--jodconverter2.2.1依赖--><dependency><groupId>com.artofsolving</groupId><artifactId>jodconverter</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>jurt</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>ridl</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>juh</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>unoil</artifactId><version>3.0.1</version></dependency><!--jodconverter2.2.1必须依赖slf4j-jdk14必须这个版本,不然源码中日志会报错,很low的一个问题--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><version>1.4.3</version></dependency>

jodconverter 在转换2007版本以后的xxx.docx文档会报错,原因大家都明03后缀名xxx.doc 07以后版本xxx.docx

解决方案

重写BasicDocumentFormatRegistry类中public DocumentFormat getFormatByFileExtension(String extension)方法,只要是后缀名包含doc则使用doc的documentFormat文档格式

在项目的java下com目录下新建artofsolving.jodconverter这两个包
package com.artofsolving.jodconverter;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;/*** @ClassName: online* @description: 重写 BasicDocumentFormatRegistry 文档格式* @Author: yandongfa* @Data: 2020-03-24 19:47* @Version: 1.0**/
public class BasicDocumentFormatRegistry implements DocumentFormatRegistry {private List/* <DocumentFormat> */ documentFormats = new ArrayList();public void addDocumentFormat(DocumentFormat documentFormat) {documentFormats.add(documentFormat);}protected List/* <DocumentFormat> */ getDocumentFormats() {return documentFormats;}/*** @param extension*            the file extension* @return the DocumentFormat for this extension, or null if the extension*         is not mapped*/public DocumentFormat getFormatByFileExtension(String extension) {if (extension == null) {return null;}//new DefaultDocumentFormatRegistry();//将文件名后缀统一转化if (extension.indexOf("doc") >= 0) {extension = "doc";}if (extension.indexOf("ppt") >= 0) {extension = "ppt";}if (extension.indexOf("xls") >= 0) {extension = "xls";}String lowerExtension = extension.toLowerCase();for (Iterator it = documentFormats.iterator(); it.hasNext();) {DocumentFormat format = (DocumentFormat) it.next();if (format.getFileExtension().equals(lowerExtension)) {return format;}}return null;}public DocumentFormat getFormatByMimeType(String mimeType) {for (Iterator it = documentFormats.iterator(); it.hasNext();) {DocumentFormat format = (DocumentFormat) it.next();if (format.getMimeType().equals(mimeType)) {return format;}}return null;}
}

解决jodconverter 2.2.1版本不支持docx、xlsx、pptx转换成PDF格式异常相关推荐

  1. 解决jodconverter 2.2.1 版本不支持docx、xlsx、pptx 转换成PDF格式异常

    文章目录 一.基础对比 1.版本对比 2.异常现象 二.分析定位 2.1. 找异常输出处 2.2. 找异常源头 2.3. api源头 三.实现流程 3.1. 思路 3.2. 新建包重写类 3.3. 完 ...

  2. Microsoft office 2007以上版本,EXCEL 将xlsx文件转换成pdf文件出现:尚未安装打印机。转换失败...

    原因:未添加打印机. 查看:查看打印机程序是否启动 解决办法: 1.安装打印机驱动程序:控制面板→打印机和传真→添加打印机→下一步→选择"连接到此计算机的本地打印机"→取消勾选&q ...

  3. Epub格式怎么转换成PDF格式?这个方法轻松解决

    如何将epub格式的文件转换成PDF格式呢?Epub格式文件是一种电子书格式,是电子出版物的缩写,虽然它也是电子书格式,但大家对它的使用率并不高,一般情况下电脑中都没有装有打开epub文件的软件,在浏 ...

  4. 怎么把ppt文件转换成pdf?解决方法有这几种

    想必对于PPT和PDF文件都比较熟悉了呗!那怎么解决将PPT格式转成PDF格式呢? 其实PPT转换成PDF格式的话还是很简单的,部分软件通过另存为命令就可以帮你轻松搞定了,可是要想转回去就没那么简单了 ...

  5. echart转换成pdf js_【jsPDF】jsPDF插件实现将html页面转换成PDF,并下载,支持分页...

    1.目的:在前段是 jQuery库 或者 VUE库 或者两者混合库,将html 页面和数据 转换成PDF格式并下载,支持分页 1.项目背景: 对客户报修记录进行分类统计,并生成各种饼图.柱状图.线性图 ...

  6. 怎么解决pdf转换成cad格式呢?

    在我们工作中,难免需要将PDF文件转换成CAD图纸,这毕竟两种完全不同格式的文件要转换起来,不了解操作方法感觉挺难的.那么如何快速解决pdf转换成cad格式呢? PDF的特点是在任何平台都等同于原稿, ...

  7. jodconverter 2.2.2 +openoffice4.0 doc转换成pdf

    一.环境 linux下安装openoffice 1.首先先下载好需要的rpm包:Apache_OpenOffice_4.0.0_Linux_x86-64_install-rpm_zh-CN.tar.g ...

  8. html长图转换成pdf,支持把各类文档转换成 HTML5(SVG)接口、长图片、PDF 。word转pdf、word转html5、pdf转网页html5、pdf转图片的接口...

    详情请到九云图官网了解一下.https://server.9yuntu.com/yuntu/resource/website/api.html 把 OFFICE / PDF / CAD 等文档转换成 ...

  9. xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题

    xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题 参考文章: (1)xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页 ...

最新文章

  1. java怎么改变数据类型_java数据类型之间的转换,是怎么回事啊? - 收获啦
  2. 离开百度三年多,吴恩达纽交所敲钟,身价再增20亿
  3. Linux下使用Speedtest测试网速教程
  4. jQuery源码分析-each函数
  5. 事件标志组的删除与状态查询
  6. 【干货】交换机密码恢复教程
  7. SpringBoot的配置优先级,一个具体的练习例子
  8. Android View体系‘铁三角‘
  9. Mybatis Plus条件查询
  10. 启动orcal服务和监听的命令的一种方式
  11. MTK芯片资料分享,2018MTK芯片资料大全
  12. 深度学习的兴起与流行原因.
  13. 如何将Word压缩到最小,这个方法你该知道
  14. html图片快速轮播特效代码,轻松实现javascript图片轮播特效
  15. 哇!协议和算法竟然不是一回事!千万别再说错了!
  16. 12、加权平均队列(WFQ-Weight Fair Queue)算法
  17. 性能测试面试题(测试框架总结)史上最全面试题
  18. Note++ 常用功能高级用法
  19. 服务计算 -- 搭建私有云
  20. 用计算机弹大白菜鸡毛菜,抖音大白菜鸡毛菜什么意思 大白菜鸡毛菜意思出处介绍...

热门文章

  1. 信息学奥赛一本通(1321:【例6.3】删数问题(Noip1994))
  2. 拦截导弹(信息学奥赛一本通-T1260)
  3. python np vstack_numpy vstack内部for循环
  4. python 梯度提升树_机器学习:梯度提升算法|python与r语言代码实现
  5. OpenCV辅助对象(help objects)(3)——Ptr
  6. OpenCV中基本数据结构(6)_Matx
  7. 笨方法“学习python笔记之字典
  8. Linux上安装Python3和pip3
  9. jupyter下Tensorflow-ssd测试整体流程,以及问题no module name**的解决
  10. 前端发送http的get请求 - 代码篇