VDOPrint acentuação

16/12/2005

1

Pessoal, estou usando o VDOPrint para meus relatorios e estou muito satisfeito, a não ser por um detalhe.

Não estou conseguindo fazer a acentuação sair impressa.

Exemplo: Notificação sai Notificacao

Estou usando uma Epson FX-1170

Att


Responder

Posts

16/12/2005

Vinicius2k

Olá Armando !

Não é bug, eu o fiz para não imprimir acentuação, realmente. :)

O texto é ´limpo´ antes de ser enviado à impressora para maximizar a compatibilidade com os diferentes modelos de impressoras matriciais.

Se desejar, altere o código fonte desta forma:
1. Abra a unit [b:5ec5aab5a4]VDODmPrinter.pas[/b:5ec5aab5a4] (´raiz\src´).
2. Localize o método [b:5ec5aab5a4]Print[/b:5ec5aab5a4] (procedure TVDODmPrinter.Print).
3. Comente a linha:
Text := CleanText(Text);

Deixando-a desta forma:
// Text := CleanText(Text);

4. Salve a unit, abra e recompile o pacote (´raiz\packages\delphiX\VDOPrint.dpk´).

Qualquer dúvida, estou à disposição.

T+


Responder

16/12/2005

Armando.boza

Olá Armando ! Não é bug, eu o fiz para não imprimir acentuação, realmente. :) O texto é ´limpo´ antes de ser enviado à impressora para maximizar a compatibilidade com os diferentes modelos de impressoras matriciais. Se desejar, altere o código fonte desta forma: 1. Abra a unit [b:d9c6201423]VDODmPrinter.pas[/b:d9c6201423] (´raiz\src´). 2. Localize o método [b:d9c6201423]Print[/b:d9c6201423] (procedure TVDODmPrinter.Print). 3. Comente a linha:
Text := CleanText(Text);
Deixando-a desta forma:
// Text := CleanText(Text);
4. Salve a unit, abra e recompile o pacote (´raiz\packages\delphiX\VDOPrint.dpk´). Qualquer dúvida, estou à disposição. T+


Muito obrigado...

Vou fazer as alterações.

Estou muito satisfeito com o componente, parabéns.


Responder

16/12/2005

Dopi

Ola Vinicius,

Gostaria de dar uma sugestão... Seria interessante ter uma propriedade no Componente que ativasse ou não esse filtro de caracteres acentuados...

Acredito que os caracteres acentuados são filtrados devido o motivo de várias impressoras ´se perderem´ quando tentam imprimir alguns deles...

Bom, se for esse o motivo, me lembrei de uma ´técnica´ muito muito antiga, que eu usava quando o Editor de Textos da moda era o WordStar... :)
Para imprimir todos os acentos corretamente, usavamos o comando BackSpace da Impressora, chr(8) (praticamente todas matriciais aceitam) e ´montamos´ o caracter acentuado... Exemplo:
´Á´ seria substituido por ´A´ + #8 + ´´´

O problema dessa ´ténica´ é que a impressora da um solavanco a cada acento impresso, pois ela Imprime a letra, volta o carro e imprime o acento...


Responder

16/12/2005

Vinicius2k

Olá Daniel !
Gostaria de dar uma sugestão... Seria interessante ter uma propriedade no Componente que ativasse ou não esse filtro de caracteres acentuados...

Sugestão aceita. Realmente, fui arbitrário neste ponto. Esta imposição foi devida a minha própria forma de trabalhar, forma onde impeço até mesmo o cadastramento em BDs utilizando caracteres especiais ou acentos.

Acredito que os caracteres acentuados são filtrados devido o motivo de várias impressoras ´se perderem´ quando tentam imprimir alguns deles...

Exatamente por isto. Alguns modelos, principalmente os mais antigos, não trabalham bem com acentos e cedilha. Ou não imprimem nada ou imprimem um caracter estranho.

Para imprimir todos os acentos corretamente, usavamos o comando BackSpace da Impressora, chr(8) (praticamente todas matriciais aceitam) e ´montamos´ o caracter acentuado... Exemplo:
´Á´ seria substituido por ´A´ + #8 + ´´´
O problema dessa ´ténica´ é que a impressora da um solavanco a cada acento impresso, pois ela Imprime a letra, volta o carro e imprime o acento...

Eu não conhecia esta técnica, mas vou implementar um meio termo. Já ´visualizei´ o problema do solavanco, então, vou criar duas novas proprieades: uma para definir se o usuário deseja ou não os caracteres acentuados e outra aonde ele pode escolher um modo de compatibilidade para estes caracteres caso tenha algum problema com impressoras antigas.

O que vocês acham? Vocês são usuários do VDOPrint como eu sou, então, podem manifestar opinião à vontade ! ;)

Daniel, você conhece os caracteres de controle para as RIMA? Há pouco tempo um usuário me reclamou são conseguir imprimir corretamente e gostaria, se possível, adicionar também o suporte as RIMA nesta nova versão.
Outra coisa: alguém pode criar um package qualquer (pode ser vazio mesmo) para o Delphi 2005 e me enviar e se dispor também a testar o VDOPrint nesta versão do Delphi? Eu não comprei o Delphi 2005 e não sei se a estrutura do package (VCL) foi mudada...

