Imprimir texto enriquecido variable

Re: Imprimir texto enriquecido variable

Postby cmsoft » Fri Nov 17, 2017 4:32 am

Roberto, aca te dejo el codigo para lo que necesitas, lo unico que le hice un poco de trampa al RTF
Lo que hago es tomar el texto del rtf y le saco el principio y fin de archivo (que lo mire con un editor como el Sublime) donde conte los caracteres que habia en el encabezado y en el fin de archivo. Luego si use el formato que te habia pasado.
Te lo pase a dbf porque entendi que era lo que estabas usando
Code: Select all  Expand view

#include "FiveWin.Ch"

FUNCTION Main()
use clientes
Merge('clientes','TEST1')
RETURN nil
*************************************************
** Armar documento rtf
*************************************************
PROCEDURE Merge(oRs,cDocu)
LOCAL oWord , oDoc, cText := "", cDoc , i, cTextBase, cIniArchivo,cFinArchivo
IF !FILE(hb_CurDrive()+":\"+curdir()+"\"+ALLTRIM(cDocu)+".rtf")
   MsgStop("
El archivo base no existe"+chr(10)+cDoc,"Error")
   RETURN  
ENDIF
cTextBase := MEMOREAD(hb_CurDrive()+"
:\"+curdir()+"\"+ALLTRIM(cDocu)+".rtf") // Leo el RTF
cIniArchivo := LEFT(cTextBase,87+86) // Guardo el encabezado
cFinArchivo := RIGHT(cTextBase,4)    // Guardo el fin de archivo
cTextBase := SUBSTR(cTextBase,87+86,LEN(cTextBase)-87-87-3) // Obtengo el texto RTF sin encabezado ni fin de archivo
DO WHILE !(oRs)->(EOF())
    cText := cText + cTextBase // Voy agregando a cText el texto sin encabezado ni fin
    FOR i := 1 TO (oRs)->(FCount())
        IF VALTYPE((oRs)->(Fieldget(i))) == "
C"
           cText := STRTRAN(ctext,"
<"+(oRs)->(FieldName(i))+">",ALLTRIM((oRs)->(Fieldget(i)))) // Reemplazo los campos, yo reemplazo todos, pero podes decir ue campos reemplazar
        ENDIF
    NEXT i
    (oRs)->(DBSkip())
ENDDO
cText := cIniArchivo + cText + cFinArchivo // Al texto con los reemplazos le pego el inicio y fin de archivo
memowrit( hb_CurDrive()+"
:\"+curdir()+"\"+ALLTRIM(cDocu)+" RESULTADO.rtf", cText ) // Grabo el nuevo texto en un solo archivo
   if   (oWord := WinWordObj() ) == nil
        MsgAlert( "
MS Word no instalado" ,  "Alerta" )        
        else
        oDoc = oWord:Documents:Open(hb_CurDrive()+"
:\"+curdir()+"\"+ALLTRIM(cDocu)+" RESULTADO.RTF")  // Lo abro con Word
        if oDoc == nil
           MsgAlert("
Fallo crear documento, verifique que no este en uso" , "Alerta"  )          
         endif
   endif  
   oDoc:Application:Visible := .t.
RETURN


Es medio medio, pero para lo que vos necesitas te va a servir.
Saludos
PD: Soy Cesar
User avatar
cmsoft
 
Posts: 1290
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Imprimir texto enriquecido variable

Postby acuellar » Fri Nov 17, 2017 1:12 pm

Gracias Cesar

Funciona perfecto.
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1643
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Imprimir texto enriquecido variable

Postby TOTOVIOTTI » Fri Nov 17, 2017 8:47 pm

Genio Ídolo Crack!
Muchas gracias!!!!!!!!!!!!!!!!!!!!!!!!!!!

Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 419
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Adolfredo Martinez, Google [Bot] and 83 guests