REPORTLISTENER EXPORTAR PREVIEW DE ZOOM 500% A JPG BMP ETC

349 views
Skip to first unread message

Hernán_Angelini

unread,
May 2, 2011, 9:13:54 AM5/2/11
to Comunidad de Visual Foxpro en Español
Hola :

Un Mensaje especial para Cesar Chalom.

Soy de Argentina y Desarrollo en VFP9 una curiosidad que tengo es
recurriendo a su capacidad (Leo permanentemente el foro de vfp), es
como mejorar la calidad del renderizado de las vistas previas en los
reportes

con reportlistener, por ejemplo el suavizado de fuentes . Otro punto
es que como exportar con outputpage una imgagen .bmp/jpg con el tamaño
de zoom de por ejemplo 500% que logro en el contenedor preview en el
objeto "canvas" y grabarla en el disco con ese tamaño, luego puedo
pegar en otro aplicativo la imagen y obtener una compresión que dará
un suavizado forzado de las formas.Con System.Drawing podría hacer
algo? .




Un saludo desde Argentina.



Atentamente



HERNAN ANGELINI

Cesar VfpImaging

unread,
May 2, 2011, 11:27:07 AM5/2/11
to Comunidad de Visual Foxpro en Español
Hernan,

Si, es posible.
Mire en el HELP de VFP, el metodo "OUTPUTPAGE" de la clase
ReportListener. Tienes como cambiar los parametros e determinar la
largura y altura (ancho, height) ???

Lo que te recomenadria es convertir tu reporte al formato EMF, es casi
lo mismo que convertir a BMP, solo cambias un parametro. EMF es
fantastico, puedes redimensionar tu reportes a qualquier tamano, a la
perfeccion !
Internamente, el nuevo Preview de VFP9 utiliza EMF para este
proposito.

Saludos

Cesar




On 2 mayo, 10:13, Hernán_Angelini <neotek.servidores....@gmail.com>
wrote:

Hernán_Angelini

unread,
May 2, 2011, 2:15:30 PM5/2/11
to Comunidad de Visual Foxpro en Español
Probe lo siguiente:

FOR nPageIndex=1 TO oListener.PageTotal


** CODIGO ACTUAL QUE USO PARA EXPORTAR A JPG
cOutputFile = cCarpeta+"Informe_Hoja_"+TRANS(nPageIndex)+".JPG"
oListener.OutputPage(nPageIndex,;
cOutputFile, 102, 0,0,768,1024) && 102=JPG


** CODIGO DE PRUEBA PARA GENERAR UN EMF DE 3840 X 5120 PIXELES
(1024 x 768 AL 500%)
cOutputFile = cCarpeta+"Informe_Hoja_"+TRANS(nPageIndex)+".EMF"
oListener.OutputPage(nPageIndex,;
cOutputFile, 101, 0,0,3840,5120) && 101=EMF

WITH loSelection
.InlineShapes.AddPicture("&cOutputFile", .F.,.T.)
IF nPageIndex # oListener.PageTotal
.InsertBreak(wdSectionBreakNextPage)
ENDIF
ENDWITH
ERASE "&cOutputFile"
NEXT

El emf igualmente queda de baja resolucion supongo la original de 1024
x 768 por ejemplo compare la vista previa al 500% con el archivo que
redimensione con gdi+:

********************************
*******************************
#DEFINE GDIPLUS_PIXELFORMAT_1bppIndexed 0x00030101
#DEFINE GDIPLUS_PIXELFORMAT_4bppIndexed 0x00030402
#DEFINE GDIPLUS_PIXELFORMAT_8bppIndexed 0x00030803
#DEFINE GDIPLUS_PIXELFORMAT_16bppGrayScale 0x00101004
#DEFINE GDIPLUS_PIXELFORMAT_16bppRGB555 0x00021005
#DEFINE GDIPLUS_PIXELFORMAT_16bppRGB565 0x00021006
#DEFINE GDIPLUS_PIXELFORMAT_16bppARGB1555 0x00061007
#DEFINE GDIPLUS_PIXELFORMAT_24bppRGB 0x00021808
#DEFINE GDIPLUS_PIXELFORMAT_32bppRGB 0x00022009
#DEFINE GDIPLUS_PIXELFORMAT_32bppARGB 0x0026200A
#DEFINE GDIPLUS_PIXELFORMAT_32bppPARGB 0x000E200B
#DEFINE GDIPLUS_PIXELFORMAT_48bppRGB 0x0010300C
#DEFINE GDIPLUS_PIXELFORMAT_64bppPARGB 0x001C400E

