Relatórios para Matriciais

6 respostas
laelsonc

Programo em Delphi e PHP a alguns anos. Mas agora estou ingressando de cabeça no JAVA.
Queria saber com relação a relatórios no JAVA. Como tenho alguns programas que os clientes exigem rapidez na impressão em impressoras matriciais, gostaria de saber se existem bibliotecas específicas para a criação do código nessas impressoras, que seja diferentes do modo gráfico do windows. Se o IREPORTs possue um pre-visualizador para impressões.

Como ainda to chegando nesse mundo, to comprando livros e tals, queria saber a opinião de vcs que ja estão. Porque esse ponto me causou muita pesquisa no Delphi, tendo que comprar um componente específico.

6 Respostas

laelsonc

Pessoal, opinem ai por favor.

V

Uma das vantagens que voce tera agora, é a que nao precisa comprar um componente para isso! A nao ser que voce queira!!

Sim i iReports tem um previsualizador de relatorio, vc pode invocalo quando quizer!!
Pode tambem Mandar diretinho para a impressora!!

No seu caso, como voce quer improssoes rapidas, onde o programa envia dados direto para a porta da impressora, utilize esse codigo que vou colocar abaixo como exemplo!!

/**
* 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;
}


}
Este codigo acima, manda seus dados diretinho pra impressora. Da ate pra brincar com a impressora!! heheh Espero que tenha ajudado!!
laelsonc

Show de Bola. Adeus Delphi.
Agora me diz, esses códigos de impressora são genéricos ?
Ou são pra cada marca um. Onde posso conseguir
a tabela pra consulta.

Obrigadão mesmo.

V

Sao genericos para a marca EPSON.
Em relacao as outras marcas nao sei te responder.

Teria que entrar em contato com o fabricante do modelo da impressora ou encontrar o manual da impressora!!

A

Bom dia,

Usei essas funções para que eu possa enviar os códigos ESC/P para minha impressora LX-810L, 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 parece que não recebeu nada !!!

Uso o SUSE 10 e JDK-1.6 NetBeans 5.5.

Obrigado!!

A

Pessoal, mil perdões, o que eu estava querendo fazer é ativar o modo COMPRESSADO da impressora, mandei o código correto e funcionou !!

Obrigado a Todos, se precisar da um hello !!

Criado 11 de setembro de 2006
Ultima resposta 7 de mai. de 2007
Respostas 6
Participantes 3