T+


Responder

16/12/2005

Eniorm

[b:2cae7351c9]E a opção Transliterate ??? [/b:2cae7351c9]

e pra sair corretamente acentuado a impressora deve estar configurada pra suportar os caracteres acentuados...

abraço


Responder

16/12/2005

Dopi

Vinicius,
Olá Daniel ! Eu não conhecia esta técnica, mas vou implementar um meio termo. Já ´visualizei´ o problema do solavanco, então, vou criar duas novas proprieades: uma para definir se o usuário deseja ou não os caracteres acentuados e outra aonde ele pode escolher um modo de compatibilidade para estes caracteres caso tenha algum problema com impressoras antigas.

Acho que é possível fazer toda a configuração com apenas uma propriedade... Exemplo:
TVDOPrintAcentuacao = (aceNaoInterferir, aceNenhumAcento, aceBackSpace, aceDuasLinhas)

Explicando:
aceNaoInterferir -> Envia os caracteres da maneira que eles chegaram
aceNenhumAcento-> Limpa os acentos
aceBackSpace -> Usa a técnica do BackSpace para imprimir os acentos
aceDuasLinhas -> Imprime a linha em dois passos. No primeiro passo, imprime a linha toda com as letras sem os acentos... Depois disso, manda apenas um retorno de carro (CR) ou #13.. e Imprima na mesma linha os acentos nas posições corretas...

Observe que lembrei de uma nova ´técnica´ :) que também era usada na época do WordStar, porém sem provocar vários ´solavancos´... Isso é muito útil quando o texto tem vários acentos na mesma linha...

Olá Daniel ! Daniel, você conhece os caracteres de controle para as RIMA? Há pouco tempo um usuário me reclamou são conseguir imprimir corretamente e gostaria, se possível, adicionar também o suporte as RIMA nesta nova versão.

Acho que são são os mesmos códigos das primeiras EPSONs... Os código que conheço estão [url=http://forum.clubedelphi.net/viewtopic.php?t=58409]nesse post[/url]... Acho que a RIMA não aceita todos os comandos começados com ESC... Mas afinal quem ainda tem esse dinossauro ? :)
Outra coisa: alguém pode criar um package qualquer (pode ser vazio mesmo) para o Delphi 2005 e me enviar e se dispor também a testar o VDOPrint nesta versão do Delphi? Eu não comprei o Delphi 2005 e não sei se a estrutura do package (VCL) foi mudada...


Já tive relatos de usuários que instalaram o ACBr no Delphi 2005... e eu nunca preparei um package específico para essa versão... Acho que ele abre bem o package do D7


Responder

16/12/2005

Dopi

Não sei se ajuda... mas lembrei que certa vez tinha achado na NET um arquivo .DBF com códigos para vários modelos de impressoras... Segue o Link

http://www.the-oasis.net/files/general/prnfile.zip


Responder

17/12/2005

Vinicius2k

Daniel,
Acho que é possível fazer toda a configuração com apenas uma propriedade... Exemplo:
TVDOPrintAcentuacao = (aceNaoInterferir, aceNenhumAcento, aceBackSpace, aceDuasLinhas)
Explicando: aceNaoInterferir -> Envia os caracteres da maneira que eles chegaram aceNenhumAcento-> Limpa os acentos aceBackSpace -> Usa a técnica do BackSpace para imprimir os acentos aceDuasLinhas -> Imprime a linha em dois passos. No primeiro passo, imprime a linha toda com as letras sem os acentos... Depois disso, manda apenas um retorno de carro (CR) ou #13.. e Imprima na mesma linha os acentos nas posições corretas...


Pois é. :)
Acabei percebendo isto antes de ler seu post. Mas valeu a dica. Só não tinha pensado a 4ª forma. Esta 4ª alternativa, já me parece mais difícil de implementar devido a forma com que o VDOPrint trabalha, bufferizando a linha toda antes de enviá-la para a impressora. Vou ter que pensar com cuidado sobre isto...

[quote:1e453ad24f=´Sobre RIMA, Dopi´]Acho que são são os mesmos códigos das primeiras EPSONs... Os código que conheço estão [url=http://forum.clubedelphi.net/viewtopic.php?t=58409]nesse post[/url]... Acho que a RIMA não aceita todos os comandos começados com ESC... Mas afinal quem ainda tem esse dinossauro ? :)[/quote:1e453ad24f]
Acho que pouca gente, mas ainda existe. Pode acreditar :)

Já tive relatos de usuários que instalaram o ACBr no Delphi 2005... e eu nunca preparei um package específico para essa versão... Acho que ele abre bem o package do D7

Que bom. Eu ainda não tive nenhum feedback sobre isto com o VDOPrint. Enquanto isto, vou deixar desta forma, mas nos próximos meses devo adquirir o Delphi 2006, então a compatibilidade do VDOPrint irá aumentar.


Responder