Dúvidas sobre impressão em Matricial / Comandos ESC
Pessoal, estou tentando pela primeira vez imprimir nota fiscal pelo Delphi com impressora Matricial (Epson LX-300) em ´Modo texto´. O problema é que na hora de imprimir os campos saem fora de posição. Estou desconfiado que a nota que estou usando como modelo foi impressa errada. Então pensei em usar comandos ESC para aumentar ou diminuir o espaçamento entre as linhas para que os campos saiam corretamente, mas não sei como enviar esses comandos. Alguém teria um exemplo?
Aproveito também para fazer uma outra pergunta: queria fazer com que a impressora, antes de imprimir a nota, se certificasse de que o papel está na posição correta. Para isso eu queria enviar algum comando que fizesse com que a impressora colocasse o papel em posição de ´Paper park´ e depois um outro comando para ela puxar o papel na primeira linha. Mas como fazer para fazer ela puxar o papel para trás. Pra frente eu consegui, mas para trás já catei em tudo que é lugar, mas não encontrei... Alguém sabe como? Já vi um programa fazendo isso, mas não estou conseguindo mesmo...
Aproveito também para fazer uma outra pergunta: queria fazer com que a impressora, antes de imprimir a nota, se certificasse de que o papel está na posição correta. Para isso eu queria enviar algum comando que fizesse com que a impressora colocasse o papel em posição de ´Paper park´ e depois um outro comando para ela puxar o papel na primeira linha. Mas como fazer para fazer ela puxar o papel para trás. Pra frente eu consegui, mas para trás já catei em tudo que é lugar, mas não encontrei... Alguém sabe como? Já vi um programa fazendo isso, mas não estou conseguindo mesmo...
Djorius
Curtidas 0
Respostas
Aerreira
28/04/2006
Para epson:
Impressão padrão 1/6 (seis linhas por polegada)
chr(27)+chr(50)
Impressão em 1/8 (oito linha por polegada)
chr(27)+chr( 48 )
Impressão em 1/12 (doze linhas por polegada)
chr(27)+chr(51)+chr(15)
Mas eu lhe recomendo usar o RDPrint (www.deltress.com.br)
Impressão padrão 1/6 (seis linhas por polegada)
chr(27)+chr(50)
Impressão em 1/8 (oito linha por polegada)
chr(27)+chr( 48 )
Impressão em 1/12 (doze linhas por polegada)
chr(27)+chr(51)+chr(15)
Mas eu lhe recomendo usar o RDPrint (www.deltress.com.br)
GOSTEI 0
Renato.pavan
28/04/2006
Pessoal, estou tentando pela primeira vez imprimir nota fiscal pelo Delphi com impressora Matricial (Epson LX-300) em ´Modo texto´. O problema é que na hora de imprimir os campos saem fora de posição. Estou desconfiado que a nota que estou usando como modelo foi impressa errada. Então pensei em usar comandos ESC para aumentar ou diminuir o espaçamento entre as linhas para que os campos saiam corretamente, mas não sei como enviar esses comandos. Alguém teria um exemplo?
Aproveito também para fazer uma outra pergunta: queria fazer com que a impressora, antes de imprimir a nota, se certificasse de que o papel está na posição correta. Para isso eu queria enviar algum comando que fizesse com que a impressora colocasse o papel em posição de ´Paper park´ e depois um outro comando para ela puxar o papel na primeira linha. Mas como fazer para fazer ela puxar o papel para trás. Pra frente eu consegui, mas para trás já catei em tudo que é lugar, mas não encontrei... Alguém sabe como? Já vi um programa fazendo isso, mas não estou conseguindo mesmo...
Colega,
Outra boa solução seria vc usar o componente VDOPrint, é muito bom e Open Source.
[url=http://vdo.sourceforge.net/cms/index.php]Baixe Aqui[/url]
[]´s
Renato
GOSTEI 0
Aerreira
28/04/2006
Achei o VDOPrint muito confuso, acabei não conseguindo fazer ele funcionar... Sabe se funciona no Delphi5 e/ou Delphi2006 ?
GOSTEI 0
Aerreira
28/04/2006
Acho que eu tava meio maluco quando olhei o VDO print pela ultima vez.. Acabei de instalar no Delphi5, funcionou beleza.. E vejo que tem versão para o Delphi2006... Acho que vou analisar ele melhor...
Sabem se tem algum problema no VDOprint para imprimir em matriciais em impressoras remotas (em outra estação da rede) ?
Sabem se tem algum problema no VDOprint para imprimir em matriciais em impressoras remotas (em outra estação da rede) ?
GOSTEI 0
Vinicius2k
28/04/2006
Sabem se tem algum problema no VDOprint para imprimir em matriciais em impressoras remotas (em outra estação da rede) ?
Nenhum problema! Você pode usar [b:b8ece4f3f8]\\estacao\impressora[/b:b8ece4f3f8] ou mapear a porta local... A escolha é sua. As únicas regras a serem seguidas são:
- A impressora precisa estar compartilhada na estação.
- A impressora deve estar instalada no Windows da estação aonde sua aplicação roda.
GOSTEI 0
Aerreira
28/04/2006
Beleza pura Vinicius, meus parabéns pelo excelente trabalho!!!
Pelo que já vi, não há nenhuma limitação quanto a impressoras USB que não se podia imprimir pelas aplicações DOS, certo?
Pelo que já vi, não há nenhuma limitação quanto a impressoras USB que não se podia imprimir pelas aplicações DOS, certo?
GOSTEI 0
Vinicius2k
28/04/2006
Beleza pura Vinicius, meus parabéns pelo excelente trabalho!!!
Obrigado! ;)
Pelo que já vi, não há nenhuma limitação quanto a impressoras USB que não se podia imprimir pelas aplicações DOS, certo?
Correto. Apesar de não existirem matriciais USB, o VDOPrint pode ser utilizado com impressoras na USB, InkJet ou Laser.
GOSTEI 0
Aerreira
28/04/2006
Correto. Apesar de não existirem matriciais USB, o VDOPrint pode ser utilizado com impressoras na USB, InkJet ou Laser.
Muito bom...
Fiz alguns testes com o VDOPrint e, comparando com o RDPrint, achei que no VDO temos mais controle sobre o posicionamento dos caracteres impressos, coisa que no RD às vezes fica meio ruim de alinhar. O RD tem muito mais controles sobre a formatação, aceita outros tipos de impressora (personalizada), e tem um visual de Preview mais caprichado. Mas ainda assim, e também (ou principalmente) pelo fato de ser OpenSource, meu voto vai para o VDO.
GOSTEI 0
Djorius
28/04/2006
galera, consegui mandar os comandos para espaçamento de linha. mas agora tem outra coisa. estou com o manual da impressora aqui na frente e não estou conseguindo enviar o seguinte comando: (vou escrever como está no manual)
Para enviar esse comando eu vou fazer:
WriteLn(Arquivo, :?: );
valeu.
=================================== ASCII | Dec. | Hex. | Description =================================== ESC j n | 74 | 4A | Perform n/216-inch Line Feed n=0-255 ===================================
Para enviar esse comando eu vou fazer:
WriteLn(Arquivo, :?: );
valeu.
GOSTEI 0
Aerreira
28/04/2006
ESC = chr(27)
J (jota maiúsculo) = 74 decimal, 4A hexa = chr(74)
Use:
chr(27)+chr(74)+´216´ para andar 1 polegada
chr(27)+chr(74)+´108´ para andar 1/2 polegada
chr(27)+chr(74)+´54´ para andar 1/4 de polegada
chr(27)+chr(74)+´36´ para andar 1/6 de polegada (igual ao espaçamento padrão)
chr(27)+chr(74)+´1´ para andar 1/216 ávos de polegada
J (jota maiúsculo) = 74 decimal, 4A hexa = chr(74)
Use:
chr(27)+chr(74)+´216´ para andar 1 polegada
chr(27)+chr(74)+´108´ para andar 1/2 polegada
chr(27)+chr(74)+´54´ para andar 1/4 de polegada
chr(27)+chr(74)+´36´ para andar 1/6 de polegada (igual ao espaçamento padrão)
chr(27)+chr(74)+´1´ para andar 1/216 ávos de polegada
GOSTEI 0
Eniorm
28/04/2006
Apesar de não existirem matriciais USB
eu achava que a Epson LX300+ tinha suporte a USB :lol:
GOSTEI 0
Vinicius2k
28/04/2006
Da LX300+ eu, realmente não sei... já trabalhei com algumas, mas nunca reparei se tinha a porta USB.
Só que ´peguei pesado´ em falar que não existem... existem sim, só são raras (por serem novas). Esta semana um cliente adquiriu uma FX-2190 c/ USB. Excelente impressora!
Só que ´peguei pesado´ em falar que não existem... existem sim, só são raras (por serem novas). Esta semana um cliente adquiriu uma FX-2190 c/ USB. Excelente impressora!
GOSTEI 0