lcSource = GETPICT("jpg;gif;bmp;EMF")
lcDestination = ADDBS(JUSTPATH(lcSource))+ "Resized_" +;
JUSTSTEM(lcSource)+".bmp"
LOCAL loImage AS GpImage OF ffc/_gdiplus.vcx
loImage = NEWOBJECT("GpImage", HOME() + "ffc/_gdiplus.vcx")
loImage.CreateFromFile(lcSource)

LOCAL loBitmap AS GpBitmap OF ffc/_gdiplus.vcx
loBitmap = NEWOBJECT("GpBitmap", HOME() + "ffc/_gdiplus.vcx")
LOCAL loGraphics as GpGraphics OF HOME() + ffc/_gdiplus.vcx
loGraphics = NEWOBJECT('GpGraphics',HOME() + 'ffc/_gdiplus.vcx')

*** Now we create a new image with
*** Create Method - Creates a bitmap object.
*** Syntax: ? THIS.Create(tnWidth, tnHeight[, tnPixelFormat])
***
*** tnPixelFormat, optional, one of GDIPLUS_PIXELFORMAT_* constants,
*** defaults to GDIPLUS_PIXELFORMAT_32bppARGB.

LOCAL lnNewWidth, lnNewHeight
lnNewWidth = 3840&& Put here the desired Width
lnNewHeight = 5120 && Put here the desired Height

loBitmap.Create(lnNewWidth, lnNewHeight,
GDIPLUS_PIXELFORMAT_32bppPARGB)
*** The other constants are in the beginning of this code

loGraphics.CreateFromImage(loBitmap)
loGraphics.DrawImageScaled(loImage, 0, 0, lnNewWidth, lnNewHeight)
loBitmap.SaveToFile(lcDestination, "image/bmp")
RETURN
******************************************
*****************************************

Aqui el BMP FINAL QUEDO DE MAS O MENOS 7 MB PERO LO ENFRENTE CON LA
VISTA PREVIA AL 500% DEL PREVIEW Y EL PREVIEW TIENE MUCHA MAS
RESOLUCION AHORA VEO DE ENVIAR EL EJEMPLO CON UN ADJUNTO.


SALUDOS

HERNAN.
> > HERNAN ANGELINI- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Neotek Argentina

unread,
May 2, 2011, 2:25:55 PM5/2/11
to publice...@googlegroups.com
Cesar aqui envio el ejmplo en JPG
 
Saludos,
 
Hernán.
ZOOM.JPG

Cesar VfpImaging

unread,
May 2, 2011, 2:48:27 PM5/2/11
to Comunidad de Visual Foxpro en Español
La mejor opcion definitivamente es EMF, pero probablemente no tienes
un visualizador bueno para EMF, que redimensiona la imagen utilizando
las capacidades correctas.

JPG no es bueno, por que comprime la imagen, y siempre pierde
definicion.

BMP y PNG son similares, pero PNG generar archivos muy mas pequenos


On 2 mayo, 15:25, Neotek Argentina <neotek.servidores....@gmail.com>
wrote:
> Cesar aqui envio el ejmplo en JPG
>
> Saludos,
>
> Hernán.
>
>  ZOOM.JPG
> 86 KVerDescargar

Hernán_Angelini

unread,
May 2, 2011, 3:03:19 PM5/2/11
to Comunidad de Visual Foxpro en Español
Gracias Cesar:
Una ultima consulta , espero no molestar y si deseo exportar el
contenido del objeto shape "canvas" que tiene el contenedor preview
como puedo proceder para tomar su contenido al tamaño que posea y
dejarlo en le disco como emf/jpg etc.


Saludos,


Hernán.
> > 86 KVerDescargar- Ocultar texto de la cita -

Cesar VfpImaging

unread,
May 2, 2011, 3:15:34 PM5/2/11
to Comunidad de Visual Foxpro en Español
Si, es posible !
Mire el metodo "OutputPage", el te permite pasar otos parametros!
http://msdn.microsoft.com/en-us/library/ms967329(v=vs.80).aspx


On 2 mayo, 16:03, Hernán_Angelini <neotek.servidores....@gmail.com>
wrote:
> > - Mostrar texto de la cita -- Ocultar texto de la cita -
Reply all
Reply to author
Forward
0 new messages