WIN32PRN altera o codepage da impressora

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

Moderador: Moderadores

coliveirasilva
Usuário Nível 1
Usuário Nível 1
Mensagens: 3
Registrado em: 26 Jul 2012 05:59
Localização: Lisboa

WIN32PRN altera o codepage da impressora

Mensagem 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
Editado pela última vez por Toledo em 26 Jul 2012 13:55, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Carlos Silva
coliveirasilva59@gmail.com
RPGII / COBOL / Basic / dBase III / dBase IV / Clipper Summer
Clipper 5.xb / Blinker 7.0 / CDX com TAG
xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6406) / Borland C++ (5.5.1) 32 bit / HBmake
HWGUI 2.16 ( 14.09.2006 ) + GTWVW
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

WIN32PRN altera o codepage da impressora

Mensagem 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?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
coliveirasilva
Usuário Nível 1
Usuário Nível 1
Mensagens: 3
Registrado em: 26 Jul 2012 05:59
Localização: Lisboa

WIN32PRN altera o codepage da impressora

Mensagem 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.
Carlos Silva
coliveirasilva59@gmail.com
RPGII / COBOL / Basic / dBase III / dBase IV / Clipper Summer
Clipper 5.xb / Blinker 7.0 / CDX com TAG
xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6406) / Borland C++ (5.5.1) 32 bit / HBmake
HWGUI 2.16 ( 14.09.2006 ) + GTWVW
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

WIN32PRN altera o codepage da impressora

Mensagem 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.
coliveirasilva
Usuário Nível 1
Usuário Nível 1
Mensagens: 3
Registrado em: 26 Jul 2012 05:59
Localização: Lisboa

WIN32PRN altera o codepage da impressora

Mensagem por coliveirasilva »

Já testei e funciona perfeitamente.
Obrigado pela ajuda.
Bem haja Eolo.
Carlos Silva
coliveirasilva59@gmail.com
RPGII / COBOL / Basic / dBase III / dBase IV / Clipper Summer
Clipper 5.xb / Blinker 7.0 / CDX com TAG
xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6406) / Borland C++ (5.5.1) 32 bit / HBmake
HWGUI 2.16 ( 14.09.2006 ) + GTWVW
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

WIN32PRN altera o codepage da impressora

Mensagem por Eolo »

Legal que deu certo.
Sucesso!
Responder