8

RTF ドキュメント形式と、Java ライブラリを使用した解析に精通している人はいますか。これを行う標準的な方法は、JDK Swing API で RTFEditorKit を使用することです。

Swing RTFEditorKit API

しかし、RTF ドキュメントの解析に関してはそれほど正確ではありません。実際、API には次のコメントがあります。

RTF サポートは、Swing チームによって作成されたものではありません。将来的には、提供されるサポートを改善したいと考えています。

これが起こるのを待つつもりはないと思います:)

もう 1 つのアプローチは、JavaCC を使用して文法を定義し、パーサーを生成することです。これはうまく機能しますが、完全な文法を見つけるのに苦労しています. 私はもう試した:

PMD 応用 JavaCC 文法

これは問題ありませんが、次のとおりです(これまでのところ最高です)。

Koders RTFParserDelegate と ETranslate 文法

ETranslate 文法にはさまざまな実装があります ( Nutch API がこれを使用する可能性があることは知っています)。 どちらが最も正確な文法であるか、またはこれに対するより良いアプローチがあるかどうかを誰かが知っていますか?

JavaCC ドキュメントを調べて .jj ファイルを理解し、RTF ファイルに対してテストすることができます...これが私の現在のアプローチですが、しばらく時間がかかります...助けていただければ幸いです

4

2 に答える 2

1

どちらが最も正確な文法であるか、またはこれに対するより良いアプローチがあるかどうかを誰かが知っていますか?

何年も前に、私はC# でRTF ( Wikipedia ) を読むことに時間を費やしました。RTF を詳細に理解し、設計された方法で使用すると、RTF が全体として読み取られ、編集時に全体として何度も解析されることを意図していないことに気付くため、私は読み取りと言いました。ドキュメントには RTF の構文が記載されていますが、レクサー/パーサーを使用する必要があると誤解しないでください。ドキュメントでは、RTFのサンプル リーダーが提供されています。

RTF が作成されたのはずっと前で、メモリが MB ではなく KB で測定されていたため、従来の方法で数百ページの長いドキュメントを編集すると、システム リソースに負担がかかることを思い出してください。そのため、RFT には、ドキュメント全体を読み込んだり変更したりすることなく、小さなサブセクションで編集する機能があります。これにより、限られたメモリでこのような大きなドキュメントを処理できるようになります。これが、構文が最初は奇妙に見える理由でもあります。

于 2013-03-11T12:59:52.057 に答える
0

おそらく、OpenOffice のソースには、探しているものが含まれています。

于 2009-05-13T11:46:54.937 に答える