Relatorio em Web

7 respostas
O

Boa tarde.

Tenho o seguinte codigo, ele funciona normalmente no desktop.
Quando eu passo para a pasta do tomcat WEB-INF/classes ele não gera o arquivo pdf
algem pode me ajudar eu chamo esta função assim .

new GerarPDF().gerarRelatorio(“br/com/FelixCRM/jasper/Relatorio_de_Clientes.jasper”);

package br.com.FelixCRM.Service.Relatorio;

import br.com.FelixCRM.jdbc.ConnectionFactory;

import java.io.InputStream;
import java.net.URL;
import java.sql.Connection;

import java.sql.SQLException;
import java.util.HashMap;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;

public class GerarPDF {

    public String gerarRelatorio(String CaminhoArquivoJar) {
        try {
            //File ArqTemp = File.createTempFile("impressoarelatorio", ".pdf");
            //ArqTemp.delete();
            JasperPrint impressao = this.SetaValoresJasper(CaminhoArquivoJar);
            if (impressao != null) {
                JasperExportManager.exportReportToPdfFile(impressao, "c:/ArquivosTeste.pdf");
            }
            return  "c:/ArquivosTeste.pdf";
        } catch (JRException ex) {
            return "1";
        //} catch (IOException ex) {
        //    return "2";
        }
    }

    public JasperPrint SetaValoresJasper(String CaminhoArquivoJar) {
        try {
            Connection con = ConnectionFactory.getInstance().getConnection();
            HashMap map = new HashMap();
            String ArquivoJasper = CaminhoArquivoJar;
            
            URL urlFile = getClass().getClassLoader().getResource(ArquivoJasper);
            JasperReport jasperReport = (JasperReport) JRLoader.loadObject(urlFile);   
            JasperPrint rel = JasperFillManager.fillReport(jasperReport, map, con);
            return rel;
        } catch (JRException ex) {
            return null;
        } catch (SQLException ex) {
            return null;
        }
    }
}

Não sei se tem algum erro com o caminho do arquivo jasper

Atenciosamente
Caio Oliveira

7 Respostas

heberfa

# public String gerarRelatorio(String CaminhoArquivoJar) {

try {

//File ArqTemp = File.createTempFile(“impressoarelatorio”, “.pdf”);

//ArqTemp.delete();

JasperPrint impressao = this.SetaValoresJasper(CaminhoArquivoJar);

if (impressao != null) {

JasperExportManager.exportReportToPdfFile(impressao, “c:/ArquivosTeste.pdf”);

}

return “c:/ArquivosTeste.pdf”;

} catch (JRException ex) {

return “1”;

//} catch (IOException ex) {

// return “2”;

}

}

Dá uma olhada nesse trecho " return “c:/ArquivosTeste.pdf”; " esse caminho deve estar errado para um diretorio web.

coloca ele relativo para aumentar a protabilidade.

flw
Heber

O

Eu preciso criar esse arquivo em uma pasta qualquer dentro do meu servidor web

vc pode me ajudar a fazer isso?

Atenciosamente
Caio Oliveira

heberfa

Está acessando o servidor via ftp?

se sim fica facil, é so clicar com o btn direito no diretorio do servidor e pedir para criar um novo diretorio,

para gerar o arquivo la dentro vc deve dar permição de escirta, para isso faça “chmod 777”

e depois é so setar o caminho “nova pasta/aquivo.pdf”

inté
Heber

O

Estou usando o tomcat.
Quero que esse programa java coloquei no começo gere em minha pasta
webapps\MeuProjeto\Relatorios todos os meus arquivos PDFS.

Como fazer isso?
Como dar essa permissão?

Atenciosamente
Caio Oliveira

Fernando_Generoso_da

Caio,

Eu acredito que a forma que voce está tentando, voce nao vai conseguir.

Tente utilizar esse método:

fillReport(java.io.InputStream inputStream, java.util.Map parameters, java.sql.Connection connection)

passando o .jasper como inputStrem, lendo da seguinte forma:

getResourceAsStream(path relativo no projeto)

Fernando

O

O problema é que não sei pegar o path do meu projeto.

Poderia se mais claro como eu posso fazer esse processo

Atenciosamente Caio

L

Veja como eu uso,Com servlet…

protected void doPost(HttpServletRequest req, HttpServletResponse res)
	throws ServletException, IOException {	
		MontaRelatorioVendas u = new MontaRelatorioVendas();	
		u = (MontaRelatorioVendas) req.getSession().getAttribute("montaRelatorioVendas");
		setDados(u);
		String pathJasper = getServletContext().getRealPath(
		"/WEB-INF/classes/com/Lgweb/Tcc/Relatorios/")
		+ "/";
		 MontaRelatorioVendas params = new MontaRelatorioVendas();
		 params.setDataInicial(getDados().getDataInicial());
		 params.setDataFinal(getDados().getDataFinal());
		String path = getServletContext().getRealPath("/");
		Map parametros = new HashMap();		
		parametros.put("VendasPeriodo", pathJasper + "VendasPeriodo.jasper");
		parametros.put("titulo", "Relatorio de Vendas por Periodo");
		parametros.put("datainicial",dados.getDataInicial());
		parametros.put("datafinal",dados.getDataFinal());
		try {
			Session session = HibernateUtil.getInstance();
			Criteria  results = session.createCriteria(Pedido.class).addOrder(Order.asc("datavenda"));		 
		    ReportDataSourceImpl hibernateDataSource  = new ReportDataSourceImpl();
		  
		    hibernateDataSource.setTqueryProvider(new VendasPeriodo(dados));
		    hibernateDataSource.setCriteriaSet(results);
		    ReportSource rs = new ReportSource(hibernateDataSource);
		// Aqui ele cria o relatório
		JasperPrint impressao = JasperFillManager.fillReport(pathJasper
		+ "VendasPeriodo.jasper", parametros, rs);
		// Grava o relatório em disco em pdf
		JasperManager.printReportToPdfFile(impressao, path
		+ "/RelatorioVendas.pdf");
	
		// Redireciona para o pdf gerado
		res.sendRedirect("RelatorioVendas.pdf");
		} catch (Exception e) {
		res.getWriter().println("Erro ao gerar o relatório: " + e);
		}
		}
Criado 25 de agosto de 2008
Ultima resposta 25 de ago. de 2008
Respostas 7
Participantes 4