Tenho um código que está dando erro ao vizualizar pdf. Segue abaixo:
[code]
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;
}
}[/code]
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-”.