在 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,但这似乎并不那么简单
- xwpf 和 hwpf 之间缺少接口。
- jasper 导出到 docx 时似乎存在错误,它将边距设置为 0 并导致打印警告。可能是 surmountable 但由于这是一个快速而肮脏的修复想法,它开始看起来比这样一个混乱的解决方案值得付出更多的努力。
这让我有了将 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
文件的目录)。
我有一个应用程序可以输出各种格式的各种文档。这是它的主要目的。我在大多数非 excel 文档中使用 japser,现在我意识到我可能犯了一个错误! (我买不起 Aspose!)。我在 Windows 环境中操作。
基本上很多文档都是以 odt 和 doc 格式生成的。 Word 版本的要求是 doc,以便与最大数量的用户(在我的组织之外)兼容。
为此,我以 rtf 格式导出到一个 doc 后缀的文件。到目前为止一切顺利,除了 tables 被导出为文本输入框而不是 tables 并且用户非常不高兴他们不能在单元格之间切换(我们在测试中错过了这个)。这似乎无法简单地在报告配置中解决。 rtf 导出根本不会将 tables 导出为 tables.
我考虑过保存为 docx 并使用 poi 转换为 doc,但这似乎并不那么简单
- xwpf 和 hwpf 之间缺少接口。
- jasper 导出到 docx 时似乎存在错误,它将边距设置为 0 并导致打印警告。可能是 surmountable 但由于这是一个快速而肮脏的修复想法,它开始看起来比这样一个混乱的解决方案值得付出更多的努力。
这让我有了将 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
文件的目录)。