Boa Tarde Galera!
Estou usando pela primeira vez vraptor x iReport..mas estou tendo problemas.
Depois de executar abre-se uma janela para escolher o programa.Porém o mesmo se encontra com o nome relatorio.criar.logic e nao com o nome certo teste.pdf e ainda abre em branco.
Se alguem ´puder me ajudar agradeço muito!!!
packagebr.gov.inpi.srv.controle;importjava.io.IOException;importjava.util.List;importjavax.servlet.ServletContext;importjavax.servlet.http.HttpServletResponse;importnet.sf.jasperreports.engine.JasperExportManager;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource;importorg.vraptor.annotations.Component;importorg.vraptor.annotations.Out;importorg.vraptor.annotations.Viewless;importbr.gov.inpi.srv.model.Veiculo;importbr.gov.inpi.srv.repository.RepositoryFactory;importbr.gov.inpi.srv.repository.VeiculoRepository;@Component()publicclassRelatorioLogic{privateVeiculoRepositoryveiculoRepostorio=RepositoryFactory.getInstance().getVeiculoRepository();@OutprivateList<Veiculo>listaDeVeiculos;@Viewlesspublicvoidcriar(finalServletContextcontext,HttpServletResponseresponse,Veiculoveiculo)throwsIOException{try{listaDeVeiculos=(List<Veiculo>)veiculoRepostorio.obterTodos();// Localiza o contexto da pasta onde esta localizado o .jasperStringpathJasper=context.getRealPath("WEB-INF/report/")+"/";// Recebe a lista populadaJRBeanCollectionDataSourceds=newJRBeanCollectionDataSource(listaDeVeiculos);// pega o ds + a conexao para ir ate o ireport para listar dentro do relatorioJasperPrintimpressao=JasperFillManager.fillReport(pathJasper+"/tese.jasper",null,ds);response.setContentType("tese/pdf");JasperExportManager.exportReportToPdfFile(impressao,pathJasper+"/tese.pdf");//response.sendRedirect("/srv/veiculo.listarTodos.logic"); }catch(Exceptione){e.getMessage();}}}
privateVeiculoRepositoryveiculoRepostorio=RepositoryFactory.getInstance().getVeiculoRepository();@OutprivateList<Veiculo>listaDeVeiculos;@Viewlesspublicvoidcriar(finalServletContextcontext,HttpServletResponseresponse,Veiculoveiculo)throwsIOException{try{listaDeVeiculos=(List<Veiculo>)veiculoRepostorio.obterTodos();// Localiza o contexto da pasta onde esta localizado o .jasperStringpathJasper=context.getRealPath("WEB-INF/report/")+"/";// Recebe a lista populadaJRBeanCollectionDataSourceds=newJRBeanCollectionDataSource(listaDeVeiculos);// pega o ds + a conexao para ir ate o ireport para listar dentro do relatorioJasperPrintimpressao=JasperFillManager.fillReport(pathJasper+"/tese.jasper",null,ds);//response.setContentType("tese/pdf");response.setContentType("application/pdf");response.setHeader("Content-disposition","attachment; filename=tese.pdf");byte[]bytes=JasperExportManager.exportReportToPdf(impressao);byte[]arquivo=bytes;StringnomeDoArquivo="tese.pdf";response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition","attachment; filename=".concat(nomeDoArquivo));response.setContentLength(arquivo.length);ServletOutputStreamsos=response.getOutputStream();sos.write(arquivo,0,arquivo.length);sos.flush();sos.close();}catch(Exceptione){e.getMessage();}}
}
monike
Bom dia galera!
Como faço para exibir meu relatorio em HTML?
Se alguém puder me ajudar agradeço.
Da mesma forma, basta você alterar o content-type de application/pdf para text/html.
monike
fiz assim,mas quando abre em HTML nao mostra nada.Acredito que seja porque essa parte do código está comentada //sos.write(arquivo, 0,arquivo.length);
Eu nao consegui jogar pra byte = JasperExportManager.exportReportToHtmlFile(impressao,nomeArqHTML); como fiz anteriormente para PDF.
@Component()@InterceptedBy(AutorizadorInterceptor.class)publicclassRelatorioLogic{privateVeiculoRepositoryveiculoRepostorio=RepositoryFactory.getInstance().getVeiculoRepository();@OutprivateList<Veiculo>listaDeVeiculos;@Viewlesspublicvoidcriar(finalServletContextcontext,HttpServletResponseresponse,Veiculoveiculo)throwsIOException{try{listaDeVeiculos=(List<Veiculo>)veiculoRepostorio.obterTodos();// Localiza o contexto da pasta onde esta localizado o .jasperStringpathJasper=context.getRealPath("WEB-INF/report/")+"/";// Recebe a lista populadaJRBeanCollectionDataSourceds=newJRBeanCollectionDataSource(listaDeVeiculos);// pega o ds + a conexao para ir ate o ireport para listar dentro do relatorioJasperPrintimpressao=JasperFillManager.fillReport(pathJasper+"/tese.jasper",null,ds);// byte[] bytes = JasperExportManager.exportReportToPdf(impressao); // byte[] arquivo = bytes; // //HTMLStringnomeArqHTML="tese.html";response.setContentType("tese/html");JasperExportManager.exportReportToHtmlFile(impressao,nomeArqHTML);//response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition","attachment; filename=".concat(nomeArqHTML));// response.setContentLength(arquivo.length);ServletOutputStreamsos=response.getOutputStream();// sos.write(arquivo, 0,arquivo.length);sos.flush();sos.close();}catch(Exceptione){e.getMessage();}}
G
garcia-jj
Altere o content type para text/html conforme
response.setContentType(“text/html”);
E descomente a linha 42, pois é lá que os bytes são gravados.
monike
Mas ai que está o problema, eu não consigo jogar ele pra byte só quando é para PDF
byte[] bytes = JasperExportManager.exportReportToPdf(impressao); eu só consigo fazer assim,direto
JasperExportManager.exportReportToHtmlFile(impressao,"c:\\teste.html");
Ele grava o relatorio no path c:\\teste.html,mas assim que ele abre, abre no navegador todo em branco..pq está montando a url errada: