Imprimir JPG de fondo de documento

Post Reply
User avatar
Canarias
Posts: 35
Joined: Thu Oct 06, 2005 10:00 pm
Location: Canary Islands - Spain

Imprimir JPG de fondo de documento

Post by Canarias »

Hola de nuevo amigos:

Tomando el ejemplo de SAMPLES\COREL.PRG (// Using CorelDraw to generate printing templates!!!), actualmente imprimo con oPrn:ImportWMF( ".\PREIMP\PR-103-1.Wmf" ) el fondo del documento y a través de oPrn:CmSay( 7.4, 5, SUBSTR(oDbf0:CSIPF,2,10),oFont) imprimo el dato que deseo en la posición del documento, y todo va bien y perfecto.

El problema que se me presenta es que el cada fichero WMF es muy pesado (aproximadamente unos 4100 kb!!) y en cambio si es en JPG el tamaño es de solo unos 300 Kb.

Para un trámite se requiere entre 10 y 16 documentos distintos con lo cual al final la memoria se va agotando y el preview hay veces que el documento no lo carga.

Además tengo en el directorio donde tengo los impresos unos 46 documentos lo que al final el directorio de preimpresos en formato WMF ocupa ya la friolera de cerca de 200 MB!!!!.

Si estos preimpresos estuvieran en formato JPG sólo ocuparían unos 2.xMB en dicho directorio.

Pasando los documentos a formato JPG y poniendo oPrn:SayImage( ".\PREIMP\PR-103-1.jpg" )me da error al imprimir y si pongo oPrn:SayBmp( ".\PREIMP\PR-103-1.jpg" ) no da error pero tampoco lo carga.

¿Alguien puede orientar y decirme los pasos que debo realizar para poder imprimir los JPG, si es que se puede?

Saludos
User avatar
Canarias
Posts: 35
Joined: Thu Oct 06, 2005 10:00 pm
Location: Canary Islands - Spain

Post by Canarias »

Saludos a todos.

Alguna ayuda, por favor!!! o diganme si no es posible, a ver que puedo hacer entonces.

Gracias.
User avatar
Chantiel
Posts: 33
Joined: Mon Oct 10, 2005 12:49 pm
Location: En una piedra en medio del Atlantico (Tenerife)

Post by Chantiel »

Bueno, como te veo un poco desesperado te comentare que voy a solidarizarme contigo.

Yo tampoco se como hacerlo, por eso no he posteado.

Te aconsejo, que este tipo de dudas las pongas tambien en el subforo de Harbour, la gente esta mas activa alli y al fin y al cabo, es una consulta general.


Nos leemos!!
FW 2.5 + Cl 5.3 + Blk 7.0

Sin mas ...
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

Yo se como hacerlo, pero no tengo el codigo aqui, apenas este en mi casa te contesto.

Creo que era con oPrn:SayImage(), o algo asi...

Saludos
Pedro Gonzalez
User avatar
Manuel Aranda
Posts: 561
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Post by Manuel Aranda »

El mismo problema tuve hace tiempo con este asunto y alguien del foro me ayudó. No puedo aclararte mucho sobre el asunto pues hace más de un año que lo implementé, pero lo más importante es que funciona. Abajo te pego unos trozos de código.
Tienes que tener freeimagen.dll en la carpeta del ejecutable. Después debes tener en el prg:

#xcommand REDEFINE Image [ <oBmp> ] ;
[ ID <nId> ] ;
[ <of: OF, WINDOW, DIALOG> <oWnd> ] ;
[ <resource: NAME, RESNAME, RESOURCE> <cResName> ] ;
[ <file: FILE, FILENAME, DISK> <cBmpFile> ] ;
[ <lClick: ON ClICK, ON LEFT CLICK> <uLClick> ] ;
[ <rClick: ON RIGHT CLICK> <uRClick> ] ;
[ <scroll: SCROLL> ] ;
[ <adjust: ADJUST> ] ;
[ CURSOR <oCursor> ] ;
[ MESSAGE <cMsg> ] ;
[ <update: UPDATE> ] ;
[ WHEN <uWhen> ] ;
[ VALID <uValid> ] ;
=> ;
[ <oBmp> := ] TImage():ReDefine( <nId>, <cResName>, <cBmpFile>,;
<oWnd>, [\{ |nRow,nCol,nKeyFlags| <uLClick> \}],;
[\{ |nRow,nCol,nKeyFlags| <uRClick> \}],;
<.scroll.>, <.adjust.>, <oCursor>, <cMsg>, <.update.>,;
<{uWhen}>, <{uValid}> )




Para visualizar la imagen:
///////////////////////////////////////////////////////////////////////////
DEFINE DIALOG oDlg RESOURCE "IMAGEN2"
oDlg:lHelpIcon:=.F.


REDEFINE IMAGE oImagen FILENAME (cFImagen) ID 800;
OF oDlg ADJUST UPDATE //SCROLL

//
ACTIVATE DIALOG oDlg CENTER ON INIT oDlg:End()

//
Para imprimir la imagen e imprimir texto encima:
oPrn:StartPage()
//PAGE
//
IF lLImagen
oImagen:LoadImage(,cFImagen)
oPrn:SayImage( 0, 0, oImagen,4800,6800 )
ENDIF
//
IF lLTexto
cTexto:=Memoread(cFTexto)
nLineasTexto:=MlCount(cTexto,75)
//
FOR i := 1 TO nLineasTexto
cLineaActual:=MemoLine(cTexto,75,i,,.F.)
oPrn:CmSay(nLin+0.5,1, cLineaActual, oFont1)
nLin=nLin+0.5
NEXT
//
ENDIF
//
oPrn:CmSay((aF[1,1]+nDV)/10, (aF[1,2]+nDH)/10, D1, oFont1)
oPrn:CmSay((aF[2,1]+nDV)/10, (aF[2,2]+nDH)/10, D2, oFont1)
oPrn:CmSay((aF[3,1]+nDV)/10, (aF[3,2]+nDH)/10, D3, oFont1)
oPrn:CmSay((aF[4,1]+nDV)/10, (aF[4,2]+nDH)/10, D4, oFont1)
oPrn:CmSay((aF[5,1]+nDV)/10, (aF[5,2]+nDH)/10, D5, oFont1)
oPrn:CmSay((aF[6,1]+nDV)/10, (aF[6,2]+nDH)/10, D6, oFont1)
//

//ENDPAGE
oPrn:EndPage()
//
User avatar
Canarias
Posts: 35
Joined: Thu Oct 06, 2005 10:00 pm
Location: Canary Islands - Spain

Post by Canarias »

Gracias Chantiel, Pymsoft y Manuel Aranda.

Mañana lo probaré a ver si me sale y ya les comento.

Un saludo
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

Bueno, tarde pero llegué:

En el lugar de la impresion donde desees imprimir tu imagen, luego de crear el objeto oPrn, etc.

cImmage := "TUIMAGEN.JPG"
nImgWidth := 540
nImgHeight := 360
nImgRaster := 8913094 // SRCAND

oImage := TImage():New( , , , , , cImmage , , oWnd )
oPrn:SayImage( 0, 0, oImage, nImgWidth, nImgHeight, nImgRaster )
oImage:end()


// DE TODO LO QUE PROBE, LO MEJOR EN nImgRaster (para lo que yo necesitaba) es hacer un SRCAND, disculpa la info en italiano, pero la busqué en esta lengua en su epoca ;-)


RASTER -->

SRCCOPY = &HCC0020 32 permette di copiare pari-pari l'intera immagine oppure una selezione della stessa
SRCAND = &H8800C6 8913094 combina i pixel dell'immagine di destinazione con quelli dell'immagine di partenza usando l'operatore Booleano AND
SRCINVERT = &H660046 6684742 combina i pixel dell'immagine di destinazione con quelli dell'immagine di partenza usando l'operatore Booleano XOR
SRCPAINT = &HEE0086 15597702 combina i pixel dell'immagine di destinazione con quelli dell'immagine di partenza usando l'operatore Booleano OR
SRCERASE = &H4400328 71303976 inverte l'immagine di destinazione e la combina con l'immagine di partenza usando l'operatore Booleano AND
WHITENESS = &HFF0062 16711778 colora di bianco l'immagine di destinazione
BLACKNESS = &H42 66 colora di nero l'immagine di destinazione


Espero que te sirva.
Pedro Gonzalez
Post Reply