Boa noite !!
Pessoal , estou com uma nova dúvida … Eu tenho uma aplicação Web e estou usando o jasper para geração de meus relatórios, eu consigo abrir com pdf , mas o problema é q ele gera um arquivo esm disco , e na verdade eu queria que fosse gerado em memória e exibido para o cliente o pdf sem ser no IE e sim direto no adobe… Se alguém souber me ajude…
Grato !!
[quote=Ivan_MV]Boa noite !!
Pessoal , estou com uma nova dúvida … Eu tenho uma aplicação Web e estou usando o jasper para geração de meus relatórios, eu consigo abrir com pdf , mas o problema é q ele gera um arquivo esm disco , e na verdade eu queria que fosse gerado em memória e exibido para o cliente o pdf sem ser no IE e sim direto no adobe… Se alguém souber me ajude…
Grato !![/quote]
Basta, ao invés de escrever em arquivo, escreva no objeto de resposta.
Exemplo:
byte[] bytes = JasperRunManager.runReportToPdf(path, parametros, conexao);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
OutputStream out = response.getOutputStream();
out.write(bytes);
out.flush();
out.close();
Valeu pela resposta…
Vou tentar fazer e depois posto se deu certo…
Abç…
Opaa…
Eu acabei de testar seu código e ele funcionou , mais ele renderizou o relatório dentro da Jsp que chamou o servlet , gostaria de saber se teria como ele renderizar direto no Acrobat ou pelo menos renderizar em um popup…
Valeu …
Eu de novo…hehehe
Eu fiz uma alteração no cóidgo e consegui fazer com que le me perguntasse se queria salvar ou abrir o arquivo…
O código ficou assim:
JREmptyDataSource jrData = new JREmptyDataSource();
Map parametros = new HashMap();
parametros.put("nome","");
parametros.put("idade","");
byte[] bytes = null;
OutputStream ops = null;
try {
bytes = JasperRunManager.runReportToPdf("C:\\Documents and Settings\\Desktop\\IvanTeste\\Rel_Teste_Web.jasper", parametros, jrData);
} catch (JRException ex) {
ex.printStackTrace();
}
if (bytes != null) {
ops = response.getOutputStream();
ops.write(bytes);
}
OutputStream out = response.getOutputStream();
out.write(bytes);
out.flush();
out.close();
Valeu…