Usando a WIN32PRN
Enviado: 28 Abr 2008 20:30
Pessoal, boa noite, tive que mudar o meu programa (xharbou 0.99.70) para utilizar a win32prn , peguei aqui um exemplo e fui a luta .
As duvidas são :
1 - a impressao ficou bastante lenta
2 - na lexmark imprimiu certinho , mas na hp d2640 nao imprime e da uma mensagem de erro da propria hp , entro no painel da impressora e tem dois documentos a serem impressos .
Eu fiz assim :
Se alguem puder me ajudar , ficarei muito grato
Abs
Jarbas
As duvidas são :
1 - a impressao ficou bastante lenta
2 - na lexmark imprimiu certinho , mas na hp d2640 nao imprime e da uma mensagem de erro da propria hp , entro no painel da impressora e tem dois documentos a serem impressos .
Eu fiz assim :
Código: Selecionar todos
escolhe_a_impressora(_impressora) // o operador vai escolher a impressora
// q estiver instalada no windows - getprinters()
set devi to print
set printer to teste.prn
for i:=1 to 10
@ prow()+1,pcol say 'teste '+strzero(i,2)
next
set devi to screen
set printer to
Nova_Impressao('teste.prn',80,_Impressora)
function Nova_Impressao(_Arquivo,tamrel,cPrinter)
local cTexto, nLinhas, nA, cLinha // oPrinter := win32prn():New(cPrinter)
local oPrinter := win32prn():New(cPrinter)
local lA_TmpArqImp
oPrinter:Landscape := .F.
oPrinter:FormType := 9
//oprinter:SetPrintQuality(-1) // qualidade da impressão
oPrinter:Copies := 1
rddsetdefault('dbfntx')
_TmpArqImp:='Func_'+subst(time(),4,2)+right(time(),2)+'.DBF'
vARQ:={}
aadd( vARQ, {"LINHA","C",200,0} )
DBcreate((lA_TmpArqImp), vARQ)
USE (_TmpArqImp) alias temp new shared
append from (_Arquivo) sdf
IF ! oPrinter:Create()
Alerta("Não foi possivel criar a impressão ")
return NIL
ELSE
IF ! oPrinter:StartDoc("Impressao")
Alerta("Falha na criação do arquivo de impressão ")
return NIL
endif
IF TAMREL=80
oPrinter:setfont('Courier New',,11,,,,255) // Normal
ELSE
oPrinter:SetFont("Courier New",11,{3,-50}) // Comprimida
ENDIF
oPrinter:Bold(0) // Normal
dbgotop()
Do while !eof()
cLinha := Linha // Busca linha de impressao
oPrinter:newline() // Inicia nova linha
oPrinter:SetFont("Courier New",11,{3,-50}) // Comprimida
oPrinter:TextOut(HB_OemToAnsi(cLinha))
oPrinter:Bold(0) // Normal
dbskip()
if ! eof()
if (oPrinter:MaxRow() - 2) <= oPrinter:Prow() // Usa "oPrinter:NewPage()" para iniciar nova pagina
oPrinter:NewPage()
endif
endif
enddo
oPrinter:EndDoc()
oPrinter:Destroy()
ENDIF
USE
ferase((lA_TmpArqImp))
rddsetdefault('MYSQL')
RETURN NILSe alguem puder me ajudar , ficarei muito grato
Abs
Jarbas