Conversor de RTF a HTML, en .dll bajo c#

411 views
Skip to first unread message

Miguel Angel

unread,
Oct 4, 2012, 4:42:53 AM10/4/12
to publice...@googlegroups.com
Hola.

En la URL http://matthewmanela.com/blog/converting-between-rtf-to-html-and-html-to-rtf/ podéis encontrar una librería desarrollada bajo c# que permite convertir (entre otros) de RTF a HTML.

Se genera una .DLL que en teoría debería ser utilizable en VFP.

La librería hay que firmarla (Strong name) y aquí me he quedado pillado, para registrarlo he probado con:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegSvcs.exe MarkupConverter.dll
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe MarkupConverter.dll

Cuando lo intento usar desde VFP:

objConvertir = CreateObject("MarkupConverter.RtfToHtmlConverter")
MESSAGEBOX(objConvertir.ConvertRtfToHtml(thisform.oleRTF.textRTF),0,"Prueba")

, me dice que no lo encuentra.

¿Alguien tiene alguna idea de cómo usar los ensamblados de .net en vfp y sobre todo como registrarlo?

Gracias y recibir un cordial saludo.

Pablo Daniel Lissa

unread,
Oct 4, 2012, 7:48:47 AM10/4/12
to publice...@googlegroups.com
Hola:

Si la DLL está firmada, te debe faltar el modificador /codebase, que va con el comando RegAsm.

En el siguiente artículo está el ciclo completo de generación y consumo de una DLL de .Net en VFP:
    http://www.portalfox.com/index.php?name=News&file=article&sid=2777

Espero que te sirva. Saludos.
------------------------------------------------------------------------------------------------------------------------------

Miguel Angel

unread,
Oct 4, 2012, 11:13:16 AM10/4/12
to publice...@googlegroups.com
Pablo gracias por la respuesta.

El problema es de esos por los que empiezas a maldecir a Ms y no paras ... en la propiedades del proyecto de VS (botón derecho sobre el proyecto, opción Propiedades), en la ventana que muestra, en la pestaña "Aplicación", pulsar el botón "Información del ensamblado..." y en la ventana que se despliega activar el check de "Crear ensamblado visible a través de COM".

Ahora al registrarla con RegAsm: "Types registered successfully"

El problema es que ahora cuando intento usarla desde VFP me muestra: OLE error code 0x80040154: Clase no registrada.

Antes era que el ESPACIONOMBRE.CLASE no se encontraba.

Gracias por vuestra ayuda, la verdad es que esto empieza a desesperarme.
Saludos.


Pablo Daniel Lissa

unread,
Oct 4, 2012, 11:24:24 AM10/4/12
to publice...@googlegroups.com
¿Probaste con algo como lo siguiente?

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe MarkupConverter.dll /register /codebase /tlb

Éxitos. Saludos.
-------------------------------------------------------------------------------------------------------------------------------

Miguel Angel

unread,
Oct 4, 2012, 11:39:17 AM10/4/12
to publice...@googlegroups.com
Hola.

Si, me dice:
"Types registered successfully
Assembly exported to 'pru.tlb', and the type library was registered successfully"

NOTA: es una librería muy sencilla que he creado para pruebas, por eso de probar con lo más sencillo posible.

Saludos.

Pablo Daniel Lissa

unread,
Oct 4, 2012, 12:33:48 PM10/4/12
to publice...@googlegroups.com
¿La clase está como pública?

Sino, pasame la DLL (si se puede) y yo pruebo a registrarla.

Saludos.
------------------------------------------------------------------------------------------------
Message has been deleted
Message has been deleted

Daniel Sánchez

unread,
Oct 4, 2012, 2:16:20 PM10/4/12
to publice...@googlegroups.com
Yo uso perfectamente este código para convertir el contenido de un objeto olecontrol richtext de mi formulario y me devuelve en formato htlm

