Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Eliminar marcas de formato rtf (https://www.clubdelphi.com/foros/showthread.php?t=68619)

esocrates 25-06-2010 01:55:41

Eliminar marcas de formato rtf
 
Un saludo a todos:
Necesito saber cómo se hace para que al cargar un archivo rtf en un RichEdit no se visualicen los caracteres propios del formato rtf al comienzo de la página.
Por ej.

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 MS Sans Serif;}{\f1\fnil MS Sans Serif;}}
\viewkind4\uc1\pard\lang3082\f0\fs16 Listado de Enrique\f1
\par

Desde ya muchas gracias

Casimiro Notevi 25-06-2010 10:12:26

Existen utilidades que lo hacen, normalmente se llamaran "rtf2txt" o también "rtftotxt", por ejemplo,

Aquí uno free: http://www.brothersoft.com/rtf2txt-61949.html

Fíjate, un programilla basic de msdos que dice hacer eso mismo que quieres, puede que te sirva de algo:

Código:

RTF2TXT.BAT - RTF to Text file converter

  A program born out of a simple need, to read a Rich Text Format document. This batch creates and runs a QBasic program that converts the RTF file to plain text. Changes "\par" to newline, "\tab" to tab, all other words beginning with "\" are ignored. Newlines in the source file are ignored. To get rid of the header junk, "{" turns off the output stream until a "}" comes along.
 Usage: RTF2TXT infile.rtf outfile.txt
 
 
