Page 1 of 1
Consulta imprimir sobre imagen
Posted: Mon Dec 14, 2020 12:48 am
by surGom
Hola compañeros hace largo tiempo que utilizo imagenes emf para imprimir, facturas, remitos etc. el código es el siguiente:
Code: Select all
SetPrintDefault( AllTrim( oApp:imppdf ) )
PRINTER oPrn PREVIEW
oPrn:cdocument := aElectro:cnombre
PAGE
oPrn:ImportWMF( iif( lfacturab,"facturaB.emf","facturaA.emf" ) )
oPrn:CmSay( 0.85, 12.2, cTitu,oFont4,, RGB( 11,41,90 ) )
oPrn:CmSay( 1.03, 11.08, ( "Cod. " + cCod ), oFont3,, RGB( 11,41,90 ) )
oPrn:Cmsay( 1.3, 12.2, ( "Nº " + cNrofactu ),oFont4,, RGB( 11,41,90 ) )
oPrn:Cmsay( 2.1, 12.2, ( "FECHA: " + AllTrim(Transform(dfec,"@D" ) ) ), oFont,, RGB( 11,41,90 ) )
oPrn:CmSay( 4.35, 4.2, AllTrim( aCliente:napea ), oFont,, RGB( 0,0,0 ) )
oPrn:CmSay( 4.35, 17.2, valstr( aCliente:nclia ), oFont )
oPrn:CmSay( 4.75, 4.2, aCliente:domia,oFont )
etc,etc
Quisiera saber como poder reemplazar los archivo emf, por jpg u otros tipo, modificando lo menos posible el código
Muchas Gracias
Re: Consulta imprimir sobre imagen
Posted: Mon Dec 14, 2020 10:55 am
by AngelSalom
La clase PRINTER tiene un método SayImage que puedes usar con facilidad :
Code: Select all
METHOD SayImage( nRow, nCol, oImage, nWidth, nHeight, nRaster, lStretch, nAlphaLevel, nAlign )
Por ejemplo, ( no lo he probado, pero es simple )
Code: Select all
Function PrintImage ( cImage, nPosY, nPosX, nWidth, nHeight, oPrn )
Local oImg
DEFINE IMAGE oImg FILE cImage
oPrn:SayImage( nPosY,;
nPosX,;
oImg,;
nWidth,;
nHeight )
oImg:End()
return (nil)
Re: Consulta imprimir sobre imagen
Posted: Mon Dec 14, 2020 1:13 pm
by cnavarro
surGom wrote:Hola compañeros hace largo tiempo que utilizo imagenes emf para imprimir, facturas, remitos etc. el código es el siguiente:
Quisiera saber como poder reemplazar los archivo emf, por jpg u otros tipo, modificando lo menos posible el código
Estás preguntando de cómo sustituir ( entiendo que usas plantilla prediseñadas ) en el PREVIEW de Fivewin, otro tipo de ficheros de imagenes que no sean emf?
Re: Consulta imprimir sobre imagen
Posted: Mon Dec 14, 2020 3:16 pm
by karinha
Hago asi para todo el sistema de impresíon:
Code: Select all
FUNCTION Imprimir()
LOCAL cLogo
cLogo := "LOGO.JPG"
IF VALIDA_JPG( cLogo ) // ESTA EM: FUNCOES.PRG
// NADA A FAZER - IMAGEM VALIDA
ELSE
cLogo := SPACE(08) // PARA NAO QUEBRAR
ENDIF
PAGE // 1
nRow := nLinLogo
// ESTA EM: AMBLOGO.DBF
@ nLinLogo, nColLogo PRINT TO oPrn IMAGE "LOGO.JPG" SIZE nLargLogo, nAltLogo LASTROW nRow
....
RETURN NIL
// VALIDAR O ARQUIVO DE LOGO.
FUNCTION VALIDA_JPG( cFile )
// cFile := "LOGO.JPG" // NA PASTA DO PLENO
If ValidJpg( cFile )
// NADA A FAZER
RETURN( .T. ) // IMAGEM VALIDA
Else
MsgInfo( "LOGO.JPG(Imagem) DANIFICADO SOLICITE UM NOVO LOGO.JPG", ;
"Imagem Inválida/Danificada" )
EndIf
RETURN( .F. )
// VALIDAR A IMAGEM DO LOGO.JPG SE ESTA DANIFICADO OU NAO.
Function ValidJpg( cArq )
Local nRet := FITypeFromMemory( MemoRead( cArq ) )
Return nRet >= 0
FUNCTION ABRE_ARCHIVO()
PUBLIC DBAMBLOGO
PUBLIC nLinLogo, nColLogo, nLargLogo, nAltLogo
USE AMBLOGO ALIAS AMBLOGO NEW SHARED
GO TOP
DBAMBLOGO := ALIAS()
nLinLogo := VAL( NLINHALOGO ) // 00 EM AMBLOGO.DBF
nColLogo := NCOLUNLOGO // 350
nLargLogo := NLARGULOGO // 650
nAltLogo := NALTURLOGO // 450
RETURN NIL
FUNCTION LOGO_AMB() // CONFIFURACAO DO LOGO PARA TODO O AMBIENTE DE IMPRESSAO.
LOCAL oDlgLogo, oGravar, oFnt, oFont, IDCor, oSaida, oGroup, aGrad, ;
aGet := ARRAY(5), oLogo, TRAB, oImagem, XCOMFOTO, oImgLogo
// PUBLIC nLinLogo, nColLogo, nLargLogo, nAltLogo
SELECT( DBAMBLOGO )
GO TOP
/* // pode ser:
nLinLogo := 0.00 - 1.00 OU 1.50
nColLogo := 350 600
nLargLogo := 650 650
nAltLogo := 450 540
*/
// PARA CONTROLAR O LOGO NO PREVIEW DO FIVEWIN. 17/03/2020
nLinLogo := VAL( NLINHALOGO ) // 00 EM AMBLOGO.DBF
nColLogo := NCOLUNLOGO // 350
nLargLogo := NLARGULOGO // 650
nAltLogo := NALTURLOGO // 450
TRAB := ( "CONFIGURAR: LINHA, COLUNA, ALTURA E LARGURA DO LOGO" )
// GRADIENTE NO DIALOGO
aGrad := { { 0.30, CLR_WHITE, CLR_WHITE },{ 0.50, CLR_WHITE, CLR_WHITE } }
DEFINE ICON oIco NAME "ICONE"
DEFINE FONT oFnt NAME "Ms Sans Serif" SIZE 0, 14 BOLD
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 0, -14 BOLD
// ESTA EM: AMBIENTY.RES - CRIADO EM: 17/03/2020 - Joao.
DEFINE DIALOG oDlgLogo RESOURCE "DLG_CONFIGURA_LOGO" ICON oIco GRADIENT aGrad
oDlgLogo:lHelpIcon := .F.
For IDCor = 401 To 413 // Os ID's dos TEXTOS na DIALOG.
REDEFINE SAY ID IDCor OF oDlgLogo COLORS CLR_HBLUE, CLR_WHITE UPDATE FONT oFont TRANSPARENT
Next IDCor
For IDCor = 420 To 420 // Os ID's dos TEXTOS na DIALOG.
REDEFINE SAY ID IDCor OF oDlgLogo COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
Next IDCor
REDEFINE GROUP oGroup ID 501 OF oDlgLogo FONT oFnt TRANSPARENT COLOR CLR_HBLUE
REDEFINE GET aGet[1] VAR TRAB ID 20 PICTURE "@!" OF oDlgLogo UPDATE ;
WHEN( .F. ) FONT oFont COLOR CLR_HBLUE, CLR_WHITE
// nLinLogo
REDEFINE GET aGet[2] VAR nLinLogo ID 21 PICTURE "@K 9.99" OF oDlgLogo ;
UPDATE FONT oFont COLOR CLR_HBLUE, CLR_WHITE
aGet[2]:cToolTip := OemToAnsi( "Iniciar a ImpressÆo na Linha?" )
// nColLogo
REDEFINE GET aGet[3] VAR nColLogo ID 22 PICTURE "@K 999" OF oDlgLogo ;
UPDATE FONT oFont COLOR CLR_HBLUE, CLR_WHITE VALID .NOT. EMPTY( nColLogo )
aGet[3]:cToolTip := OemToAnsi( "Iniciar a ImpressÆo na Coluna?" )
// nLargLogo
REDEFINE GET aGet[4] VAR nLargLogo ID 23 PICTURE "@K 999" OF oDlgLogo ;
UPDATE FONT oFont COLOR CLR_HBLUE, CLR_WHITE VALID .NOT. EMPTY( nLargLogo )
aGet[4]:cToolTip := OemToAnsi( "Qual a Largura do Logo na ImpressÆo?" )
// nAltLogo
REDEFINE GET aGet[5] VAR nAltLogo ID 24 PICTURE "@K 999" OF oDlgLogo ;
UPDATE FONT oFont COLOR CLR_HBLUE, CLR_WHITE VALID .NOT. EMPTY( nAltLogo )
aGet[5]:cToolTip := OemToAnsi( "Qual a Altura do Logo na ImpressÆo?" )
REDEFINE BITMAP oImgLogo ID 122 RESOURCE "IMPRESSORA" TRANSPARENT OF oDlgLogo ADJUST
oImgLogo:cToolTip := OemToAnsi( "Configura‡äes do LOGO Para ImpressÆo" )
XCOMFOTO := "LOGO.JPG"
REDEFINE IMAGE oImagem ID 201 OF oDlgLogo FILENAME XCOMFOTO UPDATE
oImagem:Progress( .F. )
oImagem:lStretch := ( .T. ) // Alongamento da Imagem. .F. Alonga .T. NÆo.
oImagem:Refresh()
REDEFINE BUTTON oGravar ID 301 OF oDlgLogo ACTION( GRAVAR_LOGO() )
oGravar:cToolTip := OemToAnsi( "Gravar a Configura‡Æo do " + ;
"LOGO no Banco de Dados." )
REDEFINE BUTTONBMP oSaida ID 302 OF oDlgLogo RESOURCE "154" TEXTRIGHT ;
ACTION( oDlgLogo:End() ) CANCEL
oSaida:cTooltip := { "Saida - Exit - Cancelar", ;
"Saida - Exit - Cancelar", 1, CLR_WHITE, CLR_HBLUE }
REDEFINE BUTTON oLogo ID 303 OF oDlgLogo ACTION( MsgLogo( "LOGO.JPG" ) )
oLogo:cToolTip := "Visualize o Logo da Empresa"
SET FONT OF oGravar TO oFont
SET FONT OF oSaida TO oFont
SET FONT OF oLogo TO oFont
ACTIVATE DIALOG oDlgLogo CENTERED
oFnt:End()
oFont:End()
RETURN NIL
FUNCTION GRAVAR_LOGO()
IF EMPTY( nColLogo )
MsgStop( "GRAVAÇÃO NÃO PERMITIDA", "NÃO PODE CAMPO VAZIO" )
RETURN( .F. )
ENDIF
IF EMPTY( nLargLogo )
MsgStop( "GRAVAÇÃO NÃO PERMITIDA", "NÃO PODE CAMPO VAZIO" )
RETURN( .F. )
ENDIF
IF EMPTY( nAltLogo )
MsgStop( "GRAVAÇÃO NÃO PERMITIDA", "NÃO PODE CAMPO VAZIO" )
RETURN( .F. )
ENDIF
CRLOCK()
REPLACE ( DBAMBLOGO )->NLINHALOGO WITH STR( nLinLogo )
REPLACE ( DBAMBLOGO )->NCOLUNLOGO WITH nColLogo
REPLACE ( DBAMBLOGO )->NLARGULOGO WITH nLargLogo
REPLACE ( DBAMBLOGO )->NALTURLOGO WITH nAltLogo
COMMIT
UNLOCK
IF FILE( "PRONTO.wav" )
SndPlaySound( "PRONTO.wav", 0 )
ENDIF
GO TOP
nLinLogo := VAL( NLINHALOGO ) // 00 EM AMBLOGO.DBF
nColLogo := NCOLUNLOGO // 350
nLargLogo := NLARGULOGO // 650
nAltLogo := NALTURLOGO // 450
RETURN NIL
Saludos.
Re: Consulta imprimir sobre imagen
Posted: Fri Dec 18, 2020 12:33 am
by surGom
Perdón en estos días no pude ver sus respuestas, y sí Carlos mi intención es sustituir la plantilla que uso en emf, por otros formatos de imagen
Luis