问题描述
我有一个应用程序,可以以各种格式显示各种文档。 这是主要目的。 我对大多数非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格式,而表格作为表格对象,而不是相邻文本输入框的集合?
我试图对此进行详细说明,如果有点冗长,请您道歉。 非常感谢任何帮助(解决方案越简单越好!)。
1楼
您可以尝试 ,它可以在ODT和DOC(X)之间进行转换,但是有关该库的文档 ,并且不再维护。
根据小文档( 和 ),这是一个将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
文件的目录)的soffice.bin
。