/**
* Impressão de Documento em Matricial
* @author: Vito Eduardo Patriarcha
* Monolito Sistemas
* ASP
*/
import java.io.*;
import java.lang.StringBuffer;
public class Imprime {
public static void main( String[] args) throws IOException {
//Como pode ver, estou abrindo a porta da impressora do windows
//Para linux use /dev/lp0 ou lp1 ou lp2 conforme a instalacao da impressora
FileOutputStream outputFile = new FileOutputStream("LPT1");
PrintWriter out = new PrintWriter(outputFile);
//Defino aqui as variaveis que sao os codigos de controle da impressora
//Existem varios alem deste.
//Aki soh criei alguns que eu necessitaria
final String RESET = "\u001B" + "@";
final String TAMANHO_DA_PAGINA = "\u001B" + "C" + (char)33;
final String TABELA_CARACTERES = "\u001B" + "t" + (char)0;
final String TABELA_CARACTERES_2 = "\u001B" + "(t" + (char)3 + (char)0 + (char)0 + (char)25 + (char)0;
final String FORM_FEED = "\f";
final String NOVA_LINHA = "\n";
final String ALIMENTA_PAGINA = "\u000C";
final String TAMANHO_10 = "\u001B" + "!" + (char)0;
final String TAMANHO_12 = "\u001B" + "M";
final String TAMANHO_15 = "\u001B" + "g";
final String TAMANHO_56 = "\u001B" + "!" + (char)56;
final String ALINHA_DIREITA = "\u001B" + "a" + (char)0;
final String ALINHA_ESQUERDA = "\u001B" + "a" + (char)1;
final String ALINHA_CENTRO = "\u001B" + "a" + (char)2;
final String ALINHA_TOTAL = "\u001B" + "a" + (char)3;
final String COLUNA_A = "\u001B" + "$" + (char)1;
final String COLUNA_B = "\u001B" + "$" + (char)3;
final String COLUNA_C = "\u001B" + "$" + (char)5;
final String COLUNA_D = "\u001B" + "$" + (char)7;
final char vazio = ' ';
StringBuffer buffer = new StringBuffer();
buffer.setLength(2370);
int novaLinha = 0;
for (int i = 0; i < 2370; i++)
buffer.setCharAt(i, vazio);
//a funcao
//INICIO DA LINHA 1
buffer = alinha(30, "Meu nome é:", buffer);
buffer = alinha(30, "Vitor Eduardo Patriarcha", buffer);
buffer = alinha(60, "ROLREL", buffer);
//reseta as configuracoes da impressora e envia os primeiros caracteres de controle
out.print(RESET);
out.print(TAMANHO_DA_PAGINA);
out.print(TABELA_CARACTERES);
out.print(TABELA_CARACTERES_2);
out.print(TAMANHO_10);
out.print(buffer.substring(0, 29));
out.print(TAMANHO_56);
out.print(buffer.substring(30, 41));
out.print(TAMANHO_10);
out.print(buffer.substring(42, 59));
out.print(TAMANHO_56);
out.print(buffer.substring(60, 66));
out.print(ALIMENTA_PAGINA);
//reseta de novo a impressora para as futuras impressoes
out.print(RESET);
out.close();
outputFile.close();
}
public static StringBuffer alinha(int inicio, String str, StringBuffer buffer)
{
int indexChar = 0;
int tamanho = str.length();
char vetorChar[] = str.toCharArray();
for (int i = inicio; i < (inicio + tamanho); i++)
{
buffer.setCharAt(i, vetorChar[indexChar]);
indexChar++;
}
return buffer;
}
}
Bom dia a todos,
Utilizei as funções acima de nosso amigo “vitorpatriarcha”, porém não foram todos os códigos que a impressora está aceitando, alguém aí já passou por isso ??
Por exemplo:
mando o código TAMANHO_12 ("\u001B" + “M”), funciona direitinho.
funciona também os codigos de ligar e desligar o NEGRITO e ITALICO, porém mando o código TAMANHO_15 ("\u001B" + “g”) a impressora
não compacta as letras para 15cpi.
Uso o SUSE 10 e JDK-1.6 NetBeans 5.5.
Sucesso!!