Relatorio na WEB

1 resposta
alanrocha77

Olá pessoal, gente to ficando louco já, estou tentando fazer um relatorio para web usando
hibernate/JPA + o filho da mãe nao roda…

Estou pra desistir já, ja procurei na net + nao achei nenhum exemplo concreto
que pudesse me ajudar.

Segue o codigo do metodo:

FacesContext context = FacesContext.getCurrentInstance();
			HttpServletResponse response = (HttpServletResponse) context
					.getExternalContext().getResponse();
			
			InputStream reportStream = context.getExternalContext()
			.getResourceAsStream("/reports/RFichaHospede.jasper");
			
			
			JREmptyDataSource ED = new JREmptyDataSource();
			JRBeanCollectionDataSource BCD = new JRBeanCollectionDataSource(hospedeDao.rFichaHospede());
			
			
			Map<String, Object> ht = new HashMap<String, Object >();
			ht.put("nome", BCD);
			
			
			JasperReport relatorio = (JasperReport) JRLoader.loadObject(reportStream);
			JasperPrint impressao = new JasperPrint();
			impressao = JasperFillManager.fillReport(relatorio, ht, ED);
			
			
			byte[] buffer = JasperExportManager.exportReportToPdf(impressao);
			if (buffer != null) {
				ServletOutputStream outputStream = response.getOutputStream();
				outputStream.write(buffer, 0, buffer.length);
				outputStream.flush();
				outputStream.close();
			}

O erro dia q ele nao consegue achar o arquivo RFichaHospede.jasper, já mudei o caminho de todo o tipo
e nada

Alguem poderia me ajudar ???
Desde já agradeço!!!

1 Resposta

D

Eu não sei se ajuda, mas vc consegue gerar uma pdf deste relatório??
Com arquivos pdf eu faço assim:
Primeiro um metódo que que transforma o arquivo pdf em array:

public static byte[] fileToByte(File arquivo) throws Exception {
        FileInputStream fis = new FileInputStream(arquivo);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[8192];
        int bytesRead = 0;
        while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
            baos.write(buffer, 0, bytesRead);
        }
        return baos.toByteArray();
    }

Depois o metódo que escreve escreve no response e exibi o pdf:

public void exibir(){
    
      
     try {
         File arq=new File(s);
         byte[] b = fileToByte("Caminho de seu relatório .pdf");

      HttpServletResponse response =   (HttpServletResponse)  FacesContext.getCurrentInstance().getExternalContext().getResponse();
      response.setContentType("application/pdf");
      response.setHeader("Content-disposition", "inline; filename=\"" + arq.getName() + ".pdf\"");
      response.getOutputStream().write(b);
      response.getCharacterEncoding();
      FacesContext.getCurrentInstance().responseComplete();

} catch (Exception e) {
            e.printStackTrace();
        }

Eu fiz este código praticamente com os tópicos que encontrei aqui no forum a respeito.
No site http://www.jboleto.org/download_index.php tem download do projeto que eu fiz, mas
ele usa geração de boletas ao invés de relatórios, entretanto pode ajudar se vc seguir o caminho que te mostrei.

Criado 24 de março de 2009
Ultima resposta 24 de mar. de 2009
Respostas 1
Participantes 2