Usando o iReport em uma aplicação

Olá galera, eu estou estudando sobre crição de formulários e e achei um sitio bem completo onde me explica qual framework usar e tals, vi como usar o iReport funcionalidades e tudo só que ficou uma dúvida meio nebulosa em minha mente, como faço para a minha página (web) chamar um relatorio criado no iReport valew gente!!!

vc disponibiliza a lib do jasperReport

Estou postando o código como deve ser usado, no caso que estou passando você disponibiliza uma coleção com os valores.
Você informa aonde encontra-se o arquivo com o template gerado pelo iReport.
e o método exportReportToPdf(…) te retorna um bytes[] ae você decide o que fazer com isso se escreve no Stream do response, em arquivo. Ae envolve Stream que é simples de usar.
Qualquer dúvida estamos ae.

e lá no seu código deve ficar assim:

String caminhoRelJasper = c:/temp/Template.jasper;
Collection listaItens = fachada.getListaDeItens();
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaItens);
Map parametros = new HashMap();
JasperPrint impressao = JasperFillManager.fillReport(caminhoRelJasper, parametros, ds);
byte[] bytes = JasperExportManager.exportReportToPdf(impressao);

Kraca java.rco, vamos devagar q o santo é de barro rssr, brincadeira, bom eu entendi oque vc postou e com certeza está me ajudando mas surgiu uma nova dúvida, pq estou usando jsp, e na verdade estou dando continuidade a um projeto ja começado e o problema é que o cara que projetou ele no início n usou nenhuma classe só jsp, então assim, quando eu dou o submit eu tenho que apontar para o arquivo com o template? e esse código eu coloco na página que vai ser aberta? valew

Cria uma servlet pra colocar esse código lá!

ae vc implementa esse código no método service() que tudo no final vai dar certo.

Qualquer coisa estamos ae.

vai um exemplo q uso pra gerar boletos:
nao tive tempo para enxugar o codigo pra te passar so o interessante pra vc…
mas da uma olhada aí…
essa classe é um Servlet
vc pode chamala ate por javaScript
ex:

window.open("GeraBoleto?titulos=<%=doc%>",null,"height=600,width=800,status=yes,toolbar=yes,menubar=yes,location=no,scrollbars=yes");
package boleto;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import util.Trata;
import boleto.org.jboleto.JBoleto;
import boleto.org.jboleto.JBoletoBean;
import db.ModelMain;

