Download PDF

4 respostas
rafaelrodrigues1607

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.

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

4 Respostas

mauricioadl

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

ArthurTurtle

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:

rafaelrodrigues1607

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

rafaelrodrigues1607

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

Criado 18 de janeiro de 2012
Ultima resposta 19 de jan. de 2012
Respostas 4
Participantes 3