Relatorio em Web

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

[quote]# 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”;

}

} [/quote]

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

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

vc pode me ajudar a fazer isso?

Atenciosamente
Caio Oliveira

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

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

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 problema é que não sei pegar o path do meu projeto.

Poderia se mais claro como eu posso fazer esse processo

Atenciosamente Caio

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