Clipper On Line • Ver Tópico - impressao de imagens

impressao de imagens

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

impressao de imagens

Mensagempor kakamachado » 28 Abr 2016 13:21

Boa tarde. Migrei um sistema Clipper para xHArbour (modo console) mantendo todas as telas, relatórios, etc. Entretanto gostaria de emitir nos relatórios (impressora laser) o logo da empresa (arquivo .JPG). Alguém podia me dizer como fazer isto usando os comandos @ linha, coluna say ............? Ou existe outra forma? Obrigado.
kakamachado
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 07 Mar 2016 18:54
Cidade/Estado: Rio de Janeiro
Curtiu: 0 vez
Mens.Curtidas: 0 vez

impressao de imagens

Mensagempor AutomoSistema » 29 Abr 2016 14:57

Boa tarde, existe sim um método que é win32prn, simples prático e objetivo

Exemplo:
   #include "WinGdi.ch"

   #define  RGB_BLACK       RGB(   0,  0,  0 )
   #define  RGB_RED         RGB( 255,  0,  0 )
   #define  RGB_GREEN       RGB(   0,255,  0 )
   #define  RGB_BLUE        RGB(   0,  0,255 )
   #define  RGB_CYAN        RGB(   0,255,255 )
   #define  RGB_YELLOW      RGB( 255,255,  0 )
   #define  RGB_MAGENTA     RGB( 255,  0,255 )
   #define  RGB_WHITE       RGB( 255,255,255 )

   PROCEDURE Main
      LOCAL cPrinter := "EPSON Stylus DX5000 Series"
      LOCAL oPrinter
      LOCAL aFonts, cFont, nFont

      // Create printer object and configure print job
      oPrinter           := Win32Prn():new( cPrinter )
      oPrinter:landscape := .F.
      oPrinter:formType  := DMPAPER_A4
      oPrinter:copies    := 1

      // Create device context
      IF .NOT. oPrinter:create()
         Alert( "Cannot create device context" )
         QUIT
      ENDIF

      // Create print job
      IF .NOT. oPrinter:startDoc( "xHarbour test page" )
         Alert( "Cannot create document" )
         QUIT
      ENDIF

      // Text in fixed font
      oPrinter:textOut( "Text in default font" )
      oPrinter:bold( FW_EXTRABOLD )
      oPrinter:textOut( oPrinter:fontName )
      oPrinter:bold( FW_NORMAL )
      oPrinter:newLine()

      aFonts := oPrinter:getFonts()
      nFont  := AScan( aFonts, ;
                       {|a| "ARIAL" $ Upper(a[1]) } )

      cFont  := aFonts[nFont,1]

      // Text in proportional font
      oPrinter:setFont( cFont )
      oPrinter:textOut( "Text in Arial font" )
      oPrinter:bold( FW_EXTRABOLD )
      oPrinter:textOut( oPrinter:fontName )
      oPrinter:bold( FW_NORMAL )
      oPrinter:newLine()

      // Colored text
      oPrinter:setColor( RGB_YELLOW, RGB_BLUE )
      oPrinter:textOut( "Yellow on Blue" )
      oPrinter:newLine()

      // Draw colored line across page
      oPrinter:setPen( PS_DASH, 5, RGB_GREEN )
      oPrinter:line( oPrinter:posX, ;
                     oPrinter:posY, ;
                     oPrinter:rightMargin, ;
                     oPrinter:posY  )

      // Send output to printer
      oPrinter:endDoc()

      // Release GDI device context
      oPrinter:destroy()
   RETURN

   FUNCTION RGB( nRed, nGreen, nBlue )
   RETURN ( nRed + ( nGreen * 256 ) + ( nBlue * 65536 ) )
Nota de Moderação:
Toledo: Mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: Clique aqui
AutomoSistema
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 87
Data de registro: 27 Nov 2015 21:09
Cidade/Estado: Jardim-MS
Curtiu: 0 vez
Mens.Curtidas: 4 vezes

