Página 1 de 1
impressao de imagens
Enviado: 28 Abr 2016 13:21
por kakamachado
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.
impressao de imagens
Enviado: 29 Abr 2016 14:57
por AutomoSistema
Boa tarde, existe sim um método que é win32prn, simples prático e objetivo
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 ) )
impressao de imagens
Enviado: 29 Abr 2016 17:33
por Toledo
Amigos, no exemplo da mensagem anterior faltou o código para imprimir a imagem!
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()
RETURN
Abraços,
impressao de imagens
Enviado: 30 Abr 2016 00:14
por kakamachado
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
impressao de imagens
Enviado: 30 Abr 2016 05:45
por Jairo Maia
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:
Penso também que facilita se você postar a função que você adequou.
impressao de imagens
Enviado: 30 Abr 2016 14:22
por kakamachado
]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.
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
impressao de imagens
Enviado: 30 Abr 2016 19:11
por Toledo
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,
impressao de imagens
Enviado: 02 Mai 2016 23:39
por kakamachado
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.
impressao de imagens
Enviado: 03 Mai 2016 07:32
por Toledo
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:
Código: Selecionar todos
oWin32Prn:setPrc(30,20)
oWin32Prn:TextOut(Transform(EM_CGC,"@R XXXXXXXX/XXXX-XX"), .F.)
Abraços,
impressao de imagens
Enviado: 09 Fev 2017 11:14
por nasouza
Bom Dia, aproveitando o exemplo como eu poderia imprimir um texto na frente da imagem(logotipo).
impressao de imagens
Enviado: 09 Fev 2017 13:12
por lugab
ê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
impressao de imagens
Enviado: 31 Mar 2018 12:17
por nasouza
Alguém teria um exemplo de como imprimir a logo e do lado dela colocar os dados do cliente usando o oWin32Prn.
impressao de imagens
Enviado: 01 Abr 2018 11:25
por nasouza
Bom Dia, Toledo, é possível colocar a logo e os dados do cliente sendo impressos um ao lado do outro com a oWin32Prn?