2009-05-12 24 views
8

¿Alguien está familiarizado con el formato de documento RTF y el análisis utilizando cualquier biblioteca de Java? La forma en que las personas normales han hecho esto es mediante el uso de la RTFEditorKit en el API Swing JDK:Análisis de documentos RTF con Java/JavaCC

Swing RTFEditorKit API

pero no es preciso que cuando se trata de analizar documentos RTF. De hecho, hay un comentario en la API:

El soporte RTF no fue escrito por el equipo Swing. En el futuro esperamos mejorar el soporte provisto.

No creo que voy a esperar a que esto suceda :)

El otro enfoque adoptado es definir una gramática usando JavaCC y generar un programa de análisis. Esto funciona mejor, pero tengo problemas para encontrar una gramática completa. He intentado:

PMD Applied JavaCC Grammar

que está bien y lo siguiente (que es el mejor hasta ahora).

Koders RTFParserDelegate and ETranslate Grammar

Hay varias implementaciones de la gramática sobre eTranslate (sé la API Nutch puede utilizar este). ¿Alguien sabe cuál es la gramática más precisa o si hay un mejor enfoque para esto?

que pudiera empezar el arado a través de los documentos JavaCC para entender los archivos .jj y probarlo en contra de los archivos RTF ... este es mi enfoque actual, pero se está tomando un tiempo ... cualquier ayuda se agradece

+1

No se puede responder a su pregunta real, pero parece que un mejor enfoque de validación (en lugar de trabajar a través de la gramática) es crear archivos de prueba y verificar que estén correctamente analizados. Sin embargo, según recuerdo, los analizadores RTF pueden ignorar cualquier construcción que no entiendan, lo que permite la compatibilidad con versiones anteriores. – kdgregory

+0

El analizador ETranslate realmente funciona muy bien en la extracción de documentos RTF (99% del conjunto que tengo), pero no está soportado y no está disponible desde una fuente central. Trataré de obtener esto en Google Code en algún lugar ... no estoy seguro acerca de las licencias, solo necesita corregir algunos errores en términos de la gramática, creo ... – Jon

+0

¿Hiciste algún progreso con esto? – pvgoddijn

Respuesta

0

Presumiblemente, la fuente de OpenOffice contiene lo que estás buscando.

+0

Ya he buscado un OpenOffice y le he enviado documentos con JODExtractor, es una buena manera de analizar los documentos, pero una una solución bastante pesada ya que necesita un servidor con las bibliotecas X instaladas, etc ... aún no lo descarta, sigue investigando, pero busca soluciones más "livianas". – Jon

1

¿Alguien sabe cuál es la gramática más precisa o si hay es un mejor enfoque para esto? Hace

muchos años pasé algún lectura RTF (Wikipedia) tiempo con C#. Digo lectura porque si entiendes RTF en detalle y la utilizas de la forma en que fue diseñada, te darás cuenta de que RTF no debe leerse como un todo y analizarse en conjunto una y otra vez cuando se edite. En la documentación, encontrará el syntax para RTF, pero no se deje engañar haciéndole creer que debe usar un lexer/analizador. En la documentación, dan un sample reader para RTF.

Recuerde que RTF se creó hace muchas eras cuando la memoria se medía en KB y no en MB, y la edición de documentos largos de varios cientos de páginas de forma convencional imponía impuestos a los recursos del sistema. Por lo tanto, RFT tiene la capacidad de ser editado en subsecciones más pequeñas sin cargar o modificar el documento completo. Esto es lo que le da la capacidad de trabajar en documentos tan grandes con memoria limitada. También es por qué la sintaxis puede parecer extraña al principio.