La previsualización de un reporte se puede envar por mail?

La previsualización de un reporte se puede envar por mail?

Postby armando.lagunas » Thu May 06, 2010 5:45 pm

Hola:

amigos del foro, pues eso, cuando genero un reporte y lo pre-visualizo, es posible realizar la impresión, que en vez sea enviado a la impresora, se envíe a Outlook y se pegue como texto en en cuerpo de un correo y pueda ser enviado?

es la idea de un cliente ya que me mencionó que el gasto de una hoja impresa ayudaría a que un árbol viviera un poco mas en esta tierra y le encuentro toda la razón.

Saludos desde Chile.
:D :D
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: La previsualización de un reporte se puede envar por mail?

Postby Armando » Thu May 06, 2010 5:51 pm

Tocayo:

Directamente vía código me parece que no es posible, yo lo hago a través de una impresora virtual que te crea el archivo PDF, lo pone en el adjunto de tu correo y abre tu correo predeterminado, listo para enviarse, o bien, tambien lo puedes mandar a la impresora para
que se imprima el papel.

Por cierto, se llama PDFFactory.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3068
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: La previsualización de un reporte se puede envar por mail?

Postby Manuel Valdenebro » Thu May 06, 2010 6:23 pm

Armando (Gato), lo que te dice Armando (ratón) es lo correcto. Hay una posible solución que aunque laboriosa, quizas pueda servirte si el cliente merece el esfuerzo:

1) Tienes que poner un botón en el preview para enviar por email. Al pulsar este botón, llama a una funcion y al volver de esta funcion finaliza el previo.

2) En la función que hemos llamado en el punto anterior, preparas en códifo HTML el contenido del report y finaliza enviando el email con el texto HTML.
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: La previsualización de un reporte se puede envar por mail?

Postby Alfredo Arteaga » Fri May 07, 2010 4:01 am

En mi caso uso este código para generar archivos PDF y enviar los documentos por correo:

También he realizado cambios a TPrinter para generar el PDF sin pasar por la vista previa y hacer lo que se desee con el archivo generado.

oPrn:=PrintBegin(cName,.F.,lPrv,,.T.,lPdf,cFile)

Descargas: http://www.despachoarteaga.com.mx/Print2Pdf.zip

Code: Select all  Expand view
// --- Cambios a RPreview para trabajar con Image2PDF

// ---
     DEFINE BUTTON RESOURCE "Acrobat" OF oBar ;
          MESSAGE "Generar archivo tipo PDF"  ;
          ACTION  SavePDF( oDevice, .f. ) ;
          TOOLTIP "Generar archivo PDF"

     DEFINE BUTTON RESOURCE "Email" OF oBar ;
          MESSAGE "Enviar archivo PDF por correo"  ;
          ACTION  SavePDF( oDevice, .t. ) ;
          TOOLTIP "Enviar por correo"

// ---
               MENUITEM "Generar PDF" ACTION SavePDF( oDevice, .f. ) ;
                    MESSAGE "Generar archivo tipo PDF" RESOURCE "Acrobat"

               MENUITEM "Enviar por correo" ACTION SavePDF( oDevice, .t. ) ;
                    MESSAGE "Enviar archivo PDF por correo" RESOURCE "Email"



