Estou tentando implementar a impressão em um sistema que em Clipper usa o PRWIN, e funciona corretamente. Em harbour, compilei e rodei o exemplo da pasta contrib\hbwin\tests chamado TESTPRN, e naquele exemplo tem exatamente a fonte que eu gostaria de usar, a saber: Draft 17cpi.
O problema é que quanto mais tento entender aquele exemplo, mais leigo me sinto. No exemplo abaixo, a função PrintWinPrn() imprime, mas não há meio de eu fazê-la imprimir no modo condensado, em qualidade draft.
Se alguém puder me ajudar, agradeço muito.
Código: Selecionar todos
/*
Libs: -lxhb -lhbwin
*/
Function Main()
Local eol := Chr(13) + Chr(10), cCupom, nPrn, aPrn := Win_PrinterList()
Clear Screen
cCupom := " NOME E SLOGAN DA LOJA " + eol
cCupom += "Boleto: 00000001 - 20/03/2012 - 08:33:31" + eol
cCupom += "========================================" + eol
cCupom += " VENDA AVULSA DE PRODUTOS " + eol
cCupom += "========================================" + eol
cCupom += "Codigo Descricao do produto " + eol
cCupom += " Qtde Unitario Valor Item" + eol
cCupom += "----------------------------------------" + eol
cCupom += "0000000000001 => COCA - 600 ML " + eol
cCupom += " 1 Un x 1,00 = 1,00" + eol
cCupom += "----------------------------------------" + eol
cCupom += " " + eol
cCupom += "VALOR TOTAL DA COMPRA .....=> 1,00" + eol
cCupom += " " + eol
cCupom += " Atendido Por: ATENDENTE 1 " + eol
cCupom += "========================================" + eol
cCupom += " " + eol
MemoWrit( "vendas.tmp", cCupom )
While nPrn != 0
@ 1, 0 SAY "Selecione a impressora:"
@ 2, 0 TO MaxRow(), MaxCol()
nPrn := AChoice( 3, 1, MaxRow() - 1, MaxCol() - 1, aPrn, .T.,, nPrn )
IF nPrn != 0
PrintWinPrn( "vendas.tmp", aPrn[ nPrn ] )
Endi
EndDo
Clear Screen
Return Nil
Function PrintWinPrn( cArq, cPrint )
Local oPrn, aPrn := GetPrinters(), n := 0
oPrn := Win_Prn():New(cPrint)
oPrn :Copies := 1
oPrn :CharSet(255)
oPrn :SetFont( "Lucida Console", 8, { 3, -50 } )
If !oPrn:Create()
Alert("Nao foi criado o documento de Impressao")
Return nil
EndIf
If !oPrn:StartDoc("Imprimindo Documento")
Alert("Erro na Impressora")
Return nil
EndIf
HB_CDPSelect("PT850")
SetPrc(0,0)
cText := MemoRead( cArq )
nLinh := MlCount( cText )
For n := 1 to nLinh
oPrn:TextOut(HB_AnsiToOem(MemoLine(cText,,n)),.t.)
Next
oPrn:EndDoc()
HB_CDPSelect( "PTISO")
Return .t.

