Dúvida com PrintFileRaw

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Dúvida com PrintFileRaw

Mensagem por porter »

olá pessoal, com a rotina abaixo, estou imprimindo em uma impressora não fiscal mp-4200 th, mas a impressão está toda bagunçada,
onde eu formato o tamanho da fonte, nos parâmetros do PrintFileRaw ou o arquivo gerado tem que estar formatado ?

Estou compilando com Harbous 3.2

W32PRN_(arq,wPA_ICUPOM)

Código: Selecionar todos

PROCEDURE W32PRN_(arqtxt,nomeimpressora)
    // Essa função, Imprime uma quantidade muito grande de itens
	// sem dar espaço entre eles, ideal para impressora não fiscal
  	Local cPrinter := ALLTRIM(nomeimpressora)
  	Local nResult, cMsg:=""
  	cFileName := "C:\ESTOQUE\" + arqtxt
	
    SET PRINTER TO
    SET DEVICE TO SCREEN
	
    If !File("&cFileName")
       Return Nil
    Else
       nResult := PrintFileRaw( cPrinter, cFileName, "Impressao Pelo Sistema" )
       IF nResult = -1
          cMsg = "Parametros Invalido, Favor Tentar Novamente"
       ELSEIF nResult = -2
          cMsg = "Falha na chamada da Impressora, Favor Verificar a Impressora"
       ELSEIF nResult = -3
          cMsg = "Falha ao Iniciar Impressão, Favor Verificar a Impressora"
       ELSEIF nResult = -4
          cMsg = "Falha ao Iniciar a Primeira Pagina, Favor Verificar a Impressora"
       ELSEIF nResult = -5
          cMsg = "Falha de Memoria da Impressora, Favor Verificar a Impressora"
       ELSEIF nResult = -6
          cMsg = "Não foi Possivel localizar o arquivo de Impressão, Favor Tentar Novamente"
       ENDIF
       IF len(alltrim(cMsg)) > 1
          Alert(HB_ANSITOOEM(cMsg) )
       ENDIF
    EndIf
    Return Nil
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Dúvida com PrintFileRaw

Mensagem por porter »

olá pessoal,
Encontrei alguns exemplos para uso com PrintFileRaw, vou testar com impressora não fiscal.

Código: Selecionar todos

FUNCTION PrintDosForWin()
	 
	   LOCAL cTexto     := ""
	   LOCAL ON_GRANDE  := CHR(27) + CHR(33) + CHR(16) // Para Impressoras Epson
	   LOCAL OFF_GRANDE := CHR(27) + CHR(33) + CHR(01) // Para Impressoras Epson
	   // Seleciona a Impressora do Windows
	   LOCAL cPrinter   := GetDefaultPrinter()         
	   LOCAL CRLF       := CHR(13) + CHR(10)
	   LOCAL cFileName  := "TEXTO.PRN"
	 
	   cTexto += "Esta e a primeira linha do texto" + CRLF
	   cTexto += Replicate( "*-", 20 ) + CRLF
	   cTexto += ON_GRANDE + "LETRAS GRANDES" + OFF_GRANDE + CRLF
	   cTexto += "Esta e outra linha de texto..." + CRLF
	   cTexto += PADL( "Esquerda ", 40 ) + CRLF
	   cTexto += PADC( "CENTRALIZADO", 40 ) + CRLF
	   cTexto += PADR( "Direita", 40 ) + CRLF
	   cTexto += PADC( "< Linha Final >", 40, "-" ) + CRLF
	 
	   IF WriteStream( cFileName, cTexto )
	      // Envia a Impressao ao Spool do Windows
	      PrintFileRaw( cPrinter, cFileName, "Impressao Em Formato DOS desde Windows" )
	      FERASE( cFileName )
	   ENDIF
	 
	RETURN NIL
	 
	// Esta Funcion la encontre por ahi...
	FUNCTION WriteStream( cFile, cStream )
	 
	   LOCAL nHandle := FCreate( cFile )
	 
	   IF FError() <> 0
	      RETURN( .F. )
	   ENDIF
	 
	   FWrite( nHandle, cStream, Len(cStream) )
	 
	   FClose( nHandle )
	 
	RETURN ( FError() == 0 )
	 
	// FIM DO PROGRAMA
Responder