FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Consulta imprimir sobre imagen
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
Consulta imprimir sobre imagen
Posted: 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 (fw): Select all Collapse
聽 聽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
Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Re: Consulta imprimir sobre imagen
Posted: Mon Dec 14, 2020 10:55 AM
La clase PRINTER tiene un m茅todo SayImage que puedes usar con facilidad :

Code (fw): Select all Collapse
METHOD SayImage( nRow, nCol, oImage, nWidth, nHeight, nRaster, lStretch, nAlphaLevel, nAlign )


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

Code (fw): Select all Collapse
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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Consulta imprimir sobre imagen
Posted: Mon Dec 14, 2020 01: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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Consulta imprimir sobre imagen
Posted: Mon Dec 14, 2020 03:16 PM
Hago asi para todo el sistema de impres铆on:

Code (fw): Select all Collapse
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鈥∶s 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鈥∶唎 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
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
Re: Consulta imprimir sobre imagen
Posted: 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

Continue the discussion