Consulta Sobre Plantilla Word o Rtf "URGENTE"

Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby remtec » Mon Jun 20, 2022 9:21 pm

Amigos

Muy buenas tardes.

Hace un tiempo atrás, logre poder actualizar una plantilla Word, con datos variables y funciono muy bien.

He buscado en el foro algo que se ajuste a lo que necesito, pero no doy.

Pues ahora a esta misma plantilla, necesito incorporar 2 cosas:

- Un codigo QR, generado por dos datos variables (nFicha + cRut).

- Firma del profesional medico que se encuentra en BMP.

Actualmente lo que hace esta función, es abrir el archivo plantilla Word, reemplazar los campos variables que vienen de una dbf, grabar archivo en disco y al finalizar, imprimir una copia de este documento.

Hoy requiero, después de poder incorporar el QR y Firma, dar la opción de Imprimir directo o Exportar a PDF.


Necesito resolverlo con urgencia.

Saludos

Antonio

Código Funcionando Actualmente de la Función:
Code: Select all  Expand view  RUN


Function Genera_Examen_Altura(nFicha,cTAte,dfec,cNom,cRut,nEdad,cNaci,cOtos,cVis,cPes,cAlt,cPart,cPul,cFres,cEle,cGli,cEva,cHem,cUre,cOri)
   Local oWord, oSel, oDoc,cOrigen,cDestino,cFile,cSave, Nom1,rut1,naci1,cFilep,cSavep,cDestinop
   local oActiveDoc,aArrReplace, n

     IF MsgYesNo( "Desea Generar ARCHIVOS EXAMENES ALTURA / PRE-OCU ?","Ingrese Opción")
                Do Case
                        Case Tip_Ate1=="A"
                                If (Empty(cNom).or.Empty(cRut).or.Empty(nEdad).or.Empty(cNaci).or.Empty(cOtos).or.Empty(cVis).or.Empty(cPes) .or. Empty(cAlt).or. Empty(cPart) .or. Empty(cPul).or.Empty(cFres).or.Empty(cEva).or.Empty(cEle).or.Empty(cGli))

                                     Tone(3000)
                                     MsgInfo("Revise, Faltan Relacionados a Examen de Altura")
                                     Return .F.
                                Endif
                                MsgInfo( "Atención: "  + CRLF +;
                                            "En estos momentos Ud.Generará e Imprimirá" + CRLF +;
                                            "Un Informe de Examen de Altura, por lo que" + CRLF +;
                                            "Esperar hasta que se muestre un aviso con" + CRLF +;
                                                    "El Nombre del Informe Generado, en ese momento"  + CRLF +;
                                            "El Proceso habra terminado.")

                        Case Tip_Ate1=="P"
                                If (Empty(cNom).or.Empty(cRut).or.Empty(nEdad).or.Empty(cNaci).or.Empty(cOtos).or.Empty(cVis).or.Empty(cPes);
                                .or. Empty(cAlt).or. Empty(cPart) .or. Empty(cPul).or.Empty(cFres).or.Empty(cEva).or.Empty(cEle).or.Empty(cGli).or. Empty(cHem).or.Empty(cUre).or.Empty(cOri))


                                     Tone(3000)
                                     MsgInfo("Revise, Faltan Datos Relacionados a Examen de Altura o Pre-Ocupacional")
                                     Return .F.
                                Endif
                                MsgInfo( "Atención: "  + CRLF +;
                                            "En estos momentos Ud.Generará e Imprimirá" + CRLF +;
                                            "Un Informe de Examen de Altura y un Pre-Ocupacional" + CRLF +;
                                            "Esperar hasta que se muestre 2 avisos con El Nombre" + CRLF +;
                                                    "de los Informes Generados, en ese momento El Proceso"  + CRLF +;
                                            "habra terminado.")

                 EndCase

                cNom:= AnsiToOem(cNom)

                nEva:= aScan(aEvaMed,   { | array | array[1] == cEva} )
                cEva=aEvaMed[nEva ][2]   //  <--- Obtener Nombre del dato del arreglo

                cEle:= AnsiToOem(cEle)
                cGli:= AnsiToOem(cGli)
                cOrigen  :=  hb_CurDrive()+":\"+curdir()+"\Examenes\Doc_Bases\"
            cDestinoa := hb_CurDrive()+"
