Oi galera!
Estou um problema numa funcionalidade. Tenho um PDF embebido numa JSP, acontece q às vezes (ainda n consegui reproduzir no meu ambiente) o utlizador ve o pdf com a informacao do utilizador, não respeitante a ele, mas sim a outro utilizador. Este PDF pode ser visualizado de duas maneiras:
1)clicando num link que faz download do PDF, (que funciona sem problemas)
2)visualidado o PDF embebido na pagina de entrada (onde o erro foi reportado)
eu julgo que o problema pode estar em cache. no primeiro caso eu consigo especificar o nome do ficheiro que contem os bytes do PDF, na servlet que gera o PDF. Eis o código:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
....
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=fichaIndividual" + filename + ".pdf");
//adiciona os bytes ao response
JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());
....
}
O que eu queria fazer era algo parecido. Em vez de attachment, tenho que utilizar a opçao inline no “Content-Disposition” para que o PDF seja embebido. Mas quando faço isso, O NOME DO FICHEIRO FICA SEMPRE O NOME DO URL-PATTERN especificado no web.xml. não há nada que eu faça que consiga substitui-lo. Eu quero que esse PDF tenha o nome que eu especificar demodo a que não seja igual.
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
response.setHeader("Content-Length", new Integer(pdfBytes.length).toString());
response.setHeader("Content-Type","application/pdf; name = " + fileName + ";");
response.setHeader("Content-Disposition","inline;filename = " + fileName + ";");
response.setContentType("application/pdf; name = " + fileName + ";");
response.setContentLength(pdfBytes.length);
OutputStream out = response.getOutputStream();
out.write(pdfBytes, 0, pdfBytes.length);
...
}
Alguem sabe como posso forçar o nome do ficheiro sugerido ao gravar o PDF demodo a que não seja o do URL da Servlet?
Muito obrigado pela ajuda.
Marco Santos