【发布时间】:2015-07-17 22:57:06
【问题描述】:
我有一个应用程序可以踢出各种格式的各种文档。这是它的主要目的。我对大多数非 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 格式,并将表格作为表格对象而不是相邻文本输入框的集合?
我已尝试将其完整地列出,如果有点冗长,我深表歉意。非常感谢任何帮助(解决方案越简单越好!)。
【问题讨论】:
-
odt-to-docx 转换可以在纯 XML 级别(XSLT + jar:file: URI FileSystem)上完成。这将需要一些可怕的维护(XML 和 XSLT)。但似乎比过大的依赖更可靠。但后来有人想知道为什么 docx 一代如此缺乏。
-
是的,最初该规范是针对 docx 的,但我对 XSLT/XSL-FO 还是很陌生,因为我对这些技术还很陌生,而且我的盘子已经够多了。不过,我现在开始希望自己能咬紧牙关!
-
使用 XSLT 进行开发非常耗时(小步骤,有时令人费解),因此很难做出选择。另一方面,它提供了。
-
我已经准备好转到 docx,所以我现在要离开这个问题(!)。我只是想指出 Jasper 中的边距错误是我的错,而不是 Jasper 错误(不再是),以供将来参考。我已将我的 jasper eclipse 插件更新到最新版本,但我的应用程序本身中的 jar 没有更新(doh!)。
标签: java jasper-reports apache-poi odt