La Web del Programador: Comunidad de Programadores
 
    Pregunta:  48263 - COMO MANEJAR EL IREPORTS DESDE SERVLETS
Autor:  Francisco Hernandez
Estoy diseƱando una aplicacion con Servlets y JSP, donde quiero que desde un servlet pueda traer(jalar) un reporte creado en ireports.

Alguien me pudiera ayudar porfavor!!!

  Respuesta:  MARVIN ANTONIO CALLEJAS
<%@page import="com.lowagie.text.*"%>
<%@page import="com.lowagie.text.pdf.*"%>

<%@page import="it.businesslogic.ireport.connection.JRXMLDataSource"%>
<%@page import="net.sf.jasperreports.engine.export.JRPdfExporter"%>
<%@page import="net.sf.jasperreports.engine.*"%>
<%@page import="java.awt.*"%>
<%@page import="java.awt.font.*"%>
<%@page import="java.util.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.io.*"%>
<%@page import="java.text.*"%>
<%@page import="javax.servlet.*"%>
<%@page import="javax.servlet.http.*"%>
<%@page import="com.codecharge.db.*"%>
<%@page import="com.codecharge.util.*"%>

<%

Map param=new HashMap();

Connection conec=DriverManager.getConnection("jdbc:jtds:sqlserver://svrsql00:1433/SIAP","usuario","password");


byte[] reporteByte=null;

String imagen=application.getRealPath("/jsp/reportes/imagenes/escudo_pequeno.jpg");

//Fijando parametros del reporte
param.put("grupo",pGrupo);
param.put("estructOrg",estructOrg);
param.put("fecha",fInv);
param.put("fechaHora",fRecep);
param.put("rutaImg",imagen);
param.put("name",name);

File reporte=new File(application.getRealPath("/jsp/reportes/invitacion.jasper"));
String archJasper=reporte.getAbsolutePath();

try
{
JasperPrint impresion=JasperFillManager.fillReport(archJasper,param,conec);
reporteByte=JasperRunManager.runReportToPdf(archJasper,param,conec);

JRExporter exporter=new JRPdfExporter();

ByteArrayOutputStream reportePDF=new ByteArrayOutputStream();

exporter.setParameter(JRExporterParameter.JASPER_PRINT,impresion);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,reportePDF);

exporter.exportReport();

response.setContentType("application/pdf");
response.setContentLength(reporteByte.length);
response.getOutputStream().write(reporteByte);
response.getOutputStream().flush();
response.getOutputStream().close();
}
catch(JRException e)
{
e.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
conec.close();
%>