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