在 java 中将 ODT 转换为 doc/rtf 格式

Convert ODT to doc/rtf format in java

我有一个应用程序可以输出各种格式的各种文档。这是它的主要目的。我在大多数非 excel 文档中使用 japser,现在我意识到我可能犯了一个错误! (我买不起 Aspose!)。我在 Windows 环境中操作。

基本上很多文档都是以 odt 和 doc 格式生成的。 Word 版本的要求是 doc,以便与最大数量的用户(在我的组织之外)兼容。

为此,我以 rtf 格式导出到一个 doc 后缀的文件。到目前为止一切顺利,除了 tables 被导出为文本输入框而不是 tables 并且用户非常不高兴他们不能在单元格之间切换(我们在测试中错过了这个)。这似乎无法简单地在报告配置中解决。 rtf 导出根本不会将 tables 导出为 tables.

我考虑过保存为 docx 并使用 poi 转换为 doc,但这似乎并不那么简单

这让我有了将 odt 文件转换为 doc 的想法。我快速浏览了 jodconverter,但似乎很久以来没有人对此做过任何事情,我不相信这是可行的方法(我也不确定它是否与 OpenOffice 4.1 兼容,这正是我已经下载了,虽然我想我可以退出?)。

所以这个问题的主要部分是 - 是否有一种相当简单的方法可以在 java 代码中将 odt 转换为 doc/rtf(我真的不希望将文档发送到外部的开销转换站点)。我想对于任何严肃的 Jasper 专家来说,旁白都是 - 有没有一种方法可以将 tables 导出为 rtf/doc 格式作为 table 对象而不是相邻文本输入框的集合?

我已经尽量完整地列出了这一点,如果有点冗长,我深表歉意。非常感谢任何帮助(解决方案越简单越好!)。

您可以尝试 JODConverter,它在 ODT 和 DOC(X) 之间进行转换,但是关于这个库的文档很少,而且不再维护。

根据 little doc 有 (here and here),这里有一个将 odt 转换为 doc 文件的小例子(您需要在本地安装 OpenOffice 或 LibreOffice)

OfficeManager officeManager = new DefaultOfficeManagerConfiguration().setOfficeHome(new File("<path to office home>")).buildOfficeManager();
officeManager.start();

OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
converter.convert(new File("test.odt"), new File("test.doc"));

officeManager.stop();

<path to office home> 必须替换为 LibreOffice 或 OpenOffice 的主目录路径(包含 soffice.bin 文件的目录)。