| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2009 19:57:12
|
Valder Olmo Corrêa
JavaGuru
![[Avatar]](/images/avatar/8760f3931e4da88677b3b650b5743f89.jpg)
Membro desde: 29/12/2007 17:22:53
Mensagens: 213
Localização: São Paulo
Offline
|
Olá, amigos do GUJ !
Estou precisando desenvolver uma pequena aplicação para imprimir notas fiscais pela impressora matricial, porém não faço a mínima idéia de como fazer isso.
Já pesquisei aqui no GUJ e no Google, mas o que encontro não condiz com uma pessoa que esteja aprendendo a desenvolver esse tipo de aplicação, ou seja, começando do zero. Aqui no GUJ até encontrei um código pronto, mas o problema é entender como tal código funciona, o que faz cada linha do programa.
Também andei dando uma olhada em alguns tutoriais da SUN, mas são confusos e cada página que visito há uma infinidade de links adicionais. Com isso perco-me um pouco.
Alguém sabe onde posso encontrar um bom tutorial para conexão com a impressora matricial bem como um tutorial de como implementar esse programa de impressão de notas fiscais pela impressora matricial ? Pode ser apostila, link da web, até livro (nesse caso até prefiro, pois nos livros as coisas sempre vêm bem melhor explicadas, posso comprá-lo, se for o caso).
Desde já agradeço a ajuda.
|
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/11/2009 00:55:46
|
raci0nal
JavaChild
![[Avatar]](/images/avatar/a50f4ea03581f27aae82ea135f1b6fb4.jpg)
Membro desde: 09/01/2007 12:53:24
Mensagens: 147
Offline
|
Amigo, infelizmente não vou poder te ajudar com links... senão eu só iria pesquisar no Google, coisa que você já deve ter feito. rs
Mas posso lhe dizer que imprimir em uma impressora matricial é muito simples.
Basta você tratar como se estivesse escrevendo um arquivo de texto. O detalhe é que ao invés de especificar um caminho do sistema de arquivos, você especifica a porta da impressora (como a LPT1).
O próprio Java possui uma classe para isso, a PrintStream.
De maneira bem simples, isso imprimiria em uma impressora conectada à porta LPT1:
Se quiser tentar e precisar de alguma ajuda, escreva.
Abraços,
Marcos Antonio Campos Jordão''
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/11/2009 02:47:33
|
Valder Olmo Corrêa
JavaGuru
![[Avatar]](/images/avatar/8760f3931e4da88677b3b650b5743f89.jpg)
Membro desde: 29/12/2007 17:22:53
Mensagens: 213
Localização: São Paulo
Offline
|
Opa, Marco, que beleza !
Obrigadão pelo código ! Parece bem simples mesmo !
Mas o que vejo aí é que não há como posicionar o cursor da impressora em uma determinada coluna da linha, coisa necessária para se imprimir notas fiscais.
Vejo que há como quebrar a linha, mas como eu posiciono o cursor numa determinada posição da linha (coluna) ?
E outra coisa, andei lendo que vaira muito de impressora para impressora, por exemplo, a forma de impressão, formatação (tamanho do fonte, cor do fonte, etc...), variam de uma Epson para uma HP, por exemplo. Gostaria de saber como posso fazer isso. Acredito que numa nota fiscal há campos em que o tamanho do fonte seja diferente do tamanho do fonte de outro campo. Gostaria de saber isso também.
Se puder continuar ajudando, agradeço muito !
Quanto a testar o código, sim, irei testá-lo, mas antes preciso arrumar uma impressora matricial, mas isso eu dou um jeito.
Obrigado desde já.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/11/2009 11:12:38
|
raci0nal
JavaChild
![[Avatar]](/images/avatar/a50f4ea03581f27aae82ea135f1b6fb4.jpg)
Membro desde: 09/01/2007 12:53:24
Mensagens: 147
Offline
|
Para "posicionar" o carro de impressão em uma coluna o método que eu uso é inserir espaços antes dos textos.
Precisei desses recursos justamente para impressão de Notas Fiscais (que aliás graças à Deus está sendo substituído pela NF-e).
Realmente como você disse há uma variação entre impressoras matriciais. O que mais percebi foi variação na "altura da linha". Mas não é muita não.
Sua aplicação necessita ser utilizada por impressoras diferentes? Mas sempre matricial né?
Quando estava desenvolvendo essa impressão de Notas Fiscais, criei uma classe "genérica" para auxiliar a impressão.
Se quiser, posso lhe enviar o Código.
Mas uma coisa você não conseguirá escapar: testar muito até encontrar as posições corretas dos campos, de acordo com a impressora e principalmente de acordo com o formulário. É bem chatinho! rs
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/11/2009 16:33:22
|
Valder Olmo Corrêa
JavaGuru
![[Avatar]](/images/avatar/8760f3931e4da88677b3b650b5743f89.jpg)
Membro desde: 29/12/2007 17:22:53
Mensagens: 213
Localização: São Paulo
Offline
|
Ops, Legal, Marco, também tive essa idéia de inserir espaços em branco na linha até o carro chegar no lugar certo
E sei que é meio chato esse teste, já fiz isso quando estava aprendendo Clipper. tem que mandar a impressora imprimir x no formulário inteiro e ir contanto os espaços. Mjuito chato mesmo.
Se puder me enviar o código, agradeço muito mesmo ! Não tenho muita pressa para fazer isso, mas o quanto antes melhor.
Abraços !
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/11/2009 21:59:44
|
raci0nal
JavaChild
![[Avatar]](/images/avatar/a50f4ea03581f27aae82ea135f1b6fb4.jpg)
Membro desde: 09/01/2007 12:53:24
Mensagens: 147
Offline
|
Valder,
Segue duas classes.
Uma funciona como "auxiliar genérica" e a outra é uma implementação de impressão em uma LX300.
Acho que vai te ajudar.
Qualquer dúvida, escreva.
| Nome do arquivo |
EmissorNotaFiscal.java |
Download
|
| Descrição |
EmissorNotaFiscal.java |
| Tamanho |
2 Kbytes
|
| Baixado: |
251 vez(es) |
| Nome do arquivo |
EmissorLX300.java |
Download
|
| Descrição |
EmissorLX300.java |
| Tamanho |
4 Kbytes
|
| Baixado: |
291 vez(es) |
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/11/2009 01:35:14
|
Valder Olmo Corrêa
JavaGuru
![[Avatar]](/images/avatar/8760f3931e4da88677b3b650b5743f89.jpg)
Membro desde: 29/12/2007 17:22:53
Mensagens: 213
Localização: São Paulo
Offline
|
marco, mito obrigado pela tremenda ajuda que está me prestando, sou muito grato.
Arrumarei a impressora e começarei a fazer os testes.
Precisando de alguma coisa, envie mp ou poste aqui mesmo.
Valeu aí, rapaz !
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2009 12:19:08
|
marcellhkr
What is classpath?
Membro desde: 05/11/2009 19:52:37
Mensagens: 9
Offline
|
Marco muito obrigado pela ajuda ai.
Seus códigos quebraram um galhão
Vlw
This message was edited 2 times. Last update was at 16/11/2009 12:27:38
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/11/2009 20:41:28
|
marcellhkr
What is classpath?
Membro desde: 05/11/2009 19:52:37
Mensagens: 9
Offline
|
Marco na sua implementação vc nem usou o código esc-p da epson né?
Vc tem como explicar o código que vc fez do alinha esquedar, centro ,direita de como funciona.
Vc se basea em 80 colunas e vai imprimindo.
Se vc tiver como passar uma imagem da sua nota fical só pra eu ter uma ideia de como fica me ajudaria um pouco.
Obrigado
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/11/2009 23:02:43
|
raci0nal
JavaChild
![[Avatar]](/images/avatar/a50f4ea03581f27aae82ea135f1b6fb4.jpg)
Membro desde: 09/01/2007 12:53:24
Mensagens: 147
Offline
|
Usei o código Esc-P para imprimir em negrito (método "adicionarNegrito()") e para dar um espaçamento na margem superior adequando ao formulário que eu deveria seguir (linha 2 do método "emitir()").
Os métodos de alinhamento são bem simples.
Fiz um método auxiliar "getEspaco(int qtde)" que retorna a quantidade informada em espaços em branco.
No "alinharDireita()" e "alinharEsquerda()" eu pego o texto informado (parâmetro "String texto") e completo com a quantidade de espaços necessária para que fique do tamanho informado (parametro "int tamanho").
Segue com comentários:
O "alinharCentro()" só é diferente quanto ao cálculo para achar o centro. Ele calcula a diferença (espaços necessários para completar o "tamanho" informado) e divide essa diferença por 2, colocando metade dos espaços à esquerda e metade à direita.
Simples assim.
Agora a quantidade de quebra de linhas, quantidade de espaços, tudo isso você tem que ir testando e fazendo um "mapeamento" de como deve ser, de acordo com o formulário que tem que preencher. Pode por nisso vários formulários de teste.
Infelizmente não tenho nenhum formulário digitalizado para enviar. Até porque a NF-e substituiu o que eu tinha implementado.
Fico devendo.
Abraços,
Marcos Antonio Campos Jordão''
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2009 13:05:31
|
mcncicco
Entusiasta Java
Membro desde: 03/07/2008 10:53:45
Mensagens: 16
Offline
|
Olá, muito bom o seu código marcus.
Aqui está imprimindo, sendo que sem acentuação, como eu faço para conseguir imprimir com os acentos???
Obrigado desde já.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2009 14:03:13
|
marcellhkr
What is classpath?
Membro desde: 05/11/2009 19:52:37
Mensagens: 9
Offline
|
Vc tem que dizer pra impressora qual tabela de char vc quer usar.
Eu estou usando um impressora da epson e passa isso através dos comando ESC/P.
Muitas das coisas sobre este código peguei desta pagina
http://www.drayah.net/
Nesta página vc acha um biblioteca em java pronto com comando ESC/P
Existe também os manuais sobre os comandos esc/p
support.epson.ru/products/manuals/000350/part1.pdf
support.epson.ru/products/manuals/000351/part2.pdf
support.epson.ru/products/manuals/000352/part3.pdf
Espero que estas informações ajude vc.
Abraços
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2009 14:26:03
|
mcncicco
Entusiasta Java
Membro desde: 03/07/2008 10:53:45
Mensagens: 16
Offline
|
Olá Marcel,
Tentei entender como criar a classe ESCPrinter, mas não realidade não consegui entender nada, vc não teria como me mostrar algo prático???
Obrigado desde já pela atenção!!
Marcelo
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2009 15:16:18
|
marcellhkr
What is classpath?
Membro desde: 05/11/2009 19:52:37
Mensagens: 9
Offline
|
Este código foi adaptado daquele biblioteca que eu passei e foi adaptado e usado como o marco utiliza no código dele
|
|
|
 |
|
|