Java RTF Parser

有谁知道我可以在Java中使用的健壮的RTF解析器? 我需要提取纯文本,包括国际文本。 提取嵌入的图像和文件也很不错。 它也可以是我可以轻松调用的C ++或其他库,或者如果有很好的源代码,我可以转换为Java。

以下库不能覆盖足够的RTF,或无法解析某些有效的RTF

  1. Java Swing的RTFEditorKit,非常基础和脆弱的Apache Tikka,nutch和许多其他工具使用它。
  2. iText的一个RTF库(com.lowagie.etc …),不太全面
  3. etranslate rtf库(这是java中最完整的)不确定是否有更新版本,但是我的部分rtf集合上的版本失败(RTF有效,至少它们在MsWord和OpenOffice中打开OK )。

有一个C#库是相当完整的,但是唉…它是C#而不是Java。 http://www.codeproject.com/Articles/27431/Writing-Your-Own-RTF-Converter

我也研究过OpenOffice,它对于我需要的东西来说太慢了,尽管它可能非常全面。

(在发布这个问题之前,我确实进行了网页搜索和堆栈溢出搜索,所以如果你引用我一个古老的“已经被问到”的post,它可能在那里没有答案。但是请随意指出,以防万一我错过了!)

您可能会发现RTF Parser Kit很有用。 它提供了一个基于流的解析器,在解析文档时向您提供事件。 提供了一个简单的示例文本提取器,演示了如何使用API​​。

如果您的项目是非商业性的,那么这里有一个很好的免费Java rtf到xml库,在我看来比etranslate好,你可以从那里处理xml。 但是,如果您将其用于商业目的,则必须与开发它的公司rtf-to-xml.com安排许可。

然而,在遇到类似的情况之前,在找到rtf-to-xml之前,当我需要在linux服务器上解析ms rtf时,我发现这个问题很有趣。 有一个免费的富文本处理器,它也是一个名为Ted的库。它从命令行获取带有用户界面的参数,并且可以包装在JNI调用中。

我希望这有帮助。