0

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

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

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

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

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

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

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

我试图把它完整地列出来,如果它有点冗长,我深表歉意。非常感谢任何帮助(解决方案越简单越好!)。

4

1 回答 1

1

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

根据那里的小文档(herehere),这是一个将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文件的目录)的路径。

于 2015-07-17T14:57:06.983 回答