public class GeraBoleto extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	PrintWriter escreveArquivo;

    ModelMain con = new ModelMain();

    public GeraBoleto()
    {
        super();
        con.openConnection();
    }
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    	montaBoleto(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    	montaBoleto(req, resp);
    }
    
    public void montaBoleto(HttpServletRequest req, HttpServletResponse resp){
		boolean ok = false;
		
    	JBoletoBean[] boletos = getBoletos(req);
		if(boletos.length>0){
			JBoleto jBoleto = new JBoleto();
			for (int i = 0; i < boletos.length; i++) {
				if(boletos[i]!=null){ 
					jBoleto.addBoleto(boletos[i],boletos[i].getBanco()); 
				}
			}
			
			String pasta = getServletContext().getRealPath("/relatorios/")+ "/";
		    String arqBoleto = "boleto.pdf";
		    
		    System.out.println(pasta+arqBoleto);
		    
		    ok = jBoleto.writeToFile(pasta+arqBoleto);
		    
		    if(ok){
		    	File arquivo = new File(pasta+arqBoleto);
			    System.out.println("Arquivo existe? "+arquivo.exists());
			    
			    try {
			    	download( arquivo.getName(), read( arquivo ), resp );
			    } catch (IOException e) {
			        e.printStackTrace();
			    }
		    }
		    
		}
    	
    	System.out.println(ok?"Boleto gerado com sucesso":"Boleto não foi gerado!");
	    
	}   

	//le o arquivo e retorno no formato byte 
	public static byte[] read( File file ) throws IOException {
		System.out.println("READ - inicio");
		System.out.println("Arquivo: "+file.getAbsolutePath());
    
        byte[] content = null;
        int fileLength = (int) file.length();
        FileInputStream fileInput = null;

        try {
            fileInput = new FileInputStream(file);

            BufferedInputStream bufferedInput = new BufferedInputStream(
                                                        fileInput);
            content = new byte[fileLength];
            bufferedInput.read(content, 0, fileLength);
            bufferedInput.close();
        } finally {
            if (fileInput != null) {
                fileInput.close();
            }
        }

        System.out.println("READ - fim");
        return content;
    }
	
	//metodo que invoca o download do arquivo
	public static void download( String filename, byte[] content,
            HttpServletResponse response ) throws IOException {
        
        response.addHeader( "Content-Disposition",
                    "attachment; filename=" + filename );
        response.setContentType( "application/download" );
        
        ServletOutputStream outStream = response.getOutputStream();
        
        // envia o conteúdo do arquivo para o stream de resposta
        try {
            outStream.write( content );
            outStream.flush();
        } finally {
            outStream.close();      
        }
    }
  
    
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	public JBoletoBean[] getBoletos(HttpServletRequest request){
		//  "C,1,9,80,4160,041921-2,1,2,1" ; "C,2,987789,0,4160,041921-2,1,2,1;"
		
		String titulos[] = request.getParameter("titulos")!= null?(request.getParameter("titulos")).split(";"):new String[0];
		JBoletoBean[] boletos = new JBoletoBean[titulos.length];  
		
		for (int i = 0; i < titulos.length; i++) {
			System.out.println(titulos[i]);
			String[] dados = titulos[i].split(",");
			
			int empresa = 0;
			int titulo = 0;
			int sequencia = 0;
			String agencia = "";
			String codigoCedente = "";
			int carteira = 0;
			int cedenteImpressao = 0;
			int mensagem = 0;
			
			boolean dadosOk = true;
			
			try {
				empresa = Integer.parseInt(dados[1]);
				titulo = Integer.parseInt(dados[2]);
				sequencia = Integer.parseInt(dados[3]);
				agencia = dados[4];
				codigoCedente = dados[5];
				carteira = Integer.parseInt(dados[6]);
				cedenteImpressao = Integer.parseInt(dados[7]);
				mensagem = Integer.parseInt(dados[8]);
			} catch (Exception e) {
				dadosOk = false;
			}
			
			if(dadosOk){
				boletos[i] = getBoleto(empresa,titulo,sequencia,agencia,codigoCedente,carteira,cedenteImpressao,mensagem);
			}
			
		}
		
		return boletos;
	    
	}
	
	
	public JBoletoBean getBoleto(int empresa,int titulo,int sequencia,String agencia,String codigoCedente,int carteira,int cedenteImpressao,int mensagem){
		JBoletoBean jBoletoBean = new JBoletoBean();
		
		
		ResultSet rs = con.getConsulta("select "+
				" tr.numero_titulo, "+
				" tr.sequencia, "+
				" (select nome from table_empresa where id_empresa="+cedenteImpressao+") as nome_cedente,"+
				" (case(tr.tipo_emitente) "+
				" when 'C' then(select razao_social from table_cliente where id_cliente=tr.cod_emitente) "+
				" when 'E' then(select nome from table_empresa where id_empresa=tr.cod_emitente) "+
				" when 'F' then(select razao_social from table_fornecedor where id_fornecedor=tr.cod_emitente) "+
				" when 'A' then(select nome from table_autonomo where id_autonomo=tr.cod_emitente) "+
				" end "+
				" )as nome, "+
				" (case(tr.tipo_emitente) "+
				" when 'C' then(select cpf_cnpj from table_cliente where id_cliente=tr.cod_emitente) "+
				" when 'E' then(select cpf_cnpj from table_empresa where id_empresa=tr.cod_emitente) "+
				" when 'F' then(select cpf_cnpj from table_fornecedor where id_fornecedor=tr.cod_emitente) "+
				" when 'A' then(select cpf_cei from table_autonomo where id_autonomo=tr.cod_emitente) "+
				" end "+
				" )as cpf_cnpj, "+
				" (case(tr.tipo_emitente) "+
				" when 'C' then(select (tipo_logradouro||' '||endereco||', '||numero) from table_cliente where id_cliente=tr.cod_emitente) "+
				" when 'E' then(select (tipo_logradouro||' '||endereco||', '||numero) from table_empresa where id_empresa=tr.cod_emitente) "+
				" when 'F' then(select (tipo_logradouro||' '||endereco||', '||numero) from table_fornecedor where id_fornecedor=tr.cod_emitente) "+
				" when 'A' then(select (tipo_logradouro||' '||endereco||', '||numero) from table_autonomo where id_autonomo=tr.cod_emitente) "+
				" end "+
				" )as endereco, "+
				" (case(tr.tipo_emitente) "+
				" when 'C' then(select bairro from table_cliente where id_cliente=tr.cod_emitente) "+
				" when 'E' then(select bairro from table_empresa where id_empresa=tr.cod_emitente) "+
				" when 'F' then(select bairro from table_fornecedor where id_fornecedor=tr.cod_emitente) "+
				" when 'A' then(select bairro from table_autonomo where id_autonomo=tr.cod_emitente) "+
				" end "+
				" )as bairro, "+
				" (case(tr.tipo_emitente) "+
				" when 'C' then(select cep from table_cliente where id_cliente=tr.cod_emitente) "+
				" when 'E' then(select cep from table_empresa where id_empresa=tr.cod_emitente) "+
				" when 'F' then(select cep from table_fornecedor where id_fornecedor=tr.cod_emitente) "+
				" when 'A' then(select cep from table_autonomo where id_autonomo=tr.cod_emitente) "+
				" end "+
				" )as cep, "+
				" (case(tr.tipo_emitente) "+
				" when 'C' then(select nome from table_cidade where id_cidade=(select cidade from table_cliente where id_cliente=tr.cod_emitente)) "+
				" when 'E' then(select nome from table_cidade where id_cidade=(select cidade from table_empresa where id_empresa=tr.cod_emitente)) "+
				" when 'F' then(select nome from table_cidade where id_cidade=(select cidade from table_fornecedor where id_fornecedor=tr.cod_emitente)) "+
				" when 'A' then(select nome from table_cidade where id_cidade=(select cidade from table_autonomo where id_autonomo=tr.cod_emitente)) "+
				" end "+
				" )as cidade, "+
				" (case(tr.tipo_emitente) "+
				" when 'C' then(select estado from table_cidade c where id_cidade=(select cidade from table_cliente where id_cliente=tr.cod_emitente)) "+
				" when 'E' then(select estado from table_cidade where id_cidade=(select cidade from table_empresa where id_empresa=tr.cod_emitente)) "+
				" when 'F' then(select estado from table_cidade where id_cidade=(select cidade from table_fornecedor where id_fornecedor=tr.cod_emitente)) "+
				" when 'A' then(select estado from table_cidade where id_cidade=(select cidade from table_autonomo where id_autonomo=tr.cod_emitente)) "+
				" end "+
				" )as uf, "+
				" tr.saldo_titulo, "+
				" tr.data_vencimento, "+
				" (select linha1 from table_mensagem_boleto where id_mensagem_boleto="+mensagem+") as instrucao1, "+
				" (select linha2 from table_mensagem_boleto where id_mensagem_boleto="+mensagem+") as instrucao2, "+
				" (select linha3 from table_mensagem_boleto where id_mensagem_boleto="+mensagem+") as instrucao3, "+
				" (select linha4 from table_mensagem_boleto where id_mensagem_boleto="+mensagem+") as instrucao4, "+
				" (select linha5 from table_mensagem_boleto where id_mensagem_boleto="+mensagem+") as instrucao5 "+
				" from table_titulos_receber tr "+
				" where tr.cod_empresa="+empresa+" and tr.numero_titulo="+titulo+" and tr.sequencia="+sequencia
		
		);
		
		try {
			if(rs.next()){
				
				jBoletoBean.setBanco(104);
				jBoletoBean.setDataDocumento(Trata.FormDataNew(null));
			    jBoletoBean.setDataProcessamento(Trata.FormDataNew(null));      
			        
			    jBoletoBean.setCedente(rs.getString("nome_cedente"));  
			
			    // dados do sacado
			    jBoletoBean.setNomeSacado(rs.getString("nome"));
			    jBoletoBean.setEnderecoSacado(rs.getString("endereco"));        
			    jBoletoBean.setBairroSacado(rs.getString("bairro"));
			    jBoletoBean.setCidadeSacado(rs.getString("cidade"));
			    jBoletoBean.setUfSacado(rs.getString("uf"));
			    jBoletoBean.setCepSacado(rs.getString("cep")); // formatar ainda 
			    jBoletoBean.setCpfSacado(rs.getString("cpf_cnpj"));
			    
			    // dados do boleto
			    jBoletoBean.setLocalPagamento("ATE O VENCIMENTO, PREFERENCIALMENTE NA CAIXA ECONOMICA");
			    jBoletoBean.setLocalPagamento2("APOS O VENCIMENTO, SOMENTE NA CAIXA ECONOMICA");
			    jBoletoBean.setInstrucao1(rs.getString("instrucao1"));
			    jBoletoBean.setInstrucao2(rs.getString("instrucao2"));
			    jBoletoBean.setInstrucao3(rs.getString("instrucao3"));
			    jBoletoBean.setInstrucao4(rs.getString("instrucao4"));
			    jBoletoBean.setInstrucao5(rs.getString("instrucao5"));
			    
			    Vector descricoes = new Vector();
			    descricoes.add("");
			    descricoes.add("");
			    descricoes.add("");
			    descricoes.add("");
			    jBoletoBean.setDescricoes(descricoes);
			    
			    jBoletoBean.setAgencia(agencia);
			    jBoletoBean.setContaCorrente(codigoCedente.split("-")[0]);
			    jBoletoBean.setDvContaCorrente(codigoCedente.split("-")[1]);
			    
			    jBoletoBean.setCarteira(String.valueOf(carteira));
			    jBoletoBean.setCodigoOperacao("870");
			    jBoletoBean.setCodigoFornecidoAgencia(codigoCedente.split("-")[0]);
			    jBoletoBean.setDvCodigoFornecidoAgencia(codigoCedente.split("-")[1]);
			    
			    jBoletoBean.setNossoNumero(rs.getString("numero_titulo")+rs.getString("sequencia"),0);
			    //jBoletoBean.setDvNossoNumero("5");
			    
			    jBoletoBean.setNoDocumento(rs.getString("numero_titulo")+"/"+rs.getString("sequencia"));
			    
			    jBoletoBean.setValorBoleto(String.valueOf(rs.getDouble("saldo_titulo")));                
			    jBoletoBean.setDataVencimento(Trata.FormData(rs.getDate("data_vencimento")));
			    
			}
		} catch (SQLException e) {
			e.printStackTrace();
			jBoletoBean = null;
		}
		
		
		
		return jBoletoBean;
	}
	
	
    
}
        

