使用Java / JavaCC解析RTF文档

时间:2009-05-12 18:55:33

标签: java parsing rtf javacc

是否有人熟悉RTF文档格式并使用任何Java库进行解析。人们这样做的标准方法是使用JDK Swing API中的RTFEditorKit:

Swing RTFEditorKit API

但是在解析RTF文档方面并不准确。事实上,API中有一条评论:

  

RTF支持不是由   摇摆队。在未来我们希望   改善所提供的支持。

我认为我不会等到这件事发生:)

另一种方法是使用JavaCC定义语法并生成解析器。这样做效果更好,但我找不到完整的语法。我试过了:

PMD Applied JavaCC Grammar

这是好的和以下(这是迄今为止最好的)。

Koders RTFParserDelegate and ETranslate Grammar

ETranslate语法有各种各样的实现(我知道Nutch API可能会使用它)。 有人知道哪种语法最准确,或者是否有更好的方法?

我可以开始通过JavaCC文档来理解.jj文件并根据RTF文件进行测试......这是我目前的方法,但它需要一段时间......任何帮助都将不胜感激

2 个答案:

答案 0 :(得分:1)

  

有人知道哪个是最准确的语法或是否存在   对此有更好的解决方法吗?

很多年前,我花了一些时间用C#阅读RTFWikipedia)。我说阅读是因为如果你详细了解RTF并按照它的设计方式使用它,你就会意识到RTF并不是整体阅读,而是在编辑时一遍又一遍地解析。在文档中,您将找到RTF的syntax,但不要误以为您应该使用词法分析器/解析器。在文档中,他们为RTF提供sample reader

请记住,RTF是在很多年前创建的,当时内存以KB而不是MB来衡量,并且以常规方式编辑数百页的长文档会对系统资源造成负担。因此,RFT能够在较小的子部分中进行编辑,而无需加载或修改整个文档。这使它能够处理内存有限的大型文档。这也是为什么语法起初可能看起来很奇怪的原因。

答案 1 :(得分:0)

据推测,OpenOffice的来源包含您正在寻找的内容。