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

标签 java jasper-reports apache-poi odt

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

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

为此,我以 rtf 格式导出到 doc 后缀的文件。到目前为止一切都很好,除了表格导出为文本输入框而不是表格,并且用户对无法在单元格之间进行制表符感到非常沮丧(我们在测试中错过了这一点)。这似乎是无法简单地通过报告配置来解决的问题。 rtf 导出根本不会将表导出为表。

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

  • xwpf 和 hwpf 之间缺少接口(interface)。
  • jasper 导出到 docx 时似乎存在一个错误,它将边距设置为 0 并导致打印警告。可能是可以克服的,但由于这是一个快速而肮脏的修复想法,它开始看起来比如此困惑的解决方案值得付出更多的努力。

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

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

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

最佳答案

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

根据小文档( herehere ),这里有一个将 odt 转换为文档文件的小示例(您需要在本地安装 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 文件的目录)。

关于java - java中将ODT转换为doc/rtf格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476237/

相关文章:

java - 没有附加源代码 jar 的 jar 中的代码抛出的异常打印的 Java 堆栈跟踪中的行号指向哪里

java - luceneappengine jar 是否完整或者我需要下载更多 jar

java - 如何使用 apache poi 读取 .xlsx 文件?

java - 在 jsp 中显示 JasperReport 生成的 html 报告的最佳方式是什么?

java - Apache POI - Docx 输出问题

java - 检查 hasPrevious 的元素

java - 使用 Java,如何在不重复比较的情况下将 HashMap 中的每个条目与同一 HashMap 中的每个其他条目进行比较?

java - 将 Maven 子模块打包到单个存档中

java - 如何从 ArrayList 填充报告?

java - 我应该将 .jasper 文件放在哪里以及如何访问它?