Consulta imprimir sobre imagen

Consulta imprimir sobre imagen

Postby surGom » Mon Dec 14, 2020 12:48 am

Hola compañeros hace largo tiempo que utilizo imagenes emf para imprimir, facturas, remitos etc. el código es el siguiente:

Code: Select all  Expand view  RUN

   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
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: Consulta imprimir sobre imagen

Postby AngelSalom » Mon Dec 14, 2020 10:55 am

La clase PRINTER tiene un método SayImage que puedes usar con facilidad :

Code: Select all  Expand view  RUN
METHOD SayImage( nRow, nCol, oImage, nWidth, nHeight, nRaster, lStretch, nAlphaLevel, nAlign )


Por ejemplo, ( no lo he probado, pero es simple )

Code: Select all  Expand view  RUN
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
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Consulta imprimir sobre imagen

Postby cnavarro » Mon Dec 14, 2020 1:13 pm

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?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Consulta imprimir sobre imagen

Postby karinha » Mon Dec 14, 2020 3:16 pm

Hago asi para todo el sistema de impresíon:

Code: Select all  Expand view  RUN

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 - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Consulta imprimir sobre imagen

Postby surGom » Fri Dec 18, 2020 12:33 am

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
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: MGA and 50 guests