cmsoft wrote:Antonio, yo acá te había puesto la solucion para insertar un grafico en el rtf
cmsoft wrote: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
#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
Hola Amigo Cesar.
Disculpa no haber respondido antes.
Ya había considerado esta opción, luche todo 2 días con insertar el código QR, como resultado, al insertar el QR, se desformaba el RTF generado, ya que era el Qr, mas la imagen de la firma, cuando pensé que ya estaba avanzado, se presento el problema que Windows se bloqueaba, indicándome que la plantilla de RTF se encontraba abierta, lo que me obligaba a resetear el equipo, así con estos problemas, mas la presión por la insistencia del cliente, me vi en la obligación de abortar esta solución e intentar otra opción. Por este motivo no quise seguir
solicitando ayuda, el tiempo lo tenia en mi contra, ahora tendré que ver como justifico ante el cliente que la solución que le daré, es diferente a la que me planteo, ya que fue el cliente quien me plateo el uso de RTF.
Saludos.
Antonio