Faz download ao invés de abrir relatório direto na pagina (JSF + IREPORT)

3 respostas
F

Boa noite galera…

Estou conseguindo gerar o relatório, porém ao invés de abrir direto na pagina (ultima versão do navegador Google Chrome), faz o download do arquivo em PDF… alguém poderia me ajudar ??? segue o código abaixo:

BEAN:

...
    public void init() throws JRException{
        JRBeanCollectionDataSource beanCollectionDataSource=new JRBeanCollectionDataSource(listOfLivro);
        jasperPrint=JasperFillManager.fillReport("C:\\report.jasper", new HashMap(),beanCollectionDataSource);
    }
    
   public void PDF(ActionEvent actionEvent) throws JRException, IOException{
       init();
       HttpServletResponse httpServletResponse=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
      httpServletResponse.addHeader("Content-disposition", "attachment; filename=report.pdf");
       ServletOutputStream servletOutputStream=httpServletResponse.getOutputStream();
       JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);      
   }
...

código que chama o relatório (xhtml):

...
 <h:commandButton value="PDF" actionListener="#{demoBean.PDF}"/>
...

3 Respostas

L

desta maneira ele usa a caixa onde vc escolhe ou abrir ou fazer o download, para abrir direto tente usar outro contentType em response.setContentType("")

HttpServletResponse response= (HttpServletResponse) fc.getExternalContext().getResponse();
		response.setContentType("application/force-download");
		response.setHeader("Content-Disposition", "attachment;filename=\"" + "SCI-Sistema de Controle Industrial.pdf" + "\";");
F
lgweb:
desta maneira ele usa a caixa onde vc escolhe ou abrir ou fazer o download, para abrir direto tente usar outro contentType em response.setContentType("")
HttpServletResponse response= (HttpServletResponse) fc.getExternalContext().getResponse();
		response.setContentType("application/force-download");
		response.setHeader("Content-Disposition", "attachment;filename=\"" + "SCI-Sistema de Controle Industrial.pdf" + "\";");

Obrigado, vou tentar assim que chegar em casa... e posto o resultado ..vlw

W

Você também pode usar o Content-Dispositon “attachment”, que é um padrão MIME e, portanto, sendo aceito por mais Browsers.

HttpServletResponse response= (HttpServletResponse) fc.getExternalContext().getResponse(); response.setContentType("application/attachment"); response.setHeader("Content-Disposition", "attachment;filename=\"" + "SCI-Sistema de Controle Industrial.pdf" + "\";");
Este post fornece informações detalhadas sobre este assunto, inclusive comentando cada linha de código: http://java-bytecode.blogspot.com.br/2012/08/como-exibir-um-pdf-numa-pagina-jsf.html

[]'s

Criado 17 de novembro de 2011
Ultima resposta 23 de ago. de 2012
Respostas 3
Participantes 3