Prezados companheiros...
estou eu aqui (como já disse: desde o nascer do sol até o entardecer, anoitecer, madrugar) na frente deste computador, sem fazer mais nada, a não ser isso...
então com meus "butões" comecei a repensar que talvez o problema não esteja na rotina e sim na geração do MemoWrit pela array cCupom.
Pois então, fiz o seguinte:
peguei apenas a Função de impressão (onde funciona o WinPrn), esta mesma que V.Sas. me pediram que eu postasse novamente, peguei também a função que invoca-a, e coloquei as 2 num único arquivo que chamei de TESTE2.PRG, seguindo a orientação do Eolo e de demais, que ficou assim (só pra desencargo de consciência):
Código: Selecionar todos
func main ()
// #include 'gtwvg.ch'
#include 'hbwin.ch'
public cCupom, nPrn :=1, mUSBPRN, eol := Chr(13) + Chr(10), aPrn := Win_PrinterList(), mUSB := .f. // para imprimir em impressora USB usando WIN_PRN/harbour 6/12/15w // essa linha veio do pci10227 p/que todos os módulos a usem p/ imprimir USB 8/12/15w. outra observação era PRIVATE e mudei p/ PUBLIC
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", aPrn[ nPrn ] )
PrintWinPrn( "0001.tmp", aPrn[ nPrn ] )
// PrintWinPrn( "ARQ_USB", aPrn[ nPrn ] )
// MsgInfo ('Extrato direcionado com sucesso p/ impressora USB','SiCCA - extrato') // NÃO FUNCIONOU NA GTWVG 11/12/15W.
// MENSAGEM ('Extrato direcionado com sucesso p/ impressora USB','SiCCA - extrato')
inkey(3)
// PrintWinPrn( '&mCDCLIENTE..tmp', aPrn[ nPrn ] )
// PrintWinPrn( 'mCDCLIENTE.TMP', aPrn[ nPrn ] )
// PrintWinPrn( VENDAS, aPrn[ nPrn ] )
// keyboard chr (27)
exit
Endi
EndDo
retu nil
Function PrintWinPrn( cArq, cPrint)
Local oPrn, aPrn := WIN_PrinterGetDefault(), n := 0
// Local oPrn, aPrn := GetPrinters(), n := 0
oPrn:=Win_Prn():New(cPrint)
oPrn:SetColor( HB_WIN_RGB_GREEN ) // não funciona com HBMK2
// oPrn:SetColor( HB_WIN_RGB_YELLOW, HB_WIN_RGB_BLUE )
oPrn:CharSet(255)
oPrn:Copies := 1
oPrn:Landscape := .F.
oPrn:formType := WIN_DMPAPER_A4
// oPrn:pageWidth:= 160
// if DCI10999->TP_RECIBO=1 .or. DCI10999->TP_RECIBO=2 // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ?'recibo 1 ou 2 ->',DCI10999->TP_RECIBO
// wait
// oPrn:SetFont('courier new' , 17, { 1, 17 }, 0, .F., .F.)
oPrn :SetFont( "Courier New", 12, { 1, 20 }, 0, .F., .F. )
// oPrn:SetFont( "Lucida Console", 8, { 3, -50 } )
// else // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ?'recibo 3 ou outro ->',DCI10999->TP_RECIBO
// wait
// oPrn:SetFont( "Lucida Console", 8, { 3, -50 } )
// endif // acrescentado p/imprimir condensad // oPrn :SetColor( HB_WIN_RGB_RED )
oPrn:Create()
oPrn:StartDoc("Impressão USB")
// ?'após o create/startDoc'
// wait
/* mudei lá pra baixo ///// 10/12/15w
oPrn:SetColor( HB_WIN_RGB_YELLOW, HB_WIN_RGB_BLUE )
oPrn:SetPen( WIN_PS_SOLID, 1, HB_WIN_RGB_RED )
oPrn:Copies := 1
oPrn:CharSet(255)
if DCI10999->TP_RECIBO=1 .or. DCI10999->TP_RECIBO=2 // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ?'recibo 1 ou 2 ->',DCI10999->TP_RECIBO
// wait
oPrn:SetFont('courier new' , 17, { 1, 17 }, 0, .F., .F.)
// oPrn :SetFont( "Courier New", 12, { 1, 17 }, 0, .F., .F. )
else // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ?'recibo 3 ou outro ->',DCI10999->TP_RECIBO
// wait
oPrn:SetFont( "Lucida Console", 8, { 3, -50 } )
endif // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ? 'após o oPrn - dentro de PrintWinPrn'
// wait
// mudei lá pra baixo 10/12/15w ==============*/
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
// else // acrescentado para mostrar na tela que a impressão foi p/USB 7/12/15w
// Alert("Imprimindo na Impressora (multifuncional/laser) USB") // acrescentado para mostrar na tela que a impressão foi p/USB 7/12/15w
EndIf
// HB_CDPSelect("PT850")
SetPrc(0,0)
cText := MemoRead( cArq )
nLinh := MlCount( cText )
nCor := nil
mCor := {}
aadd (mCOR,{'Preta','Azul','Verde','Vermelha'})
********** acrescentado p/o usuário escolher a cor da impressão 10/12/15w ***********
/* ******** ELIMINADO TEMPORARIAMENTE 1/12/15W
While nCor != 0
@ 1, 0 SAY "Selecione a cor da impressão:"
@ 2, 0 TO MaxRow(), MaxCol()
nCor := AChoice( 3, 1, MaxRow() - 1, MaxCol() - 1, mCor, .T.,, nCor )
IF nCor != 0
if nCOR =1
// oPrn:SetColor( HB_WIN_RGB_YELLOW, HB_WIN_RGB_BLACK )
exit
endif
if nCOR =2
oPrn:SetColor( HB_WIN_RGB_YELLOW, HB_WIN_RGB_BLUE )
exit
endif
if nCOR =3
oPrn:SetColor( HB_WIN_RGB_YELLOW, HB_WIN_RGB_GREEN )
exit
endif
if nCOR =4
oPrn:SetColor( HB_WIN_RGB_YELLOW, HB_WIN_RGB_RED )
exit
endif
Endi
EndDo
******** ELIMINADO TEMPORARIAMENTE 1/12/15W */
/*
If !oPrn:Create()
Alert("Nao foi criado o documento de Impressao")
Return nil
EndIf
*/
********** acrescentado p/o usuário escolher a cor da impressão 10/12/15w ***********
/* *** mudei de local p/ ver se imprime corretamente 12/12/15w.
oPrn:SetColor( HB_WIN_RGB_GREEN ) // não funciona com HBMK2
// oPrn:SetColor( HB_WIN_RGB_YELLOW, HB_WIN_RGB_BLUE )
// oPrn:SetPen( WIN_PS_SOLID, 1, HB_WIN_RGB_GREEN )
oPrn:Copies := 1
oPrn:CharSet(255)
if DCI10999->TP_RECIBO=1 .or. DCI10999->TP_RECIBO=2 // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ?'recibo 1 ou 2 ->',DCI10999->TP_RECIBO
// wait
// oPrn:pageWidth:= 160
// oPrn:SetFont('courier new' , 17, { 1, 17 }, 0, .F., .F.)
// oPrn :SetFont( "Courier New", 12, { 1, 17 }, 0, .F., .F. )
oPrn :SetFont( "Courier New", 12, { 1, 20 }, 0, .F., .F. )
else // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ?'recibo 3 ou outro ->',DCI10999->TP_RECIBO
// wait
oPrn:SetFont( "Lucida Console", 8, { 3, -50 } )
endif // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
*/ **** mudei de local p/ ver se imprime: 12/12/15w.
// ? 'após o oPrn - dentro de PrintWinPrn'
// wait
// oPrn:SetColor( HB_WIN_RGB_RED ) // não funciona com HBMK2
For n := 1 to nLinh
oPrn:TextOut(HB_AnsiToOem(MemoLine(cText,,n)),.t.)
// ? nLinh
// wait
Next
oPrn:EndDoc()
oPrn:Destroy()
// HB_CDPSelect( "PTISO")
Return .t.
Daí compilei tudo usando o seguinte (.HBP):
Código: Selecionar todos
-oTESTE2
teste2.prg
ERRORSYSGT.PRG
gtwvg.hbc
HBWIN.HBC
XHB.HBC
HBCT.HBC
-m
-quiet
Pelo TESTE2.BAT abaixo:
Após, executei e, advinhem?
Não é "o que você está pensando"... não funcionou como esperado. Imprimiu no CutePDF a mesma coisa da última imagem postada.
Então, será que o problema não está relacionado ao ARRAY cCupom que só aceita (por linha) 80 colunas?
Sei lá, nesta altura do campeonato, qualquer chute pra tentar acertar o gol tá valendo...
Se puderem, compilem, executem e tirem suas próprias conclusões!
Ah!, não criei a ARRAY novamente (como podem observar) usei o arquivo "0001.TMP" criado pelo meu programa. Isso é que está me fazendo acreditar que o problema esteja nele.
0001.zip
- FAVOR RENOMEAR A EXTENSÃO DE .ZIP PARA .TMP
- (1.05 KiB) Baixado 266 vezes
O arquivo acima não é .ZIP, só a extensão para que este fórum o aceitasse o modifiquei. Favor mudar de .zip para .TMP.
alguém tem mais alguma ideia?