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

简介: 解决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均转换成功!

目录
相关文章
|
人工智能 文字识别 自然语言处理
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
Vision Parse 是一款开源的 PDF 转 Markdown 工具,基于视觉语言模型,能够智能识别和提取 PDF 中的文本和表格,并保持原有格式和结构。
1744 19
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
|
机器学习/深度学习 人工智能 文字识别
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
Zerox 是一款开源的本地化高精度OCR工具,基于GPT-4o-mini模型,支持PDF、DOCX、图片等多种格式文件,能够零样本识别复杂布局文档,输出Markdown格式结果。
1271 4
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
|
人工智能 文字识别 数据挖掘
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
MarkItDown 是微软开源的多功能文档转换工具,支持将 PDF、PPT、Word、Excel、图像、音频等多种格式的文件转换为 Markdown 格式,具备 OCR 文字识别、语音转文字和元数据提取等功能。
3190 9
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
|
人工智能 JSON Linux
利用阿里云GPU加速服务器实现pdf转换为markdown格式
随着AI模型的发展,GPU需求日益增长,尤其是个人学习和研究。直接购置硬件成本高且更新快,建议选择阿里云等提供的GPU加速型服务器。
利用阿里云GPU加速服务器实现pdf转换为markdown格式
|
数据挖掘 BI
.net8 Syncfusion生成pdf/doc/xls/ppt最新版本
通过使用 Syncfusion,您可以高效地生成各种文档,满足不同的业务需求。这些工具不仅易于使用,还具有高性能和高度可扩展性,是处理文档的理想选择。
480 16
|
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向量化 增强检索
1314 2
|
资源调度 前端开发 JavaScript
安利一款基于canvas/svg的富文本编辑器-支持在线导出PDF、DOCX
高性能:利用Canvas和SVG进行图形和矢量图形的渲染,提供高性能的绘图能力。 可扩展性:Canvas-Editor是一个开源项目,支持通过插件机制扩展编辑器的功能,如DOCX、PDF导出、表格分页等。 丰富的文本编辑功能:支持多种文本编辑操作,如插入表格、分页、性能优化等。
1742 0
|
9月前
|
存储 JSON API
如何将 Swagger 文档导出为 PDF 文件
你会发现自己可能需要将 Swagger 文档导出为 PDF 或文件,以便于共享和存档。在这篇博文中,我们将指导你完成将 Swagger 文档导出为 PDF 格式的过程。
|
6月前
|
C#
【PDF提取内容改名】批量提取PDF指定区域内容重命名PDF文件,PDF自动提取内容命名的方案和详细步骤
本工具可批量提取PDF中的合同编号、日期、发票号等关键信息,支持PDF自定义区域提取并自动重命名文件,适用于合同管理、发票处理、文档归档和数据录入场景。基于iTextSharp库实现,提供完整代码示例与百度、腾讯网盘下载链接,助力高效处理PDF文档。
876 40
|
6月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。