É o seguinte…
tenho um servlet com o metodo doGet() para gerar um arquivo pdf. Isso funciona normalmente. O problema é o seguinte. Não consigo que o usuário faça download do arquivo pra máquina dele. Como posso fazer isso?
grato,
Scott
É o seguinte…
tenho um servlet com o metodo doGet() para gerar um arquivo pdf. Isso funciona normalmente. O problema é o seguinte. Não consigo que o usuário faça download do arquivo pra máquina dele. Como posso fazer isso?
grato,
Scott
O que você tem que fazer é disponibilizar o caminho do PDF para o usuário, somente isso.
creio que não seja tão simples assim…
esse sistema está em jsf e tem phaselisteners por todos os lados…
disponibilizar o caminho não seria a melhor solução, sendo que por url, o faces-config.xml não deixa o usuário passar.
então o que fiz foi tentar fazer do seguinte modo…
[code] public void escreveArquivo(HttpServletRequest request, HttpServletResponse response){
String filePath = "D:/Pessoas.pdf";
String fileName = "Pessoas.pdf";
try{
FileInputStream fileToDownload = new FileInputStream(filePath);
ServletOutputStream out = response.getOutputStream();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment; filename="+fileName);
response.setContentLength(fileToDownload.available());
int c;
while((c=fileToDownload.read()) != -1){
out.write(c);
}
out.flush();
out.close();
fileToDownload.close();
} catch(Exception e){}
} [/code]
Ah, você tinha esquecido de falar esse pequeno detalhe. :roll:
Bem, também tinha essa maneira, apesar de não ser muito viável dependendo do seu contexto, mas assim dá certo também.
Agora o problema é outro…
quando vc copia pelo inputstream, o arquivo que é gerado não é exatamente igual ao primeiro, e o acrobat não consegue abrir…
qual serah o problema?
eu nao vejo nenhum…
Problema resolvido…
pdf gerando normal…
o problema é que eu setava no ServletContext, um requestDispatcher, e então o pdf era copiado com a página do requestDispatcher embutida. Assim, o pdf não começava com %pdf, não poderia ser lido pelo acrobat, nem teria o mesmo tamanho do arquivo original.