impressao de imagens

Mensagempor Toledo » 29 Abr 2016 17:33

Amigos, no exemplo da mensagem anterior faltou o código para imprimir a imagem!

Segue o exemplo que está no manual do Harbour:

  PROCEDURE Main
     LOCAL cFileName, oWin32Bmp, oWin32Prn

      oWin32Prn := Win32Prn():new()  // default printer object
      IF .NOT. oWin32Prn:create()    // create device context
         Alert( "Unable to create device context for printer" )
         QUIT
      ENDIF

      cFileName := "TestImage.bmp"

      oWin32Bmp := Win32Bmp():new()  // load bitmap file into memory
      IF .NOT. oWin32Bmp:loadFile( cFileName )
         Alert( "Unable to load bitmap file: " + cFileName )
         QUIT
      ENDIF

      // print bitmap image
      oWin32Bmp:draw( oWin32Prn,  { 200, 400, 2000, 1500 } )

      // release GDI system resources of printer
      oWin32Prn:destroy()
   RETURN


Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

impressao de imagens

Mensagempor kakamachado » 30 Abr 2016 00:14

Toledo, boa noite, obrigado por sua resposta.
Adequei um programa para testar sua sugestão, entretanto está cancelando ao tentar carregar a imagem. Erro: Alert( "Unable to load bitmap file: " + cFileName )
Abraços
kakamachado
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 07 Mar 2016 18:54
Cidade/Estado: Rio de Janeiro
Curtiu: 0 vez
Mens.Curtidas: 0 vez

impressao de imagens

Mensagempor Jairo Maia » 30 Abr 2016 05:45

kakamachado escreveu:Erro: Alert( "Unable to load bitmap file: " + cFileName )
Pelo exemplo do Toledo, se não existir um arquivo chamado TestImage.bmp na pasta do exemplo a mensagem que se terá na caixa do alert é: "Unable to load bitmap file: TestImage.bmp"

Mas se foi apenas para efeito de didática a mensagem acima, verifique se existe a imagem chamada TestImage.bmp na pasta do programa que você adequou. Se não existe precisa colocar, ou alterar essa linha e colocar o endereço e nome da imagem a ser carregada:
cFileName := "TestImage.bmp"
Penso também que facilita se você postar a função que você adequou.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

impressao de imagens

Mensagempor kakamachado » 30 Abr 2016 14:22

]Caros Jairo e Toledo, boa tarde.
Tinha colocado uma imagem com extensão .GIF em vez de .BMP. Não deu mais o erro citado anteriormente, mas a imagem (INSS.BMP) não está sendo impressa, apesar de constar na pasta do programa, O restante do "relatório" está sendo impresso normalmente. Segue rotina de teste. Obrigado.

*-------------------------------------------------------------------*
* SISTEMA  : FPG - SISTEMA DE FOLHA DE PAGAMENTO                    *
* PROGRAMA : TESTE - RELATORIO DE EMPRESAS                          *
* FUNCAO   : testar impressao de logomarca                          *
*-------------------------------------------------------------------*
#include "WinGdi.ch"

FUNCTION MAIN()

LOCAL cFileName, oWin32Bmp, oWin32Prn

* ENVIA CABECALHO E RECEBE PARAMETROS *
*-------------------------------------*
CLEAR
WPAGINA     := 0
WW_L        := 05
WNOME_REL   := "RELATÓRIO DE EMPRESA(S)"

SET DEVICE TO PRINT

oWin32Prn := Win32Prn():new()  // default printer object
IF .NOT. oWin32Prn:create()    // create device context
     Alert( "Unable to create device context for printer" )
     QUIT
ENDIF

cFileName := "INSS.bmp"

oWin32Bmp := Win32Bmp():new()  // load bitmap file into memory
IF .NOT. oWin32Bmp:loadFile( cFileName )
    Alert( "Unable to load bitmap file: " + cFileName )
    QUIT
ENDIF

