Analysieren von RTF-Dokumenten mit Java / JavaCC

8

Kennt jemand das RTF-Dokumentformat und das Parsing mit irgendwelchen Java-Bibliotheken? Der übliche Weg, wie die Leute das gemacht haben, ist die Verwendung des RTFEditorKit in der JDK Swing API:

Swing RTFEditorKit-API

Aber es ist nicht so genau, wenn es darum geht, RTF-Dokumente zu analysieren. Tatsächlich gibt es einen Kommentar in der API:

  

Die RTF-Unterstützung wurde nicht von der   Schwingen Team. In der Zukunft hoffen wir auf   Verbesserung der Unterstützung.

Ich glaube nicht, dass ich darauf warten werde, dass dies geschieht :)

Der andere Ansatz besteht darin, mit JavaCC eine Grammatik zu definieren und einen Parser zu generieren. Das funktioniert besser, aber ich habe Probleme, eine vollständige Grammatik zu finden. Ich habe es versucht:

PMD Applied JavaCC Grammar

was in Ordnung ist und das folgende (was bisher das Beste ist).

Koders RTFParserDelegate und Etranslate Grammar

Es gibt verschiedene Implementierungen der Etranslate-Grammatik (ich weiß, dass die Nutch API dies verwenden kann). Weiß jemand, welche Grammatik am genauesten ist oder ob es einen besseren Ansatz dafür gibt?

Ich könnte damit beginnen, die JavaCC-Dokumente zu durchsuchen, um die .jj-Dateien zu verstehen und sie gegen die RTF-Dateien zu testen ... das ist mein aktueller Ansatz, aber es dauert eine Weile ... jede Hilfe wäre willkommen.

    
Jon 12.05.2009, 18:55
quelle

2 Antworten

1
  

Weiß jemand, welche Grammatik am genauesten ist oder ob sie da ist?   ist ein besserer Ansatz dazu?

Vor vielen Jahren verbrachte ich einige Zeit damit, RTF ( Wikipedia ) mit C #. Ich sage lesen, denn wenn Sie RTF im Detail verstehen und es so verwenden, wie es entworfen wurde, werden Sie feststellen, dass RTF nicht als Ganzes gelesen und als Ganzes immer wieder analysiert werden soll. In der Dokumentation finden Sie die Syntax für RTF , aber lassen Sie sich nicht irreführen, dass Sie einen Lexer / Parser verwenden sollten. In der Dokumentation geben sie einen Sample Reader für RTF .

Denken Sie daran, dass RTF vor vielen Jahren erstellt wurde, als der Speicher in KB und nicht in MB gemessen wurde, und das Bearbeiten langer Dokumente von mehreren hundert Seiten auf herkömmliche Weise die Systemressourcen belastete. So kann RFT in kleineren Unterabschnitten bearbeitet werden, ohne das gesamte Dokument zu laden oder zu verändern. Dies gibt ihm die Möglichkeit, an so großen Dokumenten mit begrenztem Speicher zu arbeiten. Es ist auch der Grund, warum die Syntax auf den ersten Blick seltsam erscheint.

    
Guy Coder 11.03.2013 12:59
quelle
0

Vermutlich enthält die Quelle von OpenOffice, was Sie suchen.

    
michael aubert 13.05.2009 11:46
quelle

Tags und Links