FUNCTION SavePDF(oDevice,lEmail)
   LOCAL error, hLibImg2PDF
   LOCAL imageFilename:=" "
   LOCAL cPdfFilename
   LOCAL nI, iErr:=0
   LOCAL aFiles:={}, cTemp, oMail, cMail, cNick
   LOCAL oDlg, oFont, oEml[4], aEml[4], lCont:=.f.
   cPdfFileName:=cUTem+"\"+Left(cNSys,2)+"_Temp\"+oDevice:cDocument+".Pdf"
   IF !File("
Image2PDF.Dll")
      MsgAlert("
No existe DLL para generar PDFs.","Precaución!")
      RETURN (NIL)
   ENDIF
   aFiles:=oDevice:aMeta
   hLibImg2PDF:=LoadLib32("
Image2PDF.Dll")
   IF ValType(aFiles)=="
A"
      I2PDF_License("
LICENCIA")
      iErr:=IPMeta()              // Flag that his is a meta file
      iErr:=IPSize()              // Reset the size
      iErr:=IPMetaAdjustText()
      iErr:=IPSetDPI(0)           // Set DPI to the default for PDF's.  It works better
      FOR nI:=1 TO Len(aFiles)    // Build the pages using the array of temp files
         CursorWait()
         imageFilename:=aFiles[nI]
         iErr:=IPAddImg(imageFilename)
      NEXT nI
      CursorWait()
      iErr:=IPMakePDF(cPdfFileName,0,error,40)   // Create the PDF.
   ENDIF
   FreeLib32(hLibImg2PDF)
   CursorArrow()
   IF !File(cPdfFileName)
      MsgInfo("
No se generó el archivo PDF.","Información!")
   ELSE
      IF !lEmail
         ShellExecute(,"
Open",cPdfFileName,"",".\",.T.)
      ELSE
         aEml[1]:="
"
         aEml[2]:=AllTrim(Control->NomEmp)
         aEml[3]:=oDevice:cDocument+"
.Pdf"
         aEml[4]:="
Adjunto información de... "
         DEFINE FONT oFont NAME "
MS Sans Serif" SIZE 0,-10
         DEFINE DIALOG oDlg RESOURCE "
Email" FONT oFont
         REDEFINE GET oEml[1] VAR aEml[1] ID 101 MEMO OF oDlg VALID !Empty(aEml[1])
         oEml[1]:bGotFocus:={|| oEml[1]:SetSel(0,0)}
         REDEFINE GET oEml[2] VAR aEml[2] ID 102 MEMO OF oDlg VALID !Empty(aEml[2])
         oEml[2]:bGotFocus:={|| oEml[2]:SetSel(0,0)}
         REDEFINE GET oEml[3] VAR aEml[3] ID 103 MEMO OF oDlg VALID !Empty(aEml[3])
         oEml[3]:bGotFocus:={|| oEml[3]:SetSel(0,0)}
         REDEFINE GET oEml[4] VAR aEml[4] ID 104 MEMO OF oDlg VALID !Empty(aEml[4])
         oEml[4]:bGotFocus:={|| oEml[4]:SetSel(0,0)}
         REDEFINE BUTTON ID 110 OF oDlg ACTION (lCont:=.T.,oDlg:End())
         REDEFINE BUTTON ID 120 OF oDlg ACTION (lCont:=.F.,oDlg:End()) CANCEL
         ACTIVATE DIALOG oDlg
         IF lCont
            cNick:=Substr(aEml[1],1,AT("
@",aEml[1])-1)
            DEFINE MAIL oMail  ;
               SUBJECT aEml[2] ;
               TO cNick,aEml[1] FILES cPdfFileName,cPdfFileName TEXT aEml[4]
            ACTIVATE MAIL oMail
         ENDIF
         oFont:End()
      ENDIF
   ENDIF
RETURN (NIL)

//--- Wrappers para Image2PDF ---------------------------------------------------------------//


   DLL32 STATIC FUNCTION I2PDF_License( code AS LPSTR) AS LONG;
   PASCAL FROM "
I2PDF_License" LIB "IMAGE2PDF.dll"

   DLL32 STATIC FUNCTION IPMeta( ) AS LONG;
   PASCAL FROM "
I2PDF_MetaToNativePDF" LIB "Image2PDF.dll"

   DLL32 STATIC FUNCTION IPMetaAdjustText() AS LONG;
   PASCAL FROM "
I2PDF_MetaTextFitBoundingRect" LIB "Image2PDF.dll"

   DLL32 STATIC FUNCTION IPSize( ) AS LONG;
   PASCAL FROM "
I2PDF_UseEMFDeviceSize" LIB "Image2PDF.DLL"

   DLL32 STATIC FUNCTION IPAddImg( cImage AS LPSTR ) AS LONG;
   PASCAL FROM "
I2PDF_AddImage" LIB "Image2PDF.dll"

   DLL32 STATIC FUNCTION IPSetDpi( nDpi AS LONG ) AS LONG;
   PASCAL FROM "
I2PDF_SetDPI" LIB "Image2PDF.dll"

   DLL32 STATIC FUNCTION IPMakePDF( cOutFile AS LPSTR, nOptions AS LONG, cErrTxt AS LPSTR, nMaxESize AS LONG ) AS LONG;
   PASCAL FROM "
I2PDF_MakePDF" LIB "Image2PDF.dll"

   DLL32  FUNCTION COPYFILE( cExistName AS LPSTR, cNewName AS LPSTR, nFailIfExist AS LONG ) AS BOOL;
   PASCAL FROM "
CopyFileA" LIB "kernel32.dll"

   DLL32 FUNCTION xI2PDF_BatesFormat( format AS LPSTR ) AS LONG;
   PASCAL FROM "
I2PDF_BatesFormat" LIB "Image2PDF.dll"

   DLL32 FUNCTION xI2PDF_BatesLocation( verticalPosition AS LONG, horizontalPosition AS LONG, orientation AS LONG, margin AS LONG) AS LONG;
   PASCAL FROM "
I2PDF_BatesLocation" LIB "Image2PDF.dll"

   DLL32 FUNCTION xI2PDF_BatesFont_Int( iSize AS LONG, FontID AS LPSTR, fillRed AS LONG, fillGreen AS LONG, fillBlue AS LONG, iStyle AS LONG, otherRed AS LONG, otherGreen AS LONG, otherBlue AS LONG) AS LONG;
   PASCAL FROM "
I2PDF_BatesFont_Int" LIB "Image2PDF.dll"

   DLL32 FUNCTION xI2PDF_BatesBackground_Int( shape AS LONG, bkRed AS LONG, bkGreen AS LONG, bkBlue AS LONG, borderRed AS LONG, borderGreen AS LONG, borderBlue AS LONG  ) AS LONG;
   PASCAL FROM "
I2PDF_BatesBackground_Int" LIB "Image2PDF.dll"

//-------------------------------------------------------------------------------------------//

User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Re: La previsualización de un reporte se puede envar por mail?

Postby Carles » Fri May 07, 2010 8:34 pm

Armando,

En la clase Rpreview, busca el metodo ::printprv(). Alla es donde se borra los metafiles ->DeleteEnhMetafile( hMeta ). Puedes tratarlo como quiera, p.e. hacer una copia a una carpeta, enviarlos, ... y borrarlos luego claro :-)

Ciao.
C.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1095
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: La previsualización de un reporte se puede envar por mail?

Postby armando.lagunas » Sat May 08, 2010 4:07 am

ok gracias por sus consejos, lo voy a implementar y cuando lo tenga funcionando les comento.


Saludos desde Chile.
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: La previsualización de un reporte se puede envar por mail?

Postby joseluisysturiz » Sun Mar 06, 2011 8:24 pm

El link esta roto, sera que alguien lo puede re-subir o informar de donde descargarlo, gracias.
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 7 guests