// print bitmap image
oWin32Bmp:draw( oWin32Prn,  { 200, 400, 2000, 1500 } )

@ WW_L+05,13 SAY "Empresa.: XPTO LTDA"
@ WW_L+07,13 SAY "CNPJ....: 99.999.999/0001-99"
@ WW_L+09,13 SAY "Situacao: INATIVA"

* FINALIZA O PROGRAMA *
*---------------------*
EJECT

// release GDI system resources of printer
oWin32Prn:destroy()

SET DEVICE TO SCREEN

RETURN
kakamachado
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 07 Mar 2016 18:54
Cidade/Estado: Rio de Janeiro
Curtiu: 0 vez
Mens.Curtidas: 0 vez

impressao de imagens

Mensagempor Toledo » 30 Abr 2016 19:11

Amigo, faltou alguns comandos e também os comandos SET PRINTER, @ ... SAY e EJECT do Clipper não vão mesclar com a classe Win32Prn.

Abraços,
Anexos
win32bmp.zip
(634.57 KiB) Baixado 187 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

impressao de imagens

Mensagempor kakamachado » 02 Mai 2016 23:39

Caros Toledo e Jairo, boa noite.
Emiti, do Manual do xHarbour, as instruções para uso da classe Win32Prn. Verifiquei como é impressa uma imagem, etc. e funcionou OK.
Entretanto não ficou claro para mim como substituir o famoso @ linha, coluna say do Clipper.
Suponhamos que eu tenha o comando clipper:
@ lin, col SAY EM_CGC PICT "@R XXXXXXXX/XXXX-XX"
Onde lin = 30 e col = 20, estão definidos em milímetros, como ficaria este comando com a oWin32Prn?
Desde já, obrigado.
kakamachado
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 07 Mar 2016 18:54
Cidade/Estado: Rio de Janeiro
Curtiu: 0 vez
Mens.Curtidas: 0 vez

impressao de imagens

Mensagempor Toledo » 03 Mai 2016 07:32

kakamachado escreveu:Suponhamos que eu tenha o comando clipper:
@ lin, col SAY EM_CGC PICT "@R XXXXXXXX/XXXX-XX"
Onde lin = 30 e col = 20, estão definidos em milímetros, como ficaria este comando com a oWin32Prn?

Tente o seguinte:

oWin32Prn:setPrc(30,20)
oWin32Prn:TextOut(Transform(EM_CGC,"@R XXXXXXXX/XXXX-XX"), .F.)


Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

impressao de imagens

Mensagempor nasouza » 09 Fev 2017 10:14

Bom Dia, aproveitando o exemplo como eu poderia imprimir um texto na frente da imagem(logotipo).
nasouza
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 37
Data de registro: 20 Jul 2009 17:57
Cidade/Estado: Santa Isabel do Ivai - Pr
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

impressao de imagens

Mensagempor lugab » 09 Fev 2017 12:12

êh tópico bom....

Torcendo aqui pra aparecer exemplo de
1) impressão de imagem posicionada dentro de um retângulo e
2) cabeçalho/rodapé padrão pra todas as páginas, similar ao winword
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

impressao de imagens

Mensagempor nasouza » 31 Mar 2018 12:17

Alguém teria um exemplo de como imprimir a logo e do lado dela colocar os dados do cliente usando o oWin32Prn.
nasouza
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 37
Data de registro: 20 Jul 2009 17:57
Cidade/Estado: Santa Isabel do Ivai - Pr
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

impressao de imagens

Mensagempor nasouza » 01 Abr 2018 11:25

Bom Dia, Toledo, é possível colocar a logo e os dados do cliente sendo impressos um ao lado do outro com a oWin32Prn?
nasouza
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 37
Data de registro: 20 Jul 2009 17:57
Cidade/Estado: Santa Isabel do Ivai - Pr
Curtiu: 2 vezes
Mens.Curtidas: 0 vez




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Bing [Bot], Google [Bot] e 12 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro