2010-07-09 43 views
5

Necesito convertir rtf a texto sin formato. Solía ​​escribir una función que quita los encabezados de rtf pero nunca es perfecto.Delphi: la mejor manera de convertir rtf a texto

Una opción puede ser utilizar un TRichEdit creado en tiempo de ejecución (algo así como here descrito pero hecho, por supuesto, en tiempo de ejecución). ¿Pero hay otra manera? ¿Hay una función rtl para esto o un mejor enfoque?

ACTUALIZACIÓN:

En this question escribí la versión final de mi rtf al procedimiento de texto.

+0

¿Qué pasa con TRichEdit? ¿Y quién genera el RTF que quieres convertir? Si se espera convertir RTF generado desde Microsoft Word, el TRichEdit originado en Microsoft podría ser la mejor opción. –

+2

@ Cosmin Prund: Puede parecer un poco excesivo crear un control de GUI (incluso si nunca se muestra en la pantalla) solo para hacer una conversión de archivo en segundo plano. Pero por supuesto, funciona. –

+1

Exactamente, esta era mi preocupación. Por supuesto que funciona. De todos modos parece que ese es el camino. – LaBracca

Respuesta

3

Si realmente desea encontrar la manera de hacer esta conversión, debe ver cómo se implementa la clase TConversion en la clase TRichEditStrings. Estas clases están en ComCtrls.pas. Al comprender cómo se realiza la conversión dentro de los controles RichEdit, es posible que pueda escribir la suya propia.

Sin embargo, mirando los aspectos prácticos de la implementación de esto y sin saber cuáles son los requisitos de rendimiento para su pregunta, me gustaría ir al enfoque de conversión de TRichEdit que se describe en su enlace.

+7

TRichEditStrings no implementa ninguna conversión, todo el trabajo lo realiza el control RichEdit (TRichEdit no es más que un envoltorio alrededor del control RichEdit de Microsoft). Escribir su propia implementación de RTF a TEXT es simple para el caso simple y muy complicado para los casos complejos. Microsoft Word puede guardar cualquier documento en RTF, conservando todos los formatos. Piensa en el documento Word más usado que hayas visto, usando la estructura de tabla más contorsionada; ¡Imagine que alguien guarda eso como RTF y le pide que lo convierta en TEXTO! –

+0

Ok, iré por ello. Hay 2 problemas que deben resolverse de alguna otra forma: necesito buscar en un campo DB rtf (para eso el truco que estoy usando es buscar la cadena en el texto rtf, no es el truco de eprfect pero funciona muy bien si buscando palabras sueltas), necesito devolver "como texto" en una cuadrícula el contenido de muchos campos rtf (aquí la solución está devolviendo el texto con formato rtf). Por supuesto, una alternativa podría ser guardar también un campo de texto, así que por cada rtf que guarde, también guardo la versión de solo texto, puede ser un buen enfoque en una nueva aplicación. – LaBracca

0

La página

  • http://www.delphipraxis.net/152766-rtf-nach-html.html para algunos punteros a los componentes, bibliotecas y otras fuentes para convertidores RTF, algunos de ellos incluyen una opción de conversión de texto RTF a.

  • ScroogeXHTML, una biblioteca para la conversión de RTF a HTML/XHTML, puede ser útil. Es compatible con un subconjunto del estándar RTF y es fácil de personalizar. Tiene una opción de formato de exportación de texto plano. Nota: Soy el autor de ScroogeXHTML para Delphi/ScroogeXHTML para la plataforma Java. Es un producto comercial.

Cuestiones relacionadas