Olá Galera, e aí, tudo bem com todo mundo?
Como vocês estão?!
Estou com um problema aqui e gostaria da ajuda de vocês para corrigir o meu problema.
Eu preciso ler um arquivo PDF armazenado em disco (por exemplo, C:\Documentos\PDF) e exibir o conteúdo par ao usuário no browser. Quando ele entrar na minha página, eu deverei apresentar o documento pdf solicitado através de um parâmetro passado na URL.
Criei a minha JSP de lista, onde esta JSP chama uma outra passando o parâmetro na URL. Como eu disse uma JSP é “pesquisa.jsp” e a responsável por apresentar o arquivo em PDF é “abreArquivoPDF.jsp”.
Na minha página pesquisa.jsp coloquei a seguinte TAG:
<embed src="./abreArquivoPDF.jsp?idFuncionario=0001" width="450" height="450" />
E na minha página abreArquivoPDF.jsp coloquei o seguinte comando java:
if ( (request.getParameter("idFuncionario") != null) && ( ((String)request.getParameter("idFuncionario")).trim().length() > 0 ) ) {
String diretorio = "C:\\Documentos\\PDF";
String idFuncionario = ( (String)request.getParameter("idFuncionario") );
if (new File(diretorio).exists()) {
if (new File(diretorio).exists()) {
diretorio += ( "\\" + idFuncionario + ".PDF" );
if (new File(diretorio).exists()) {
File arquivoFuncionario = new File(diretorio);
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=\"" + arquivoFuncionario.getName() + "\"");
String name = arquivoFuncionario.getName().substring(arquivoFuncionario.getName().lastIndexOf("/") + 1,arquivoFuncionario.getName().length());
InputStream in = new FileInputStream(arquivoFuncionario);
ServletOutputStream outs = response.getOutputStream();
int bit = 256;
int i = 0;
try {
while ((bit) >= 0) {
bit = in.read();
outs.write(bit);
}
} catch (IOException ioe) {
ioe.printStackTrace(System.out);
}
outs.flush();
outs.close();
in.close();
}
}
}
}
Além de a página não estar chamando a página de abertura do PDF através do comando embed, acho que pode ser por não ter especificado um "tipo" de arquivo, sei lá. Tipo, eu não teria que jogar o nome do conteúdo lá?!
E também o que acontece, quando eu chamo direto a página abreArquivoPDF.jsp passando um parâmetro, é que o arquivo é lido e tal, mas ele é apresentado para o usuário na forma de "Download", onde o usuário pode escolher entre salvar ou abrir.
Não é bem isso o que eu quero, o que eu quero é ler um arquivo do disco, armazenar em buffer e disponibilizar o conteúdo dele na tela para o usuário.
Alguém saberia me dizer onde estou errando, o que eu devo corrigir para resolver este meu problema?
Obrigado aí galera. Obrigado mesmo!
Atenciosamente,
Júnior