viche galera agora o bicho pegou aqui, o iReport não está servindo pro objetivo que eu quero, bom achei que ele resolveria mas ta maus, pq na verdade eu n estou fazendo um relatório propriamente dito eu estou fazendo digamos um contrato onde os dados do cliente serão variáveis porém clausulas não são, se vcs tiverem alguma outra saida pra me informar estou aceitando pq tenho que entregar isso amanhã!!! rsrs valew galera!

mas o ireport tambem faz isso… vc pode sem problemas montar seu contrato…
vc passa como parametro as chaves primarias do cliente,
retorna uma linha apenas da query do relatorio…
e monta o relatorio…

Você pode user iReport sim, ele aceita parâmetros.

pois é eu fiz algo assim pra testar e deu certo do jeito que eu queria (por isso investi em estudar mais sobre o iReport) o problema é que dão duas folhas de contrato e se eu colocar o texto na banda detail ele vai ficar se repetindo e tem um tamanho limite pra ele tb assim como a columhead tb n da afff tô fritow hauhua estou partindo pra jogar tudo em um jsp e imprimir com o navegador srsrsrsr

exatamente por isso vc tem q se certificar que so vai retornar uma linha no resultset

hauhuhuaha quando eu tive essa sacada na mesma hora vc mandou o scrap eu testei aqui só que agora a primeira página está vindo só o o cabeçalho e o texto vem só na segunda e limitado mas pelo menos ja esta fluindo mais eu vou continuar tentando aqui! valew brother

tem umas configuracoes no ireport…
nao me recordo agora… mas vc pode mudar pra proxima pagina se exceder um certo tamnho…
é só vc nao usar esse artifício!

valeu!

pois é nos filds tem como colocar para extender quando o tamanho não der mas nos textos estáticos ele n fala

faz o seguinte… baixa a biblioteca do jboleto… nela tem uma classe chamada PDFGenerator…
da uma olhada como ela funciona… daí vc pode fazer um arquivo pdf na mão grande…