Download PDF

Pessoal já tentei de todas as formas, mas não deu certo. Quando vou gerar o meu pdf ele escreve no navegador um bocado de caracteres especiais, parece que ele tenta abrir o arquivo direto no navegador.

[code]
byte[] arquivoBytes = ArquivoUtil.getBytesFromFile(file);

		HttpServletResponse response = (HttpServletResponse)extCtx.getResponse();
		response.setContentType("application/pdf");
		//response.setContentType("application/octet-stream");
		//response.setContentType("application/download");
	    response.addHeader("Content-disposition", "inline; filename=\"" +nomeArquivo+".pdf");

//response.addHeader(“Content-disposition”, “attachment; filename=”" + nomeArquivo + “”");

			ServletOutputStream os = response.getOutputStream();
			os.write(arquivoBytes);
			os.flush();
			os.close();
			facesContext.responseComplete();[/code]

vou fazer uma pergunta idiota, nao leve a mal.
Vc tem leitor de pdf na maquina neh!?

Eu uso assim:


FacesContext facesContext = FacesContext.getCurrentInstance();  
 
		HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();  
		OutputStream os = null;  
		File fileGerado= new File("seuArquivoPdf");
		
		byte[] arquivoGerado= recuperaFileEmByte(fileGerado);
		try {  
			os = response.getOutputStream();  
			response.setContentType("application/pdf");  
			response.setContentLength(arquivoGerado.length);  
			response.setHeader("Content-disposition","attachment; filename="+fileGerado.getName());
			os.write(arquivoGerado); 
		} catch (Exception e) {  
			e.printStackTrace();  
		} finally{  
			try {  
				if(os != null){  
					os.flush();  
					os.close();  
				}  
				facesContext.responseComplete();  
			} catch (IOException e) {  
				e.printStackTrace();  
			}  
		}  
	}
	
	private byte[] recuperaFileEmByte(File inFile) {  
		InputStream is = null;  
		byte[] buffer = null;
		try {  
			is = new FileInputStream(inFile);  
			buffer = new byte[is.available()];  
			is.read(buffer);  
			is.close();  
		} catch (FileNotFoundException e) {  
			e.printStackTrace();  
		} catch (IOException e) {  
			e.printStackTrace();  
		}  
		return buffer;  
	}

testa la :wink:

ArthurTurtle, fiz da forma que me falou. Mas continua aparecendo os caracteres especiais.

Tenho leitor de pdf instalado mauricioadl. Inclusive os pdf estão gerando normalmente no diretório.