Mostrar pdf pronto no jsf

3 respostas
dahenz

Bom dia!

Tenho um arquivo pdf “pronto”, gerado que precisa ser mostrado em minha aplicação JSF, preciso apenas mostrar o caminho em que ele se encontra e abrí-lo…

fiz um código da seguinte forma:

HttpServletResponse res = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); String direcione ="c:/arquivo.pdf"; res.sendRedirect(direcione);

Mas nada acontece… O que estou fazendo de errado??? Obrigado

3 Respostas

cezbatistao

fala ae cara, bom dia, blz?

tenta isso aqui

public void viewArquivoAction(ActionEvent e){

	HttpServletResponse res = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();     
	res.setContentType("application/pdf");

	res.setHeader("Content-disposition",  "attachment; filename=arquivo.pdf");  

	String direcione ="c:/arquivo.pdf";
	try {

		ServletOutputStream out = res.getOutputStream();  

		File file = new File(direcione);
		out.write(fileToByte(file));
		out.flush();  
		out.close();  

	} catch (IOException ex) {   
		ex.printStackTrace();  
	} catch (Exception e1) {

		e1.printStackTrace();
	}  

	FacesContext faces = FacesContext.getCurrentInstance();
	faces.renderResponse();
	faces.responseComplete(); 
}

espero ter ajudado! :slight_smile:

dahenz

Ow cara… blz!!! esse método fileToByte ele transforma um arquivo.pdf em um array de bytes[] normal???

Obrigado

cezbatistao

putz cara, foi mal, ele faz isso msm q vc disse

esqueci desse método :stuck_out_tongue:
kkkkkkkk

segue abaixo

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

abraços

Criado 8 de outubro de 2009
Ultima resposta 8 de out. de 2009
Respostas 3
Participantes 2