Разбор RTF-документов с помощью Java / JavaCC - PullRequest
8 голосов
/ 12 мая 2009

Кто-нибудь знаком с форматом документа RTF и анализом с использованием любых библиотек Java. Стандартный способ сделать это - использовать RTFEditorKit в JDK Swing API:

Swing RTFEditorKit API

но это не так точно, когда дело доходит до разбора документов RTF. На самом деле в API есть комментарий:

Поддержка RTF не была написана Качели команды. В будущем мы надеемся улучшить предоставляемую поддержку.

Не думаю, что буду ждать, пока это произойдет :)

Другой подход заключается в определении грамматики с использованием JavaCC и генерации синтаксического анализатора. Это работает лучше, но у меня проблемы с поиском полной грамматики. Я пробовал:

Прикладная грамматика JavaCC для PMCC

что в порядке и следующее (пока лучшее).

Кодеры RTFParserDelegate и ET Translate Grammar

Существуют различные реализации грамматики ETranslate (я знаю, что API Nutch может использовать это). Кто-нибудь знает, какая грамматика является наиболее точной или есть лучший подход к этому?

Я мог бы начать просматривать документы JavaCC, чтобы понять файлы .jj и проверить их на наличие файлов RTF ... это мой текущий подход, но он требует времени ... любая помощь будет принята

Ответы [ 2 ]

1 голос
/ 11 марта 2013

Кто-нибудь знает, какая грамматика самая точная или есть лучший подход к этому?

Много лет назад я потратил некоторое время на чтение RTF ( Wikipedia ) на C #. Я говорю «чтение», потому что если вы разберетесь в RTF в деталях и будете использовать его так, как он был спроектирован, вы поймете, что RTF не предназначен для чтения в целом и повторного анализа в целом при редактировании. В документации вы найдете синтаксис для RTF, но не думайте, что вам следует использовать лексер / парсер. В документации они дают образец считывателя для RTF.

Помните, что RTF был создан много веков назад, когда память измерялась в килобайтах, а не в мегабайтах, и редактирование длинных документов объемом в несколько сотен страниц обычным способом облагало бы ресурсы системы. Таким образом, RFT может редактироваться в небольших подразделах без загрузки или изменения всего документа. Это то, что дает ему возможность работать с такими большими документами с ограниченной памятью. По этой же причине синтаксис на первый взгляд может показаться странным.

0 голосов
/ 13 мая 2009

Предположительно, источник OpenOffice содержит то, что вы ищете.

...