Consulta imprimir sobre imagen

Post Reply
surGom
Posts: 624
Joined: Wed Oct 19, 2005 12:03 pm
Contact:

Consulta imprimir sobre imagen

Post 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
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Re: Consulta imprimir sobre imagen

Post 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)
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Consulta imprimir sobre imagen

Post 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?
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Consulta imprimir sobre imagen

Post 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.
João Santos - São Paulo - Brasil
surGom
Posts: 624
Joined: Wed Oct 19, 2005 12:03 pm
Contact:

Re: Consulta imprimir sobre imagen

Post 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
Post Reply