Local LCHTML As String, LCCOLOR As String, LCSHARP As String, LCALIGN As String, LCFONT As String, LCTMPCOLOR As String, LCTMPLINK As String, LCCHARSET As String, LCCODEASCII As String, LCCURCHAR As String, LCCURHIGHLIGHTCOLOR As String
Local LNORIGSTART As Integer, LNORIGLENGTH As Integer, LNCHARINDEX As Integer, LNALIGN As Integer, LNFONTSIZE As Integer, LINDEX As Integer, LNENDLINK As Integer, LNSTARTLINK As Integer, LNRTFCOLORS As Integer, LNCURHIGHLIGHTINDEX As Integer, LNDANGLINGSPAN As Integer
Local LLBOLD As LOGICAL, LLITALIC As LOGICAL, LLUNDERLINE As LOGICAL, LLWARNUSER As LOGICAL, LLSTRIKED As LOGICAL, LLBULLET As LOGICAL, LLHIGHLIGHT As LOGICAL, LLSTYLECHANGE As LOGICAL, LLSUBSCRIPT As LOGICAL, LLSUPERSCRIPT As LOGICAL
Local LOOCX As OleControl
Local LACOLORTBL[1]
LLWARNUSER = .T.
LCCURHIGHLIGHTCOLOR = ""
LNDANGLINGSPAN = 0
LOOCX = This.OOLERTF &&aqui hace referencia al objeto olecontrol del richtext que debe estar en tu formulario con el contenido en texto enriquecido
If Len(LOOCX.Text)>0
LCSHARP = "#"
LNORIGSTART = 0
LNGORIGLENGTH = Len(LOOCX.Text)
LOOCX.SelStart = 0
LOOCX.SelLength = 1
LCHTML = ""
LCCOLOR = Right("000000"+Substr(Transform(LOOCX.SELCOLOR, "@0"), 3), 6)
LCCOLOR = Right(LCCOLOR, 2)+Substr(LCCOLOR, 3, 2)+Left(LCCOLOR, 2)
LLBOLD = LOOCX.SELBOLD
LLITALIC = LOOCX.SELITALIC
LLUNDERLINE = LOOCX.SELUNDERLINE
LLSTRIKED = LOOCX.SELSTRIKETHRU
LLSUBSCRIPT = LOOCX.SELCHAROFFSET<0
LLSUPERSCRIPT = LOOCX.SELCHAROFFSET>0
LLBULLET = .F.
LLHIGHLIGHT = Atc('\highlight', LOOCX.SELRTF)>0
LCFONT = LOOCX.SELFONTNAME
LNFONTSIZE = LOOCX.SELFONTSIZE
LNALIGN = LOOCX.SELALIGNMENT
LCALIGN = Icase(LOOCX.SELALIGNMENT=0, 'Left', LOOCX.SELALIGNMENT=1, 'Right', LOOCX.SELALIGNMENT=2, 'Center', 'Left')
LCHTML = LCHTML+'<div align="'+LCALIGN+'">'
LCHTML = LCHTML+'<span style="font-family: '+LCFONT+'; font-size: '+Transform(LNFONTSIZE)+'pt; color: '+LCSHARP+Left(LCCOLOR, 6)+'">'
LCHTML = LCHTML+Iif(LLBOLD, '<b>', "")+Iif(LLITALIC, '<i>', "")+Iif(LLUNDERLINE, '<u>', "")+Iif(LLSTRIKED, '<del>', "")
LNCHARINDEX = 0
Do While LNCHARINDEX<=Len(LOOCX.Text)
LNCHARINDEX = LNCHARINDEX+1
LOOCX.SelStart = LNCHARINDEX-1
LOOCX.SelLength = 1
If Len(LOOCX.SelText)>0
If Asc(LOOCX.SelText)=32 .And. LLWARNUSER
If Atc(LOOCX.SELRTF, "\pict\")>0
If LLWARNUSER
Messagebox("Warning! Images are ignored!!!", 48, "Warning")
Endif
Endif
Endif
Endif
LCTMPCOLOR = Right("000000"+Substr(Transform(LOOCX.SELCOLOR, "@0"), 3), 6)
LCTMPCOLOR = Right(LCTMPCOLOR, 2)+Substr(LCTMPCOLOR, 3, 2)+Left(LCTMPCOLOR, 2)
LLSTYLECHANGE = LCTMPCOLOR<>LCCOLOR .Or. LOOCX.SELFONTNAME<>LCFONT .Or. LOOCX.SELFONTSIZE<>LNFONTSIZE .Or. LOOCX.SELALIGNMENT<>LNALIGN
If LOOCX.SELCHAROFFSET>=0
If LLSUBSCRIPT
LCHTML = LCHTML+"</sub>"
Endif
Endif
If LOOCX.SELCHAROFFSET<=0
If LLSUPERSCRIPT
LCHTML = LCHTML+"</sup>"
Endif
Endif
If LOOCX.SELSTRIKETHRU<>LLSTRIKED
If LLSTRIKED
LCHTML = LCHTML+'</del>'
Endif
Endif
If LOOCX.SELUNDERLINE<>LLUNDERLINE
If LLUNDERLINE
LCHTML = LCHTML+"</u>"
Endif
Endif
If LOOCX.SELITALIC<>LLITALIC
If LLITALIC
LCHTML = LCHTML+"</i>"
Endif
Endif
If LOOCX.SELBOLD<>LLBOLD
If LLBOLD
LCHTML = LCHTML+"</b>"
Endif
Endif
If  .Not. LLSTYLECHANGE
If LLHIGHLIGHT .And. Atc('\highlight', LOOCX.SELRTF)>0
LNCURHIGHLIGHTINDEX = Val(Strextract(LOOCX.SELRTF, '\highlight', ' '))
LNRTFCOLORS = This._GET_COLORTBL(Strextract(LOOCX.SELRTF, '{\colortbl ;', '}', 1), @LACOLORTBL)
If  .Not. LCCURHIGHLIGHTCOLOR=LACOLORTBL(LNCURHIGHLIGHTINDEX, 2)
LCHTML = LCHTML+Iif( .Not. Empty(LCCURHIGHLIGHTCOLOR), '</span>', "")
LLHIGHLIGHT = .F.
Endif
Endif
If LLHIGHLIGHT<>(Atc('\highlight', LOOCX.SELRTF)>0)
If  .Not. LLHIGHLIGHT
LNCURHIGHLIGHTINDEX = Val(Strextract(LOOCX.SELRTF, '\highlight', ' '))
LNRTFCOLORS = This._GET_COLORTBL(Strextract(LOOCX.SELRTF, '{\colortbl ;', '}', 1), @LACOLORTBL)
If LNCURHIGHLIGHTINDEX>0 .And. LNCURHIGHLIGHTINDEX<=LNRTFCOLORS
LCHTML = LCHTML+'<span style="background-color: '+LACOLORTBL(LNCURHIGHLIGHTINDEX, 1)+'">'
LCCURHIGHLIGHTCOLOR = LACOLORTBL(LNCURHIGHLIGHTINDEX, 2)
Endif
LLHIGHLIGHT = .T.
Endif
If LLHIGHLIGHT .And. Atc('\highlight', LOOCX.SELRTF)=0
LCHTML = LCHTML+'</span>'+Replicate('</span>', LNDANGLINGSPAN)
LLHIGHLIGHT = .F.
LNDANGLINGSPAN = 0
Endif
Endif
Else
If LLBOLD .And. LOOCX.SELBOLD
LCHTML = LCHTML+"</b>"
LLBOLD = .F.
Endif
If LLITALIC .And. LOOCX.SELITALIC
LCHTML = LCHTML+"</i>"
LLITALIC = .F.
Endif
If LLUNDERLINE .And. LOOCX.SELUNDERLINE
LCHTML = LCHTML+"</u>"
LLUNDERLINE = .F.
Endif
If LLSTRIKED .And. LOOCX.SELSTRIKETHRU
LCHTML = LCHTML+'</del>'
LLSTRIKED = .F.
Endif
LCHTML = LCHTML+Iif(LLHIGHLIGHT, "", "</span>")
LNDANGLINGSPAN = LNDANGLINGSPAN+Iif(LLHIGHLIGHT, 1, 0)
If LOOCX.SELALIGNMENT<>LNALIGN
LCALIGN = Icase(LOOCX.SELALIGNMENT=0, 'Left', LOOCX.SELALIGNMENT=1, 'Right', LOOCX.SELALIGNMENT=2, 'Center', 'Left')
LCHTML = LCHTML+'</div><div align="'+LCALIGN+'">'
Endif
LCHTML = LCHTML+'<span style="font-family: '+LOOCX.SELFONTNAME+'; font-size: '+Transform(LOOCX.SELFONTSIZE)+'pt; color: '+LCSHARP+LCTMPCOLOR+'">'
If LLHIGHLIGHT .And. Atc('\highlight', LOOCX.SELRTF)>0
LNCURHIGHLIGHTINDEX = Val(Strextract(LOOCX.SELRTF, '\highlight', ' '))
LNRTFCOLORS = This._GET_COLORTBL(Strextract(LOOCX.SELRTF, '{\colortbl ;', '}', 1), @LACOLORTBL)
If  .Not. LCCURHIGHLIGHTCOLOR=LACOLORTBL(LNCURHIGHLIGHTINDEX, 2)
LCHTML = LCHTML+Iif( .Not. Empty(LCCURHIGHLIGHTCOLOR), '</span>', "")
LLHIGHLIGHT = .F.
Endif
Endif
If LLHIGHLIGHT<>(Atc('\highlight', LOOCX.SELRTF)>0)
If  .Not. LLHIGHLIGHT
LNCURHIGHLIGHTINDEX = Val(Strextract(LOOCX.SELRTF, '\highlight', ' '))
LNRTFCOLORS = This._GET_COLORTBL(Strextract(LOOCX.SELRTF, '{\colortbl ;', '}', 1), @LACOLORTBL)
If LNCURHIGHLIGHTINDEX>0 .And. LNCURHIGHLIGHTINDEX<=LNRTFCOLORS
LCHTML = LCHTML+'<span style="background-color: '+LACOLORTBL(LNCURHIGHLIGHTINDEX, 1)+'">'
LCCURHIGHLIGHTCOLOR = LACOLORTBL(LNCURHIGHLIGHTINDEX, 2)
Endif
LLHIGHLIGHT = .T.
Endif
If LLHIGHLIGHT .And. Atc('\highlight', LOOCX.SELRTF)=0
LCHTML = LCHTML+'</span>'
LLHIGHLIGHT = .F.
Endif
Endif
Endif
If  .Not. LLBULLET .And. LOOCX.SELBULLET
LCHTML = LCHTML+'<li>'
LLBULLET = LOOCX.SELBULLET
Else
If LLBULLET .And.  .Not. LOOCX.SELBULLET
LLBULLET = LOOCX.SELBULLET
Endif
Endif
If LOOCX.SelText=Chr(10) .Or. Len(LOOCX.SelText)=0
LCHTML = LCHTML+"<br />"+Chr(13)+Chr(10)
LLBULLET = .F.
LNCHARINDEX = LNCHARINDEX+1
Endif
If LOOCX.SELBOLD<>LLBOLD
If LOOCX.SELBOLD
LCHTML = LCHTML+"<b>"
Endif
Endif
If LOOCX.SELITALIC<>LLITALIC
If LOOCX.SELITALIC
LCHTML = LCHTML+"<i>"
Endif
Endif
If LOOCX.SELUNDERLINE<>LLUNDERLINE
If LOOCX.SELUNDERLINE
LCHTML = LCHTML+"<u>"
Endif
Endif
If LOOCX.SELSTRIKETHRU<>LLSTRIKED
If LOOCX.SELSTRIKETHRU
LCHTML = LCHTML+'<del>'
Endif
Endif
If LLSUBSCRIPT<>(LOOCX.SELCHAROFFSET<0)
If LOOCX.SELCHAROFFSET<0
LCHTML = LCHTML+"<sub>"
Endif
Endif
If LLSUPERSCRIPT<>(LOOCX.SELCHAROFFSET>0)
If LOOCX.SELCHAROFFSET>0
LCHTML = LCHTML+"<sup>"
Endif
Endif
If Len(LOOCX.SelText)>0
If Atc("\ul\", LOOCX.SELRTF)>0 .And. Atc(Substr(LOOCX.Text, LNCHARINDEX+1), ">")>0
If Atc(Substr(LOOCX.Text, LNCHARINDEX+1), ">")<Atc(Substr(LOOCX.TEXTRTF, LNCHARINDEX+1), "\ulnone")
LNENDLINK = Atc(Substr(LOOCX.Text, LNCHARINDEX+1), ">")
LNSTARTLINK = Atc(Substr(LOOCX.Text, LNCHARINDEX+1), "<")
For LINDEX = LNCHARINDEX To LNENDLINK
LOOCX.SelStart = (LINDEX-1)
LOOCX.SelLength = 1
If Atc("\ul\", LOOCX.SELRTF)<=0
Exit
Endif
Endfor
LOOCX.SelStart = (LNCHARINDEX-1)
LOOCX.SelLength = 1
If LINDEX=LNLOOP
LCTMPLINK = Substr(LOOCX.Text, LNCHARINDEX, LNENDLINK-LNCHARINDEX)
LCTMPLINK = Substr(LCTMPLINK, Atc("<", LCTMPLINK)+1)
LCHTML = LCHTML+'<a href="'+LCTMPLINK+'" target = "_blank">'+Substr(LOOCX.Text, LNCHARINDEX, LNSTARTLINK-LNCHARINDEX)+'</a>'
Endif
Endif
Else
If LOOCX.SelText="?" .And. Atc(" ?}", LOOCX.SELRTF)=0
If Atc("\'", LOOCX.SELRTF)>0
LCCODEASCII = Strextract(LOOCX.SELRTF, "\'", ")", 1)
LCCODEASCII = "&h0"+LCCODEASCII
Else
LCCODEASCII = Substr(LOOCX.SELRTF, Atc("?}", LOOCX.SELRTF)-5, 5)
Endif
LCHTML = LCHTML+"&#"+Transform(Val(LCCODEASCII))+";"
LNCHARINDEX = LNCHARINDEX+1
Else
LCCURCHAR = LOOCX.SelText
Do Case
Case LCCURCHAR="<"
LCHTML = LCHTML + [&lt;]
Case LCCURCHAR=">"
LCHTML = LCHTML + [&gt;]
Case LCCURCHAR='"'
LCHTML = LCHTML + [&quot;]
Case Inlist(LCCURCHAR, Chr(13), Chr(10))
Case LCCURCHAR=" "
If Right(LCHTML, 1)=" "
LCHTML = Left(LCHTML, Len(LCHTML) - 1) + "&nbsp;&nbsp;"
Else
If Right(LCHTML, 6) = "&nbsp;" Or LOOCX.SelStart < 1
LCHTML = LCHTML + "&nbsp;"
Else
LCHTML = LCHTML+" "
Endif
Endif
Otherwise
LCHTML = LCHTML+LCCURCHAR
Endcase
Endif
Endif
Endif
LCCOLOR = Right("000000"+Substr(Transform(LOOCX.SELCOLOR, "@0"), 3), 6)
LCCOLOR = Right(LCCOLOR, 2)+Substr(LCCOLOR, 3, 2)+Left(LCCOLOR, 2)
LLBOLD = LOOCX.SELBOLD
LLITALIC = LOOCX.SELITALIC
LLUNDERLINE = LOOCX.SELUNDERLINE
LLSTRIKED = LOOCX.SELSTRIKETHRU
LLSUBSCRIPT = LOOCX.SELCHAROFFSET<0
LLSUPERSCRIPT = LOOCX.SELCHAROFFSET>0
LCFONT = LOOCX.SELFONTNAME
LNFONTSIZE = LOOCX.SELFONTSIZE
LNALIGN = LOOCX.SELALIGNMENT
LCALIGN = Icase(LOOCX.SELALIGNMENT=0, 'Left', LOOCX.SELALIGNMENT=1, 'Right', LOOCX.SELALIGNMENT=2, 'Center', 'Left')
This.AFTER_CHARACTER(LNCHARINDEX)
Enddo
LCHTML = LCHTML+Iif(LLSTRIKED, '</del>', "")+Iif(LLBOLD, "</b>", "")+Iif(LLITALIC, "</i>", "")+Iif(LLUNDERLINE, "</u>", "")
LCHTML = LCHTML+'</span></div>'
LOOCX.SelStart = LNORIGSTART
LOOCX.SelLength = LNORIGLENGTH
Else
LCHTML = ""
Endif
Return LCHTML


--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú
Message has been deleted

Miguel Angel

unread,
Oct 5, 2012, 4:08:58 AM10/5/12
to publice...@googlegroups.com

Hola.
Gracias por las respuestas.

Ahora pruebo los que me indicáis. Por si a alguien le es útil (ahora o en el futuro) os paso algunas cosas y pruebas realizadas.


El desarrollo está hecho en Visual Studio 2010 con Framework 4.0 compilado para que funcione en todos los sistemas operativos.

La clase de pruebas tiene este código:

using System;
namespace pru {
    public class Prueba {
        public Int32 Suma(Int32 x, Int32 y) { return x+y; }
    } // class
} // namespace

El código de la clase que me interesa se puede descargar desde la url que os comento al principio. Para hacer pruebas y puesto que no lograba hacerle funcionar la fuí modificando, el código de la clase de entrada es (por si logro subir la dll):

using ConvertRTF_HTML;
using System.Runtime.InteropServices;
namespace ConvertRTF_HTML {
    public class RTF_Html_Xaml {
        public string ConvertXamlToHtml(string xamlText) { return HtmlFromXamlConverter.ConvertXamlToHtml(xamlText, false); }
        public string ConvertHtmlToXaml(string htmlText) { return HtmlToXamlConverter.ConvertHtmlToXaml(htmlText, true); }
        public string ConvertRtfToHtml(string rtfText) { return RtfToHtmlConverter.ConvertRtfToHtml(rtfText); }
        public string ConvertHtmlToRtf(string htmlText) { return HtmlToRtfConverter.ConvertHtmlToRtf(htmlText); }
    } // class
} // namespace


La clase de prueba funciona en windows xp una vez registrado (lo voy a probar con la buena pero a ver si tengo un rato).

Falla en Windows 7 aunque se ejecute Fox con permisos de administrador.


El código de prueba para Fox es:

objPru = CreateObject("pru.Prueba")
ret=objPru.Suma(1,2)
? "ret= ",ret
MESSAGEBOX(ret,0,"Prueba")


En windows 7 funciona si se llama desde un ASP. CUANDO copie el archivo al c:\inetpub\wwwroot tuve que hacerlo con permisos de administrador (esto que comento creo que es importante). Ejemplo de código usado en el asp:

<html><body>
<h1>Prueba de DLL de c#</h1>
<%
Dim obj, ret
Set obj = Server.CreateObject("pru.Prueba") ' Se crea el objeto.
ret=obj.Suma(1,2) 'Se llama al metodo
Set obj = Nothing
%>
El resultado es <%= ret%> ' muestra un 3
</body></html>


Para registrar las .dll empleo algo similar a esto (he probado muchas variaciones):
...ruta...\Framework64\v4.....\RegAsm.exe C:\...ruta...\pru.dll /register /codebase /tlb

Para desregistrarlas:
...ruta...\Framework64\v4.....\RegAsm.exe C:\...ruta...\pru.dll /u


Lo que tengo claro es que se trata de un problema de permisos de Windows 7 con Visual FoxPro.

Si encuentro como subir ficheros os subo las dll's (pero un par de veces que he probado se me cuelga la página).


Si a alguien se le ocurre algo, le agradecería que lo comentara.

Miguel Angel

unread,
Oct 5, 2012, 4:21:10 AM10/5/12
to publice...@googlegroups.com

Las dll's (a ver si funciona).
dlls.rar

Miguel Angel

unread,
Oct 5, 2012, 7:54:38 AM10/5/12
to publice...@googlegroups.com

Hola de nuevo.

Gracias Daniel tu código funciona ..., lo mantendré como último recurso para este tema particular. Pero miraré a ver si soluciono el problema de la DLL.

Saludos.

PD: Si encuentro la solución la pongo aquí por si es útil en un futuro (o presente ;-).
Message has been deleted
Message has been deleted

Miguel Ab

unread,
Oct 16, 2012, 3:16:55 AM10/16/12
to publice...@googlegroups.com

¡¡¡No hay mal que 100 años dure, ni pesona que lo aguante!!!

Desde aqui agradeceros a todos el interés y a Alberto (MVP de Microsoft) que me dió la solución a este problema.

Al final es muy sencillo (como dicen por mi tierra a co*on visto, macho seguro):

Bastaba con registrarla usando el RegAsm.exe pero en su versión 32 bits, en mi caso me cogía la versión del Framework64 y ese era el problema.

Por lo demás todo correcto.
Un Saludo.

Kevin Rodriguez

unread,
Apr 29, 2013, 8:36:27 PM4/29/13
to publice...@googlegroups.com


El jueves, 4 de octubre de 2012 13:16:24 UTC-5, Daniel Sánchez escribió:
Yo uso perfectamente este código para convertir el contenido de un objeto olecontrol richtext de mi formulario y me devuelve en formato htlm

--
Sr.Daniel Sánchez Escobar

los metodos _GET_COLORTBL y AFTER_CHARACTER donde lo esta utilizando ??  
Reply all
Reply to author
Forward
0 new messages