Pessoal,
estou desenvolvendo um sistema web com struts e preciso fazer uma interface para gerar relatórios em pdf.
Usei o ireport para montar a interface, quando eu compilo o relatório no Ireport, ele funciona normalmente exibindo o pdf no formato correto.
Mas qdo eu migro os arquivos para a pasta da minha aplicação, gero o .war e tento rodar no navegador ( FireFox ), ele abre o pdf mas não aparece nada nele, o pdf está totalmente em branco.
Segue abaixo minhas Actions:
public class RelatorioHelper {
public byte[] geraRelatorio(String pathArquivoJasper, Pedido pedido) throws IOException, JRException{
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(pedido.getItemPedido());
Map<String,String> parametros = new HashMap<String,String>();
parametros.put("Vendedor", pedido.getVendedor().getNome());
byte[] bytes = null;
try{
bytes = JasperRunManager.runReportToPdf(pathArquivoJasper,parametros ,dataSource);
}catch(JRException e){
}
return bytes;
}
private void configuraResponse(HttpServletResponse response, String fileName, int tamanho){
fileName = fileName.substring(0, fileName.indexOf(".jasper"));
response.setBufferSize(tamanho);
response.setContentLength(tamanho);
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
response.addHeader("Content-disposition", "attachment; filename=\"" + fileName +".pdf\"");
}
public void enviaParaBrowser(HttpServletResponse response, byte[] bytesRelatorio) throws IOException{
if(bytesRelatorio != null && bytesRelatorio.length > 0){
configuraResponse(response, "RelatorioPedidos.jasper", bytesRelatorio.length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(bytesRelatorio, 0, bytesRelatorio.length);
outputStream.flush();
outputStream.close();
}
}
}
public class GerarPedidosAction extends Action {
public ActionForward execute(ActionMapping mapping , ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception{
String idPedido = request.getParameter("idPedido");
String idVendedor = request.getParameter("idVendedor");
String idCliente = request.getParameter("idCliente");
int idFormaPagamento = Integer.parseInt(request.getParameter("idFormaPagamento"));
RelatorioHelper helper = new RelatorioHelper();
ServletContext context = (ServletContext)request.getSession().getServletContext();
String nomeArquivoJasper = context.getRealPath("/reports/RelatorioPedidos.jasper");
ServicePedido sp = new ServicePedido();
Pedido pedido = sp.selecionar(idPedido);
byte[] relatorioBytes = helper.geraRelatorio(nomeArquivoJasper, pedido);
helper.enviaParaBrowser(response, relatorioBytes);
return (mapping.findForward("pedido"));
}
}
Alguém saberia me ajudar??
Obrigado.
Abraços