:\"+curdir()+"\Examenes\Altura\"
            cDestinop := hb_CurDrive()+"
:\"+curdir()+"\Examenes\Pre-Ocu\"

            cFile := "
AlturaBase.docx"
            cSave := "
Altura-"+alltrim(Str(nFicha,10))+"-"+cNom+".doc"

                cFilep := "
PreocuBase.docx"
            cSavep := "
Pre-"+alltrim(Str(nFicha,10))+"-"+cNom+".doc"

                If lDocAbierto(cOrigen + cFile)      //variable que contiene path , nombre, y ext. del fichero modelo o plantilla
                    MsgStop("
Documento " + cFile + " está abierto.","Alto")
                    Return .f.
            endif
                */

            TRY
                 oWord := win_oleCreateObject( "
Word.Application")

             CATCH
                 MsgInfo("
Word no está instalado en esta PC. No se puede continuar")
                 Return NIL
             END

             TRY
                 oDoc := oWord:Documents:Open(cOrigen + cFile)
             CATCH
                 MsgInfo("
No se puede abrir el archivo plantilla " + cOrigen + cFile)
                 oWord:Quit()
                 Return NIL
             END
             oDoc:Select()
             oSel = oWord:Selection
             aArrReplace := { { "
[nombrepaciente]", AllTrim(cNom) } ,;
                              { "
[rut]"           , AllTrim(cRut) } ,;
                              { "
[edad]"          , AllTrim(Str(nEdad,3)) } ,;
                                                     { "
[naciona]"       , AllTrim(cNaci) },;
                                                     { "
[otos]"          , AllTrim(cOtos) },;
                                                     { "
[visi]"          , AllTrim(cVis) },;
                                                     { "
[pes]"               , AllTrim(cPes) },;
                                                     { "
[alt]"               , AllTrim(cAlt) },;
                                                     { "
[par]"               , AllTrim(cPart) },;
                                                     { "
[pul]"               , AllTrim(cPul) },;
                                                     { "
[fr]"                , AllTrim(cFres) },;
                                                     { "
[eva]"               , AllTrim(cEva) },;
                                                     { "
[ekg]"               , AllTrim(cEle) },;
                                                     { "
[gli]"               , AllTrim(cGli) },;
                                                     { "
[fate]"          , Dtoc(dfec) } }

             For n:=1 to Len(aArrReplace)
                 Reemplaza_Text_F2( oSel, aArrReplace[n][1], aArrReplace[n][2] )
             Next n

                oWord:ActiveDocument:SaveAs(cDestinoa + cSave)
         //     oWord:ActiveDocument:PrintOut()     // Habilitar Imprime Dcoumento
            oWord:ActiveDocument:Close()




             SysRefresh()
                    MsgInfo("
Examen de Altura Generado "+cSave)
                    ** Si Existe Pre-Ocupacional
                    If cTAte = "
P"

                                If lDocAbierto(cOrigen + cFilep )      //variable que contiene path , nombre, y ext. del fichero modelo o plantilla
                                    MsgStop("
Documento " + cFilep + " está abierto.","Alto")
                                    Return .f.
                            endif

                          TRY
                                 oWord := win_oleCreateObject( "
Word.Application")

                          CATCH
                                 MsgInfo("
Word no está instalado en esta PC. No se puede continuar")
                                 Return NIL
                            END

                        TRY
                            oDoc := oWord:Documents:Open(cOrigen + cFilep )
                        CATCH
                            MsgInfo("
No se puede abrir el archivo plantilla " + cOrigen + cFilep)
                            oWord:Quit()
                            Return NIL
                        END

                     *  oWord:Visible:=.T.   // Para Mostrar

                        oDoc:Select()
                        oSel = oWord:Selection
                        // Crear Matriz de reemplazos
                        aArrReplace := { { "
[nombrepaciente]", AllTrim(cNom) } ,;
                                         { "
[rut]"           , AllTrim(cRut) } ,;
                                         { "
[edad]"          , AllTrim(Str(nEdad,3)) } ,;
                                                                 { "
[naciona]"       , AllTrim(cNaci) },;
                                                                 { "
[pes]"               , AllTrim(cPes) },;
                                                                 { "
[alt]"               , AllTrim(cAlt) },;
                                                                 { "
[par]"               , AllTrim(cPart) },;
                                                                 { "
[ekg]"               , AllTrim(cEle) },;
                                                                 { "
[eva]"               , AllTrim(cEva) },;
                                                                 { "
[gli]"               , AllTrim(cGli) },;
                                                                 { "
[hem]"               , AllTrim(cHem) },;
                                                                 { "
[ure]"               , AllTrim(cUre) },;
                                                                 { "
[ori]"               , AllTrim(cOri) },;
                                                                 { "
[fate]"          , Dtoc(dfec) } }

                            For n:=1 to Len(aArrReplace)
                                Reemplaza_Text_F2( oSel, aArrReplace[n][1], aArrReplace[n][2] )
                            Next n

                                oWord:ActiveDocument:SaveAs(cDestinop + cSavep)
                        //  oWord:ActiveDocument:PrintOut()     // Habilitar Para Imprimir
                            oWord:ActiveDocument:Close()



                            SysRefresh()

                                    MsgInfo("
Examen de Pre-Ocupacional Generado "+cSavep)

                    Endif
                    ** Fin Pre-Ocupa
         Endif
Return nil

//---------------------------------------------------//
Static Function Reemplaza_Text_F2( oSel, cSrc, cRpl)
    Local wdCollapseEnd:=0
    LOCAL oRng := oSel:Document:Content

    IF AT( cSrc, oRng:Text ) = 0
        RETURN .F.
    ENDIF

    WHILE oRng:Find:Execute( cSrc )
        oRng:Text = cRpl
        oRng:Collapse( wdCollapseEnd )
    ENDDO

RETURN .T.



// Para Consultar si Archivo Plantilla esta Abierto
Function lDocAbierto(cDocName)
        Local FO_EXCLUSIVE := 16
        local lOpen:=.f., nHand
          If ( nHand := FOPEN(cDocName, FO_EXCLUSIVE ) ) = -1
             lOpen := .t.
          Else
             FCLOSE( nHand )
          Endif
        Return lOpen


FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby remtec » Tue Jun 21, 2022 4:09 pm

Amigos.

Buen dia.

Alguna idea?, estoy muy complicado con esta exigencia...

Saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby Antonio Linares » Tue Jun 21, 2022 5:06 pm

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby remtec » Tue Jun 21, 2022 5:39 pm

Maestro Antonio

Buen día, muchas gracias por responder.

Lo que me sugieres, solo tiene relación con convertir Doc a Pdf, correspondería al ultimo paso de lo que requiero.

Mi prioridad es saber como puedo generar y agregar este código QR a mi plantilla, además como puedo agregar un BMP que corresponder a una firma, desde el código FWH.

Por hoy, tengo esta exigencia con urgencia.

Saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby cmsoft » Tue Jun 21, 2022 6:59 pm

Antonio:
Tanto el QR como la firma pueden ser 2 archivos BMP (o cualquier otro formato que elijas).
De esta manera, para armar el archivo RTF final, previamente tienes que tener los dos archivos de imágenes creados.
Luego, en la parte que quieras del documento, tiene que insertar esos dos archivos.
Por lo que leí, para insertar una imagen debes inserta el codigo RTF correspondiente, y la imagen, codificada en base64.
Algo de este estilo
{\pict\pngblip\picw10449\pich3280\picwgoal5924\pichgoal1860 hex data}
Hay mucha info en internet al respecto.. Yo nunca lo he hecho pero creo que ese es el camino...
Espero que te de una pista al menos
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby remtec » Tue Jun 21, 2022 7:49 pm

cmsoft wrote:Antonio:
Tanto el QR como la firma pueden ser 2 archivos BMP (o cualquier otro formato que elijas).
De esta manera, para armar el archivo RTF final, previamente tienes que tener los dos archivos de imágenes creados.
Luego, en la parte que quieras del documento, tiene que insertar esos dos archivos.
Por lo que leí, para insertar una imagen debes inserta el codigo RTF correspondiente, y la imagen, codificada en base64.
Algo de este estilo
{\pict\pngblip\picw10449\pich3280\picwgoal5924\pichgoal1860 hex data}
Hay mucha info en internet al respecto.. Yo nunca lo he hecho pero creo que ese es el camino...
Espero que te de una pista al menos


Hola Cesar.

Deseo que estés muy bien.

Muchas gracias por siempre darme tu ayuda.

Tengo otro link pendiente sobre un tema de verificación de código QR, donde me ofreciste tu ayuda y estoy muy agradecido por tu disposición, pero lo tengo pendiente. Pues este posteo que sobre el requerimiento de insertar código QR, es el origen ya me tiene muy complicado.

Aun cuando el requerimiento código QR, es muy solicitado, es una tendencia que no podemos evitar, hasta el momento, por todo lo que he leído, incluyendo lo que me indicas, no hay forma clara, de donde pueda lograr dar solución a esto, como me dijo un colega por acá de otro lenguaje de prog, como no lo puedes hacer, aquí es algo muy fácil, ahí quede dando vueltas.

Me estaba preguntando si puedo reemplazar una variable en una plantilla Word o Rtf, no podría asociar una imagen a esa variables?, quizás la búsqueda de solución me haga delirar?

He leído mucho en el foro, pero choco contra no saber aplicar o entender que con nuestra herramienta no podre hacerlo, se invierte demasiado tiempo, frente a la necesidad del cliente y la presión que ejerce, amigo, es muy complicado y estresa.

Esperado la ayuda divina, muchos saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby Antonio Linares » Tue Jun 21, 2022 9:00 pm

https://stackoverflow.com/questions/1490734/programmatically-adding-images-to-rtf-document

I found that most of RTF boxes using the following format:

{\object\objemb{\*\objclass Paint.Picture}\objw2699\objh4799{\*\objdata [hex/bin]}}
When [hex/bin] is large amount of hex strings representing the image format. This way working both for Word rtf, and both for RTF box - so it is more efficient.


Prueba a insertar eso y a ver si te funciona ;-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby Antonio Linares » Tue Jun 21, 2022 9:03 pm

Otra forma propuesta:

you must change "picwgoa" to "picwgoal" and "pichgoa" to "pichgoal"

string mpic = @"{\pict\pngblip\picw" +
img.Width.ToString() + @"\pich" + img.Height.ToString() +
@"\picwgoal" + width.ToString() + @"\pichgoal" + height.ToString() +
@"\bin " + str + "}";


\emfblip Source of the picture is an EMF (enhanced metafile).
\pngblip Source of the picture is a PNG.
\jpegblip Source of the picture is a JPEG.
\shppict Specifies a Word 97-2000 picture. This is a destination control word.
\nonshppict Specifies that Word 97-2000 has written a {\pict destination that it will not read on input. This keyword is for compatibility with other readers.
\macpict Source of the picture is QuickDraw.
\pmmetafileN Source of the picture is an OS/2 metafile. The N argument identifies the metafile type. The N values are described in the \pmmetafile table below.
\wmetafileN Source of the picture is a Windows metafile. The N argument identifies the metafile type (the default is 1).
\dibitmapN Source of the picture is a Windows device-independent bitmap. The N argument identifies the bitmap type (must equal 0).The information to be included in RTF from a Windows device-independent bitmap is the concatenation of the BITMAPINFO structure followed by the actual pixel data.
\wbitmapN Source of the picture is a Windows device-dependent bitmap. The N argument identifies the bitmap type (must equal 0).The information to be included in RTF from a Windows device-dependent bitmap is the result of the GetBitmapBits function.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby cmsoft » Tue Jun 21, 2022 10:12 pm

Antonio:
Tengo otro link pendiente sobre un tema de verificación de código QR, donde me ofreciste tu ayuda y estoy muy agradecido por tu disposición, pero lo tengo pendiente. Pues este posteo que sobre el requerimiento de insertar código QR, es el origen ya me tiene muy complicado.

Esto cuando quieras lo vemos...

Me estaba preguntando si puedo reemplazar una variable en una plantilla Word o Rtf, no podría asociar una imagen a esa variables?, quizás la búsqueda de solución me haga delirar?

Si, creo que por aca viene la cosa. Con lo que te escribió en el mensaje anterior Antonio Linares, es como creo que debe ser el proceso

He leído mucho en el foro, pero choco contra no saber aplicar o entender que con nuestra herramienta no podre hacerlo, se invierte demasiado tiempo, frente a la necesidad del cliente y la presión que ejerce, amigo, es muy complicado y estresa.

Entiendo que a veces los clientes nos ponen sus tiempos, y eso complica, pero creo que con Fivewin es totalmente posible realizar lo que te piden, solo hay que encontrar la manera.
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby cmsoft » Wed Jun 22, 2022 1:30 pm

Antonio, creo que aca esta tu solucion.
En el rtf base tienes que poner donde quieres que ponga la imagen con //IMAGEN// para que pueda reemplazarla.
Como te comente, previamente debes generar el QR en formato bmp y grabarlo en disco
Code: Select all  Expand view  RUN

#include "FiveWin.ch"

function Main()
LOCAL oDlg

   DEFINE DIALOG oDlg TITLE "This is a dialog" SIZE 400, 200
   @ 4,  8 BUTTON "Ok" ACTION Merge("C:\FWH\samples\base.rtf","C:\FWH\samples\QR.bmp")
   ACTIVATE DIALOG oDlg CENTERED

return nil


*************************************************
** Armar documento rtf
*************************************************
PROCEDURE Merge(cBase,cImg)
LOCAL oWord , oDoc, cText , cDoc , cImgBase64

cDoc := cBase
cImgBase64 :=  StrToHex(hb_memoread( cImg ) )
cText := MEMOREAD(cDoc)
cText := STRTRAN(ctext,"//IMAGEN//",'{\pict\pngblip\picw1000\pich1000\picwgoal1000\pichgoal1000\bin '+cImgBase64+' }')

   if !GrabaArchivo( 'c:\fwh\samples\antonio_nuevo.rtf', cText )
      MsgAlert("Fallo crear documento, verifique que no este en uso" , "Alerta"  )          
      RETURN
   ENDIF
   if   (oWord := WinWordObj() ) == nil
        MsgAlert( "MS Word no instalado" ,  "Alerta" )        
        else
        oDoc = oWord:Documents:Open('c:\fwh21\samples\antonio_nuevo.rtf')
        if oDoc == nil
           MsgAlert("Fallo crear documento, verifique que no este en uso" , "Alerta"  )          
         endif
   endif  
   oDoc:Application:Visible := .t.
RETURN

*****************
** Grabar archivo
FUNCTION GrabaArchivo(cArchivo,cDato)
LOCAL Han, nBytes, nErr
Han := FCreate(cArchivo)
nBytes := FWRITE(Han,cDato,Len(cDato))
nErr := Ferror()
IF nErr <> 0
   MsgStop("Error " + STR(nErr)+CHR(10)+cArchivo,"Error")
ENDIF
LCLOSE(Han)
RETURN nBytes = Len(cDato)
 

Espero te sirva
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby cmsoft » Wed Jun 22, 2022 3:00 pm

Otra forma, mucho más fácil, pero que no te genera un rtf, sino que lo usa y después te lo muestra en preview, es usando la nueva funcionalidad de Fivewin con print
Code: Select all  Expand view  RUN


function Imprimir()

   local oPrn, cRtf
   cRtf  := MEMOREAD( "MiRtfBase.rtf" )
   //Aca deberías reemplazar el texto variable del rtf

   PRINT oPrn PREVIEW  

   PAGE
     
      @ 1, 1 PRINT TO oPrn TEXT cRtf  SIZE 19,18 CM
     
      @ 19,01 PRINT TO oPrn IMAGE "firma.jpg"  CM
      @ 19,15 PRINT TO oPrn IMAGE "qr.bmp"  CM

   ENDPAGE
   ENDPRINT

return nil
 
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby remtec » Wed Jun 22, 2022 3:29 pm

Antonio Linares wrote:Otra forma propuesta:

you must change "picwgoa" to "picwgoal" and "pichgoa" to "pichgoal"

string mpic = @"{\pict\pngblip\picw" +
img.Width.ToString() + @"\pich" + img.Height.ToString() +
@"\picwgoal" + width.ToString() + @"\pichgoal" + height.ToString() +
@"\bin " + str + "}";


\emfblip Source of the picture is an EMF (enhanced metafile).
\pngblip Source of the picture is a PNG.
\jpegblip Source of the picture is a JPEG.
\shppict Specifies a Word 97-2000 picture. This is a destination control word.
\nonshppict Specifies that Word 97-2000 has written a {\pict destination that it will not read on input. This keyword is for compatibility with other readers.
\macpict Source of the picture is QuickDraw.
\pmmetafileN Source of the picture is an OS/2 metafile. The N argument identifies the metafile type. The N values are described in the \pmmetafile table below.
\wmetafileN Source of the picture is a Windows metafile. The N argument identifies the metafile type (the default is 1).
\dibitmapN Source of the picture is a Windows device-independent bitmap. The N argument identifies the bitmap type (must equal 0).The information to be included in RTF from a Windows device-independent bitmap is the concatenation of the BITMAPINFO structure followed by the actual pixel data.
\wbitmapN Source of the picture is a Windows device-dependent bitmap. The N argument identifies the bitmap type (must equal 0).The information to be included in RTF from a Windows device-dependent bitmap is the result of the GetBitmapBits function.


Buen dia Maestro Antonio.

Muchas gracias por su ayuda, revisare su información.

Saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby remtec » Wed Jun 22, 2022 3:31 pm

cmsoft wrote:Otra forma, mucho más fácil, pero que no te genera un rtf, sino que lo usa y después te lo muestra en preview, es usando la nueva funcionalidad de Fivewin con print
Code: Select all  Expand view  RUN


function Imprimir()

   local oPrn, cRtf
   cRtf  := MEMOREAD( "MiRtfBase.rtf" )
   //Aca deberías reemplazar el texto variable del rtf

   PRINT oPrn PREVIEW  

   PAGE
     
      @ 1, 1 PRINT TO oPrn TEXT cRtf  SIZE 19,18 CM
     
      @ 19,01 PRINT TO oPrn IMAGE "firma.jpg"  CM
      @ 19,15 PRINT TO oPrn IMAGE "qr.bmp"  CM

   ENDPAGE
   ENDPRINT

return nil
 


Hola Amigo Cesar.

Como estas?

Muy agradecido por disposicion a ayudarme y por todo tu tiempo dedicado.

Probare como resulta lo que me indicas.

Muchos Saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby remtec » Wed Jun 22, 2022 11:34 pm

Hola Amigo Cesar.

Probé tu código, es algo parecido a lo que ya había tratado de hacer.

Las plantillas tiene un encabezado y un pie de pagina, pero la lectura que hace MEMOREAD(), de un archivo RTF o Word, es solo el cuerpo, no lee los encabezado ni pie de pagina, es por ello que considere insertar el código qr y la firma en el archivo que se genera con la plantilla. Definitivamente así, no me sirve para las exigencias del cliente.

Por mas que leo buscando solución, mas me enredo.

Muchos Saludos y muchas gracias.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Plantilla Word o Rtf "URGENTE"

Postby cmsoft » Thu Jun 23, 2022 1:00 am

Efectivamente, no toma el encabezado ni pie de página de un rtf.
Tal vez Mr. Rao pueda decirnos si hay solución para esto.
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 114 guests