Win32Prn imprime so uma parte do relatorio
Enviado: 10 Fev 2016 18:37
olá pessoal, estou usando a rotina abaixo para impressão em impressora nao fiscal e jato de tinta, mas se a quantidade de linhas for muito grande, por exemplo tem um aqui com 115 linhas, nesse caso foi impresso ate a linha 73, estou passando um arquivo com extensao txt e o aquivo está correto, gostaria de saber porque imprime so uma parte, será que é porque na rotina abaixo está A4 ?
obrigado.
xHarbour, windows 7.
obrigado.
xHarbour, windows 7.
Código: Selecionar todos
PROCEDURE W32PRN(arqtxt,nomeimpressora,tipo_de_impressao)
#include "WinGdi.ch"
Local cPrinter
Local contl := 1
cFileName := "C:\JATOxh\" + arqtxt
SET PRINTER TO
SET DEVICE TO SCREEN
If !File("&cFileName")
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)
cPrinter := ALLTRIM(nomeimpressora)
If Empty( cPrinter )
Alert(HB_ANSITOOEM("Não foi informado o nome da Impressora em Parâmetros !") )
Return Nil
ENDIF
If !Empty( cPrinter )
nCopias := 1 // numero 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 ; " + alltrim(nomeimpressora) )
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,-70} )
//impressao comprimida e negritado
// oPrinter:SetFont( 'Courier New', 12,{3,-55},700,.F.,.F. )
// oPrinter:SetFont( "Lucida Console", 10,{3,-60},700,.F.,.F. )
* teste = ' "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. '
if UPPER(ALLTRIM(tipo_de_impressao)) = "COMPRIMIDO"
oPrinter:SetFont( "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. )
endif
* oPrinter:SetFont( teste )
*****************************************************************
// impressao normal
*****************************************************************
* oPrinter:SetFont( "Lucida Console", 10 )
*****************************************************************
* oPrinter:CharSet( 0 )
* oPrinter:bold( FW_NORMAL ) // nao negrito, nao italico, etc...
// oPrinter:Bold( FW_SEMIBOLD ) // semi negrito
// oPrinter:Bold( FW_BOLD ) // negrito
// oPrinter:Bold( FW_EXTRABOLD ) // negrito extra
*****************************************************************
* PrintBitMap(oPrinter, "C:\SYS222\Cowboy.bmp")
*****************************************************************
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