impressao de imagens
Moderador: Moderadores
-
kakamachado
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 07 Mar 2016 18:54
- Localização: Rio de Janeiro
impressao de imagens
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.
-
AutomoSistema
- Usuário Nível 2

- Mensagens: 87
- Registrado em: 27 Nov 2015 22:09
- Localização: Jardim-MS
impressao de imagens
Boa tarde, existe sim um método que é win32prn, simples prático e objetivo
Exemplo:
Exemplo:
Código: Selecionar todos
#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 ) )
Editado pela última vez por Toledo em 29 Abr 2016 16:25, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
impressao de imagens
Amigos, no exemplo da mensagem anterior faltou o código para imprimir a imagem!
Segue o exemplo que está no manual do Harbour:
Abraços,
Segue o exemplo que está no manual do Harbour:
Código: Selecionar todos
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()
RETURNToledo - 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
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
-
kakamachado
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 07 Mar 2016 18:54
- Localização: Rio de Janeiro
impressao de imagens
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
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
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
impressao de imagens
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"kakamachado escreveu:Erro: Alert( "Unable to load bitmap file: " + cFileName )
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:
Código: Selecionar todos
cFileName := "TestImage.bmp"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)
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)
-
kakamachado
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 07 Mar 2016 18:54
- Localização: Rio de Janeiro
impressao de imagens
]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.
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.
Código: Selecionar todos
*-------------------------------------------------------------------*
* 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- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
impressao de imagens
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,
Abraços,
- Anexos
-
win32bmp.zip- (634.57 KiB) Baixado 226 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
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
-
kakamachado
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 07 Mar 2016 18:54
- Localização: Rio de Janeiro
impressao de imagens
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.
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.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
impressao de imagens
Tente o seguinte: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?
Código: Selecionar todos
oWin32Prn:setPrc(30,20)
oWin32Prn:TextOut(Transform(EM_CGC,"@R XXXXXXXX/XXXX-XX"), .F.)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
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
-
nasouza
- Usuário Nível 1

- Mensagens: 37
- Registrado em: 20 Jul 2009 17:57
- Localização: Santa Isabel do Ivai - Pr
impressao de imagens
Bom Dia, aproveitando o exemplo como eu poderia imprimir um texto na frente da imagem(logotipo).
impressao de imagens
ê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
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
-
nasouza
- Usuário Nível 1

- Mensagens: 37
- Registrado em: 20 Jul 2009 17:57
- Localização: Santa Isabel do Ivai - Pr
impressao de imagens
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

- Mensagens: 37
- Registrado em: 20 Jul 2009 17:57
- Localização: Santa Isabel do Ivai - Pr
impressao de imagens
Bom Dia, Toledo, é possível colocar a logo e os dados do cliente sendo impressos um ao lado do outro com a oWin32Prn?
