Erro ao visualizar pdf

0 respostas
D

Tenho um código que está dando erro ao vizualizar pdf. Segue abaixo:

public class Documento extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	public void processRequest(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		
		DocumentoArquivo documentoArquivo = new DocumentoArquivo();
		
		AlterarTratarPecaAction alterarPeca = new AlterarTratarPecaAction();
		
		ConsultarTratarPecaForm consultarTratarPecaForm = (ConsultarTratarPecaForm) request.getSession().getAttribute("ConsultarTratarPeca");

		documentoArquivo = alterarPeca.PegaDocumentoArquivo(consultarTratarPecaForm.getListatratarpeca(), Integer.parseInt(request.getParameter("idxTratarPeca")));
		
		response.setHeader("Cache-Control", "max-age=10000");
 		response.setDateHeader("Expires", 10000);
		response.setContentType("application/pdf");
		
		//String arq = (String)request.getParameter("arquivo");
		InputStream in = null;
		try {
			//in = byteToInputStream(fileToByte("/teste/"+arq));
			in = byteToInputStream(documentoArquivo.getArq()); //Pega o byte do banco
		} catch (Exception e) {
			e.printStackTrace();
		}
		//BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
		ServletOutputStream out = response.getOutputStream();
		byte by[] = new byte[32768];
		int index = in.read(by, 0, 32768);
		
		while (index != -1) {
			out.write(by, 0, index);
			index = in.read(by, 0, 32768);
		}
		out.flush();
	
}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		processRequest(request, response);
		
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		processRequest(request, response);

	}
	
	public static byte[] fileToByte(String arquivo)throws Exception{
		File file = new File(arquivo); 
		FileInputStream fis = new FileInputStream(file);
		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();
	}	
	public static InputStream byteToInputStream(byte[] bytes)throws Exception{
		ByteArrayInputStream bais = new ByteArrayInputStream (bytes);
		return bais;
	}
	
}

OBS: Quando eu seto um arquivo pdf diretamente do hd, ele abre normalmente, porém quando tento abrir pelo banco ele gera um erro com a seguinte mensagem: "o arquivo não começa com %PDF-".

Criado 21 de maio de 2007
Respostas 0
Participantes 1