Relatórios para Matriciais

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.

Pessoal, opinem ai por favor.

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!!

[code]
/**

  • 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;
}

}[/code]

Este codigo acima, manda seus dados diretinho pra impressora. Da ate pra brincar com a impressora!! heheh

Espero que tenha ajudado!!

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.

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!!

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!!

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 !!