:: (updated) Cheezy RTF-to-Text converter batch
:: by Terry Newton. Needs QBASIC "on the path"
@echo off
if .%2==. echo Usage: Usage: RTF2TXT infile.rtf outfile.txt
if .%2==. goto end
if not exist %1 echo File not found
if not exist %1 goto end
echo Converting RTF to text...
echo> rtf2-.bas :on error goto x
echo>>rtf2-.bas open "%1" for input as #1:open "rtf2-" for output as #2
echo>>rtf2-.bas f:a$=input$(1,1):c$=""
echo>>rtf2-.bas if a$=chr$(13) or a$=chr$(10) then goto f
echo>>rtf2-.bas if a$="{" then skip=1:goto f
echo>>rtf2-.bas if a$="}" then skip=0:goto f
echo>>rtf2-.bas if skip then goto f
echo>>rtf2-.bas if (a$="\")=0 then goto o
echo>>rtf2-.bas g:a$=input$(1,1):if (a$=" ")=0 then c$=c$+a$:goto g
echo>>rtf2-.bas if c$="par" then print #2,""
echo>>rtf2-.bas if c$="tab" then print #2,chr$(9);
echo>>rtf2-.bas goto f
echo>>rtf2-.bas o:print #2,a$;:goto f
echo>>rtf2-.bas x:close #1:close #2:resume ww
echo>>rtf2-.bas ww:on error goto done
echo>>rtf2-.bas open "rtf2-" for input as #1:open "%2" for output as #2
echo>>rtf2-.bas lm:line input #1, a$:if a$="" then print #2,"":goto lm
echo>>rtf2-.bas l0:t=0:p=instr(a$,chr$(9)):if sgn(77-p)-(p=0)=1 then t=8
echo>>rtf2-.bas p=77-t:if sgn(p-len(a$)+1)=1 then print #2,a$:goto lm
echo>>rtf2-.bas l1:if mid$(a$,p,1)=" " then goto c
echo>>rtf2-.bas p=p-1:if p=0 then print #2,a$:goto lm else goto l1
echo>>rtf2-.bas c:print #2,left$(a$,p-1):a$=right$(a$,len(a$)-p):goto l0
echo>>rtf2-.bas done:close #1:close #2:system
qbasic /run rtf2-.bas
del rtf2-.bas
del rtf2-
:end

Seguro que encuentras algún componente que lo hace.

Neftali [Germán.Estévez] 25-06-2010 10:53:28

No me queda claro si lo que quieres es "cargarlo" o "convertirlo".
Para convertirlo y obtener el texto sin los caracteres del formato, pues tal y como te ha dicho Casimiro.

Para cargarlo únicamete (en ejecución) debes usar:

Código Delphi [-]
  RichEdit1.Lines.LoadFromFile('r:\test.rtf');

esocrates 25-06-2010 12:59:24

Cita:

Empezado por Neftali (Mensaje 368298)
No me queda claro si lo que quieres es "cargarlo" o "convertirlo".
Para convertirlo y obtener el texto sin los caracteres del formato, pues tal y como te ha dicho Casimiro.

Para cargarlo únicamete (en ejecución) debes usar:

Código Delphi [-]
  RichEdit1.Lines.LoadFromFile('r:\test.rtf');

Gracias por la respuesta Neftali.
Efectivamente lo que quiero es simplemente cargarlo.
Intento hacer lo que me indicas y me da un mensaje de error:

"El sistema no puede halla la ruta especificada"

Aclaro que el archivo está en la carpeta del programa en cuestión.
¿Alguna sugerencia?
Muchas gracias
Hasta pronto

Neftali [Germán.Estévez] 25-06-2010 13:26:01

Cita:

Empezado por esocrates (Mensaje 368307)
"El sistema no puede halla la ruta especificada"
Aclaro que el archivo está en la carpeta del programa en cuestión.

Tiene pinta de que el path es incorrecto.
¿Qué path estás colocando?

esocrates 25-06-2010 13:52:16

Cita:

Empezado por Neftali (Mensaje 368309)
Tiene pinta de que el path es incorrecto.
¿Qué path estás colocando?

El archivo listado.rtf está en la carpeta del programa.
Lo llamo mediante:
Código:

RichEdit1.Lines.LoadFromFile('r:\listado.rtf');
Me da este mensaje:
"Cannot open file 'listado.rtf'. El sistema no puede hallar la ruta especificada"

Un saludo

Neftali [Germán.Estévez] 25-06-2010 14:03:27

Pon la ruta completa del fichero RTF como parámetro.
Mi fichero RTF está en: r:\Test.rtf

Coloca entre comillas el path completo donde se encuentra tu fichero.
Por ejemplo:

RichEdit1.Lines.LoadFromFile('c:\documentos\listado.rtf');
o
RichEdit1.Lines.LoadFromFile('c:\Archivos de programa\MiApp\listado.rtf');
...

esocrates 25-06-2010 14:11:51

Cita:

Empezado por Neftali (Mensaje 368313)
Pon la ruta completa del fichero RTF como parámetro.
Mi fichero RTF está en: r:\Test.rtf

Coloca entre comillas el path completo donde se encuentra tu fichero.
Por ejemplo:

RichEdit1.Lines.LoadFromFile('c:\documentos\listado.rtf');
o
RichEdit1.Lines.LoadFromFile('c:\Archivos de programa\MiApp\listado.rtf');
...

Hola Neftali:
De esa manera lo carga pero mostrando los caracteres que señalo en la pregunta, que son los que no quiero que se vean.
Gracias por tu ayuda

Casimiro Notevi 25-06-2010 14:16:34

Recuerda poner la propiedad "plaintext" a false. Del ritchedit

Neftali [Germán.Estévez] 25-06-2010 14:19:35

Cita:

Empezado por esocrates (Mensaje 368314)
Hola Neftali:
De esa manera lo carga pero mostrando los caracteres que señalo en la pregunta, que son los que no quiero que se vean.
Gracias por tu ayuda


Algo tienes mal, porque yo lo cargo de esa manera y me lo carga perfectamente en ejecución.

esocrates 25-06-2010 14:27:19

Cita:

Empezado por Neftali (Mensaje 368316)
Algo tienes mal, porque yo lo cargo de esa manera y me lo carga perfectamente en ejecución.

Es posible que yo tenga un error de concepto.
El archivo que llamo ha sido hecho con WordPad y guardado como rtf. Entonces se carga pero muestra los caracteres de formato.
Si hago un archivo con mi aplicación lo guardo y lo cargo esto no sucede.
Se me ocurre que este puede ser el problema.
Muchas gracias

Casimiro Notevi 25-06-2010 14:33:12

Cita:

Empezado por esocrates (Mensaje 368317)
Es posible que yo tenga un error de concepto.
El archivo que llamo ha sido hecho con WordPad y guardado como rtf. Entonces se carga pero muestra los caracteres de formato.
Si hago un archivo con mi aplicación lo guardo y lo cargo esto no sucede.
Se me ocurre que este puede ser el problema.
Muchas gracias

¿Has leído lo que he puesto antes?

esocrates 25-06-2010 14:42:59

Cita:

Empezado por Casimiro Notevi (Mensaje 368318)
¿Has leído lo que he puesto antes?

Hola Casimiro Notevi:
Sí lo he leído.
plaintext =false
Un saludo

Casimiro Notevi 25-06-2010 14:49:35

Pues entonces, sólo puedo citar las palabras de Neftalí:

Cita:

Empezado por Neftali (Mensaje 368316)
Algo tienes mal, porque yo lo cargo de esa manera y me lo carga perfectamente en ejecución.


¿Puedes poner el fichero que lo probemos?

esocrates 25-06-2010 15:02:41

Cita:

Empezado por Casimiro Notevi (Mensaje 368320)
Pues entonces, sólo puedo citar las palabras de Neftalí:




¿Puedes poner el fichero que lo probemos?

Hasta ahora consigo cargar archivos rtf escritos en cualquier editor menos un archivo que fue escrito en Microsoft Word 2003 guardado como doc y luego convertido desde Word a rtf que se carga pero muestra los caracteres de rtf que muestro en el primer post.
No puedo adjuntar el archivo porque pesa 0.75 MB
Un saludo y gracias

Neftali [Germán.Estévez] 25-06-2010 15:43:54

2 Archivos Adjunto(s)
Está claro que lo que está funcionando mal es la conversión que estás haciendo o tu versión de Office.
Yo he probado (te adjunto el proyecto) con un documento generado con el WordPad, otro generado con OpenOffice y otro generado con MS Word y los tres los abre sin problemas.

esocrates 25-06-2010 15:46:27

Cita:

Empezado por Neftali (Mensaje 368325)
Está claro que lo que está funcionando mal es la conversión que estás haciendo o tu versión de Office.
Yo he probado (te adjunto el proyecto) con un documento generado con el WordPad, otro generado con OpenOffice y otro generado con MS Word y los tres los abre sin problemas.

Te adjunto un archivo problema
Muchas gracia spor tu ayuda

esocrates 25-06-2010 15:56:26

Cita:

Empezado por esocrates (Mensaje 368326)
Te adjunto un archivo problema
Muchas gracia spor tu ayuda

El programa con el archivo problema
Delphi 7

Neftali [Germán.Estévez] 25-06-2010 16:05:08

Vale!
Está claro que en este caso el problema es el tamaño.

El fichero tiene formato correcto, pero parece que es demasiado grande para el componente estandard de Delphi. He realizado la prueba eliminando unas cuantas páginas y se carga correctamente.

Habría que investigar a partir de ahí.

esocrates 25-06-2010 16:09:34

Cita:

Empezado por Neftali (Mensaje 368329)
Vale!
Está claro que en este caso el problema es el tamaño.

El fichero tiene formato correcto, pero parece que es demasiado grande para el componente estandard de Delphi. He realizado la prueba eliminando unas cuantas páginas y se carga correctamente.

Habría que investigar a partir de ahí.

Hola Neftali:
Ahora tengo claro el problema y su solución.
Muchas gracias por tu ayuda y tiempo
Hasta pronto
Enrique


La franja horaria es GMT +2. Ahora son las 12:51:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi