FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Imprimir texto enriquecido variable
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Imprimir texto enriquecido variable
Posted: Fri Nov 17, 2017 04: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 (fw): Select all Collapse
#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
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Imprimir texto enriquecido variable
Posted: Fri Nov 17, 2017 01:12 PM

Gracias Cesar

Funciona perfecto.

Saludos,



Adhemar C.
Posts: 470
Joined: Fri Feb 05, 2010 11:30 AM
Re: Imprimir texto enriquecido variable
Posted: Fri Nov 17, 2017 08:47 PM

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

Roberto

Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.ar

Continue the discussion