Visualizar relatório PDF sem efetuar download?

6 respostas
dahenz

Boa tarde!

Existe uma forma em JSF que permita a geração de relatório através do IReport em PDF sem que o usuário tenha que aceitar um download???

Como faria isso???

Obrigado

6 Respostas

thiagocg

dahenz, vc pode passar o relatorio direto para uma nova janela para visualização, mas para isso é necessário ter um plugin para visualização de pdf’s.
Sera q isso resolve seu problema?

[]'s

furutani

dahenz:
Boa tarde!

Existe uma forma em JSF que permita a geração de relatório através do IReport em PDF sem que o usuário tenha que aceitar um download???

Como faria isso???

Obrigado


A única forma seria o cara ter o adobe acrobat plugin configurado no browser dele para visualizar os PDF dentro dele.
Você pode tentar forçar esse tipo de vizualização com o código abaixo, mas não é garantido.

setHeader("Content-Disposition","inline; filename=pdfFile.pdf");
dahenz

Valeu furutani!!! Sua dica funcionou!! hehe te devo mais uma cerveja… :slight_smile:

furutani

Opa vou cobrar hein! :smiley:

dahenz

hehe… tá barato o conhecimento hein!! hehe que nada cara… obrigado mesmo… você sempre tem me ajudado… uma cerveja é pouco…

dahenz

Alguém sabe como fazer aparecer esse relatório com um subreport????

Estou utilizando o seguinte código:

public void gerarRelatorio() throws ParseException, SQLException, ClassNotFoundException, JRException{
		
		if (isValidFields()){						
									
			String data = MySQLDAO.getDataUtil(getDataVigencia());
			
			setListaResumoMedia(getMediaGeralEncomendasDAO().gerarResumoMediaGeralEncomendas(getRegioesSelecionadas(), 
					 																		 getSupervisoresSelecionados(), 
					 																		 getCobrancasSelecionadas(), 
					 																		 getImoveisSelecionados(), 
					 																		 data));						

			setListaMedia(getMediaGeralEncomendasDAO().gerarConsultaMediaGeralEncomendas(getRegioesSelecionadas(), 
																				   		 getSupervisoresSelecionados(), 
																				   		 getCobrancasSelecionadas(), 
																				   		 getImoveisSelecionados(), 
																				   		 data));						
			
		}
		
		JRDataSource jrDS = new JRBeanCollectionDataSource(getListaMedia());
				
		try {
			
			if (!getListaMedia().isEmpty()){
							
				String pathJasper = FacesUtil.getCurrentDirectory()+"/WEB-INF/classes/br/com/vieweb";		
				
				String reportFileName = pathJasper + File.separator + "ComparativoMediaEncomendas.jasper";								
								
				String data_aa = getMediaGeralEncomendasDAO().getAnoAnterior(MySQLDAO.formata_ddMMyyyy(getDataVigencia()));
				String data_at = MySQLDAO.formata_ddMMyyyy(getDataVigencia());
				String data_ma = getMediaGeralEncomendasDAO().getMesAnterior(MySQLDAO.formata_ddMMyyyy(getDataVigencia()));
								
				String regiao_footer = "TOTAL:";
				
				if (!getRegioesSelecionadas().isEmpty()){
					
					regiao_footer = "TOTAL PARA REGIÃO(ÕES):";
					
				} else {
					
					if (!getCobrancasSelecionadas().isEmpty()){
						
						regiao_footer = "TOTAL PARA COBRANÇA(S):";
						
					} else {
						
						if (!getImoveisSelecionados().isEmpty()){
							
							regiao_footer = "TOTAL PARA IMÓVEL(IS):";
							
						} else {
							
							if (!getSupervisoresSelecionados().isEmpty()){
								
								regiao_footer = "TOTAL PARA SUPERVISOR(ES):";
								
							}							
						}						
					}				
				}	
				
				String target = null;
				
				if (!getRegioesSelecionadas().isEmpty()){
					
					target = getDescricaoRegioes();
					
				} else {
					
					if (!getSupervisoresSelecionados().isEmpty()){
					
						target = "RELATÓRIO EMITIDO POR SUPERVISOR";
						
					} else {
						
						if (!getCobrancasSelecionadas().isEmpty()){
							
							target = "RELATÓRIO EMITIDO POR COBRANÇA";
							
						} else {
						
							if (!getImoveisSelecionados().isEmpty()){
								
								target ="RELATÓRIO EMITIDO POR IMÓVEL";
								
							}						
						}						
					}										
				}
				
				Map<String, String> parametros = new HashMap<String, String>();				
				parametros.put("data_aa", data_aa);
				parametros.put("data_at", data_at);
				parametros.put("data_ma", data_ma);
				parametros.put("regiao_footer", regiao_footer);
				parametros.put("regiao", target);
				parametros.put("usuario", MySQLDAO.getUsuarioLogado());	
				parametros.put("PathResumo", pathJasper + File.separator + "ResumoComparativoMediaEncomendas.jasper");

				JasperReport report = (JasperReport) JRLoader.loadObject(reportFileName);
				
				JasperPrint print = JasperFillManager.fillReport(report, parametros, jrDS);
				
				byte[] bytes = JasperExportManager.exportReportToPdf(print);

				FacesContext facesContext = FacesContext.getCurrentInstance();
				HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
												 
				response.setContentType("application/pdf");
				response.setContentLength(bytes.length);
				response.setHeader("Content-Disposition","inline; filename=report.pdf"); 
				
				ServletOutputStream ouputStream = response.getOutputStream(); 
				
				ouputStream.write(bytes, 0, bytes.length); 
				ouputStream.flush(); 
				ouputStream.close(); 
				
				facesContext.responseComplete();
								
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
	}

Possuo dois jrDS, um para o subreport e outro para o relatório principal, mas quando pinta na tela, pinta apenas o principal.....

Alguém me ajuda.....

Obrigado

Criado 2 de julho de 2009
Ultima resposta 4 de ago. de 2009
Respostas 6
Participantes 3