Introdução (e desabafo)
OK. Pessoal. Espero que isso valha alguma coisa porque me deu muita dor de cabeça. Pode parecer algo idiota para alguns, mas o problema é que varri essa tal de Internet, em inglês, português e alemão e não houve alma que conseguisse me dar uma resposta satisfatória. Então, após muitas horas de pesquisa e de juntar pedaços daqui e dali, eis o resultado.
Veja o código abaixo
//Inicio do código
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Impressao {
public static void main(String[] args) {
FileOutputStream fos = null;
PrintStream ps = null;
try{
fos = new FileOutputStream("LPT1:");
} catch (Exception ex) {
}
try {
ps = new PrintStream(fos);
} catch (Exception exception) {
}
ps.print("Coloque aqui o que você quer imprimir");
}
}
//Fim do código
Caso a sua porta não seja a LPT1, basta passar outra como argumento.
Lista de Alguns Códigos ESC/P e Seus Usos
A idéia é enviar comandos do software da impressora (ESC/P) diretamente para a porta em uso, no nosso exemplo, a LPT1. Abaixo segue uma lista de alguns códigos bastante úteis.
Exemplo: ps.print("\u001B\u0043" + (char)36);
Resultado: Especifica o tamanho da página em linhas. Neste caso, a página possui 36 linhas. É possível especificar de 1 a 127 linhas por página.
Exemplo: ps.print("\u001B\u0032");
Resultado: Espaçamento de linha default: 1/6 de polegada. Existem outras opções de espaçamento de linhas.
Exemplo: ps.print("\u001B" + "\r");
Resultado: Retorna o carro da impressora.
Exemplo: ps.print("\u001B\u004A" + (char)200);
Resultado: Avanço vertical. Move a posição verticalmente n/216 polegadas. No exemplo acima, isso equivale a 200/216 = 0,9259, ou seja, 2,35cm.
Exemplo: ps.print("\u001B" + "E");
Resultado: Modo enfatizado (negrito);
Exemplo: ps.print("\u001B" + "F");
Resultado: Desativa o modo enfatizado.
Há uma arquivo com todos os códigos disponíveis em:
http://www.epson.co.uk/support/manuals/pdf/ESCP/Part_1.pdf
http://www.epson.co.uk/support/manuals/pdf/ESCP/Part_2.pdf
Com usar esta referência?
Nos links passados acima, você encontrará a referência dos códigos ESC/P para a impressora Epson LX-300, mas como usar este material. Veja um exemplo:
O que você encontrará na referência é algo assim:
ESC J Advance print position vertically
Format
ASCII ESC J n
Hex 1B 4A n
Decimal 27 74 n
Como usar?
- O código ASCII seria: ESC J n
- O código Hex seria: 1B 4A n
- O código decimal seria: 27 74 n
Eu usei o código Hexa. Veja o exemplo abaixo:
ps.print("\u001B\u004A" + (char)120);
Com a linha acima, haverá um avanço vertical do carro de 120/216 polegadas. No código acima:
ps = instância de PrintStream
print = método do objeto
\u001B = hexa para ESC
\u004A = hexa para J
(char)120 = o valor de 'n'.
Faça alguns testes. Espero que apreciem.
quarta-feira, 30 de janeiro de 2008
Java - Como imprimir na Epson LX-300 via LPT1 - Parte 1
Postado por
Skal
às
17:35
Marcadores: Epson LX-300, Java, LPT1
Assinar:
Postar comentários (Atom)
8 comentários:
Consigo colocar isto num script, para fazer o browser imprimir texto na lpt1?
cara funcionou direitinho aqui era tudo que eu tava atras e faz tempo, so que encontrei o problema que a porta da impressora fica ocupada mas tudo bem isso resolvo com o tempo valeu
cara, maravilha de artigo! queria ter encontrado ele antes, teria me poupado muito tempo... vlw pessoal!
Te devo uma cerveja geladíssima! pode cobrar!
Rapaz,
ótimo artigo, show de bola!
Obrigado por compartilhar tal conhecimento, está sendo de extrema utilidade. Tenho um blog em inglês, então gostaria de saber se eu poderia traduzí-lo (caso ja nao o tenha feito)?
Abraços
Como posso alterar o espaçamento entre as linhas ? este eh o default \u001B\u0032...como faço para diminuir ?
que gambiarra velho! Já ouviu falar em padrões de projeto?
Belo Artigo !
Esta função funciona apenas para Aplicações Swing, para WEB temos que fazer uma APPLET.
Fiz uma para impressão no I9 e Chrome, segue link:
http://www.veloso.adm.br/DirectPrint.html
Postar um comentário