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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 解决jodconverter 2.2.1版本不支持docx、xlsx、pptx转换成PDF格式异常

最近在开发Android项目时,需要在应用内部打开Office资源文件。在查询了相关资料后得出了两种思路:


1.在后台统一资源格式,将Office格式转成PDF格式,Android端直接利用PDFView查看资源文件。后端利用 OpenOffice + jodconverter 将Office转为PDF。


2.Android端利用POI解析Office,很不幸POI在Android中无法解析PPT文件,而且Word、Excel解析后排版不美观,解析能力差。


本人采取第一种方案:

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


java.lang.IllegalArgumentException: unknowndocumentformatforfile: E:\word.docx

查询了相关资料后,发现 jodconverter 2.2.1 版本不支持 docx、xlsx、pptx 转换。Maven 中也没有 2.2.2版本的,折腾了一番后终于找到解决方案,就是重写 jodconverter 中的BasicDocumentFormatRegistry方法

packagecom.artofsolving.jodconverter;
importjava.util.ArrayList;
importjava.util.Iterator;
importjava.util.List;
/*** CQL* 重写 BasicDocumentFormatRegistry 文档格式*/publicclassBasicDocumentFormatRegistryimplementsDocumentFormatRegistry {
privateList/* <DocumentFormat> */documentFormats=newArrayList();
publicvoidaddDocumentFormat(DocumentFormatdocumentFormat) {
documentFormats.add(documentFormat);
    }
protectedList/* <DocumentFormat> */getDocumentFormats() {
returndocumentFormats;
    }
/*** @param extension*            the file extension* @return the DocumentFormat for this extension, or null if the extension*         is not mapped*/publicDocumentFormatgetFormatByFileExtension(Stringextension) {
if (extension==null) {
returnnull;
        }
//new DefaultDocumentFormatRegistry();//将文件名后缀统一转化if (extension.indexOf("doc") >=0) {
extension="doc";
        }
if (extension.indexOf("ppt") >=0) {
extension="ppt";
        }
if (extension.indexOf("xls") >=0) {
extension="xls";
        }
StringlowerExtension=extension.toLowerCase();
for (Iteratorit=documentFormats.iterator(); it.hasNext();) {
DocumentFormatformat= (DocumentFormat) it.next();
if (format.getFileExtension().equals(lowerExtension)) {
returnformat;
            }
        }
returnnull;
    }
publicDocumentFormatgetFormatByMimeType(StringmimeType) {
for (Iteratorit=documentFormats.iterator(); it.hasNext();) {
DocumentFormatformat= (DocumentFormat) it.next();
if (format.getMimeType().equals(mimeType)) {
returnformat;
            }
        }
returnnull;
    }
}

注意:需要创建一个同名的包

亲测,docx、xlsx、ppts均转换成功!

目录
相关文章
|
3天前
|
人工智能 文字识别 数据挖掘
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
MarkItDown 是微软开源的多功能文档转换工具,支持将 PDF、PPT、Word、Excel、图像、音频等多种格式的文件转换为 Markdown 格式,具备 OCR 文字识别、语音转文字和元数据提取等功能。
47 9
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
|
15天前
|
数据挖掘 BI
.net8 Syncfusion生成pdf/doc/xls/ppt最新版本
通过使用 Syncfusion,您可以高效地生成各种文档,满足不同的业务需求。这些工具不仅易于使用,还具有高性能和高度可扩展性,是处理文档的理想选择。
38 16
|
2月前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
130 2
|
2月前
|
Python
《Cython 从入门到精通》PDF 版本新鲜出炉啦!!!
《Cython 从入门到精通》PDF 版本新鲜出炉啦!!!
52 1
|
2月前
|
资源调度 前端开发 JavaScript
安利一款基于canvas/svg的富文本编辑器-支持在线导出PDF、DOCX
高性能:利用Canvas和SVG进行图形和矢量图形的渲染,提供高性能的绘图能力。 可扩展性:Canvas-Editor是一个开源项目,支持通过插件机制扩展编辑器的功能,如DOCX、PDF导出、表格分页等。 丰富的文本编辑功能:支持多种文本编辑操作,如插入表格、分页、性能优化等。
279 0
|
4月前
|
Linux Python Windows
Python PDF文件转Word格式,只需要3秒(附打包)
Python PDF文件转Word格式,只需要3秒(附打包)
96 3
Python PDF文件转Word格式,只需要3秒(附打包)
|
5月前
|
Unix Linux Shell
Sphinx是一个Python文档生成工具,它可以解析reStructuredText或Markdown格式的源代码注释,并生成多种输出格式,如HTML、LaTeX、PDF、ePub等。
Sphinx是一个Python文档生成工具,它可以解析reStructuredText或Markdown格式的源代码注释,并生成多种输出格式,如HTML、LaTeX、PDF、ePub等。
|
7天前
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
38 16
|
2月前
|
Java Apache Maven
将word文档转换成pdf文件方法
在Java中,将Word文档转换为PDF文件可采用多种方法:1) 使用Apache POI和iText库,适合处理基本转换需求;2) Aspose.Words for Java,提供更高级的功能和性能;3) 利用LibreOffice命令行工具,适用于需要开源解决方案的场景。每种方法都有其适用范围,可根据具体需求选择。
|
2月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
447 1