Caros colegas,
Estou com um problema bem chato usando Jasper (feito no iReport): fiz um relatório com texto estático, sem banco de dados, parâmetros etc. Chamando por dentro do iReport (build/execute) o texto é exibido, tudo funciona ok.
O problema é quando chamo de dentro de um servlet numa WebApp: o pdf gerado aparece simplesmente em branco. Sem nada. Nenhuma exceção é lançada, apenas o pdf em branco é exibido, sem o meu texto estático (sei que alguns vão querer saber porque um texto estático, mas acredito que fuja do escopo do post).
Abaixo meu código:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
try{
String caminhoReport = getServletContext().getRealPath("WEB-INF/classes/report/teste.jasper");
response.setContentType("application/pdf");
ServletOutputStream responseStream = response.getOutputStream();
HashMap<Object, Object> map = new HashMap<Object, Object>();
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(new ArrayList());
JasperPrint print = JasperFillManager.fillReport(caminhoReport,map,ds);
byte[] byteStream =JasperExportManager.exportReportToPdf(print);
responseStream.write(byteStream, 0, byteStream.length);
responseStream.flush();
responseStream.close();
}catch(Exception e){
e.printStackTrace();
}
}
Considerações:
- As libs do jasper/iReport estão dentro dentro da minha WebApp (iReport.jar; iText-1.3.1.jar; jasperreports-3.0.0.jar)
- A versão do iReport que uso é a 3.0.0
- App server: JBoss 4.2.3.GA
Obrigado a todos
Sávio Barros