Página 1 de 1

WIN32PRN altera o codepage da impressora

Enviado: 26 Jul 2012 08:55
por coliveirasilva
Bom dia,

Precisava da v/ ajuda para ultrapassar um problema de alteração do codpage da impressora depois da execução WIN32PRN.

1) Estou a imprimir para uma impressora de talões EPSON TM ligado via USB
2) Todo programa funciona bem com os caracteres portugueses (os DBF estão bem, a tela está bem, os ficheiros de input e output .TXT escrevo estão bem).

Código: Selecionar todos

REQUEST HB_CODEPAGE_PT850 
HB_SETCODEPAGE("PT850")   
REQUEST HB_LANG_PT
HB_LangSelect("PT")
#IFDEF __GTWVW__
		lMainCoord := WVW_SetMainCoord( .t. )
		WVW_SetCodePage(,255) 
#ENDIF
3) A impressora está configurada para codepage 850
4) Tenho um ficheiro X.TXT com este contéudo : "CALÇAS OLÁ CRÉDITO"
5) No programa faço:

Código: Selecionar todos

  RUN("print X.TXT")  -> a impressão sai bem
  oPrinter := Win32Prn():new()     
  oPrinter:create()                 
  oPrinter:startDoc()               
  oPrinter:SetFont("Courier New",11, 0) 
  oPrinter:TextOut( "CALÇAS OLÁ CRÉDITO")  --> Não imprime Ç Á É
  oPrinter:endDoc()                 
  oPrinter:destroy() 
   RUN("print X.TXT")  -> já não imprime Ç Á É
6) Desligo e volto a ligar a impressora e faço PRINT x.txt e os caracteres portugueses voltam a ficar bem

O que tenho que fazer no WIN32PRN ?

Obrigado

WIN32PRN altera o codepage da impressora

Enviado: 26 Jul 2012 10:54
por Jairo Maia
Olá Oliveira,

Seja bem vindo ao fórum.
coliveirasilva escreveu:Desligo e volto a ligar a impressora e faço PRINT x.txt e os caracteres portugueses voltam a ficar bem
Isto ocorre porque você está alterando o codepage da impressora, e não está restaurando a configuração anterior ao sair da função.

Contudo, se a impressora está reconhecendo os caracteres acentuados, o que ocorre se vc não usar o comando WVW_SetCodePage(,255)? Já tentou imprimir sem usá-lo?

WIN32PRN altera o codepage da impressora

Enviado: 26 Jul 2012 11:21
por coliveirasilva
Já experimentei e o problema mantem-se.
Também experimentei a rotina para uma HP LAserjet 1022n e o problema é o mesmo, isto é, a classe W32PRN altera o codepage e/ou fonts e não consigo imprimir caracteres expeciais portugueses (ç ã é ó).

Estou a cometer um erro e não consigo descobrir aonde.

WIN32PRN altera o codepage da impressora

Enviado: 26 Jul 2012 12:16
por Eolo
Eu edito meus PRGs no ambiente DOS (OEM) e, na impressão com a Win32prn (ANSI, via Windows), dava o mesmo problema mencionado pelo Oliveira.

O texto "CALÇAS OLÁ CRÉDITO", digitado no DOS, saía errado na impressão.

A solução: passei a usar a função HB_OEMTOANSI:
oPrinter:TextOut( hb_oemtoansi("CALÇAS OLÁ CRÉDITO"))

A função troca os caracteres digitados em OEM pelos correspondentes em ANSI, aí sai corretamente na impressora.

WIN32PRN altera o codepage da impressora

Enviado: 26 Jul 2012 12:34
por coliveirasilva
Já testei e funciona perfeitamente.
Obrigado pela ajuda.
Bem haja Eolo.

WIN32PRN altera o codepage da impressora

Enviado: 26 Jul 2012 20:58
por Eolo
Legal que deu certo.
Sucesso!