Estou compilando com o xHarbour.
Código: Selecionar todos
PROCEDURE W32PRN(arqtxt) <---- QUERO IMPRIMIR ESSE PARAMETRO que é o arquivo relat10.txt por exemplo.
#include "WinGdi.ch"
Local cPrinter
Local contl := 1
cFileName := "C:\LOJA\RELAT.TXT" <---- SE DEIXAR ASSIM DA CERTO
cFileName := arqtxt <---- SE FIZER ASSIM NAO IMPRIME
SET PRINTER TO
SET DEVICE TO SCREEN
If !File("c:\loja\RELAT.TXT")
Return Nil
Else // Vamos colocar seu arquivo num Array
cLinha := Nil
aLinesPrint := {}
cBuffer := FOpen( cFileName, 2 )
Do While Hb_FReadLine( cBuffer, @cLinha, Nil, 255 ) = 0
AaDd( aLinesPrint, cLinha )
EndDo
FClose( cBuffer )
EndIf
cPrinter := PegaPrinter() // escolhe a impressora (cPrinter retorna o nome da impressora)
If !Empty( cPrinter )
nCopias := 1 // n£mero de c¢pias
oPrinter := Win32Prn():new( cPrinter )
oPrinter:landscape := .F.
oPrinter:formType := DMPAPER_A4 // folha A4
oPrinter:copies := nCopias
IF .NOT. oPrinter:create()
Alert("Erro Tentando Acessar a Impressora")
Return Nil
ENDIF
IF .NOT. oPrinter:startDoc( "Impressao Teste" )
Alert("Erro Tentando Enviar os Dados de Impressao")
Return Nil
ENDIF
// impressao comprimida: { 3, -50 } ‚ igual 50/3, ou seja 16.6 cpp
*****************************************************************
* oPrinter:SetFont( "Lucida Console", 10, { 3, -50 } )
*****************************************************************
// impressao normal
*****************************************************************
* oPrinter:SetFont( "Lucida Console", 10 )
*****************************************************************
* oPrinter:CharSet( 0 )
* oPrinter:bold( FW_NORMAL ) // nao negrito, nao italico, etc...
For i = 1 To Len ( aLinesPrint )
oPrinter:textOut( aLinesPrint[ i ] ) // imprime a linha
oPrinter:newLine() // passa para proxima linha
Next
oPrinter:endDoc() // envia a impressora
oPrinter:destroy() // fecha documento de impressao
EndIf
Return Nil

