Foros del Web » Programación para mayores de 30 ;) » Java »

Generacion de Reporte (JasperReport-0.6.7)

Estas en el tema de Generacion de Reporte (JasperReport-0.6.7) en el foro de Java en Foros del Web. Hola a todos en el foro. Anteriormente habia generado reportes desde jsp con jasperreport. Compila bien (el jrxml) desde el servlet y se ejecuta el ...
  #1 (permalink)  
Antiguo 08/08/2005, 10:10
 
Fecha de Ingreso: agosto-2005
Mensajes: 5
Antigüedad: 18 años, 8 meses
Puntos: 0
Generacion de Reporte (JasperReport-0.6.7)

Hola a todos en el foro.
Anteriormente habia generado reportes desde jsp con jasperreport. Compila bien (el jrxml) desde el servlet y se ejecuta el pdf, pero no me muestra nada, se muetra el pdf en blanco. Y desde el iReport se muestra el reporte correctamente. Los jar que utilizo para crear el reporte desde iReport son los mismos, excepto *commons-digester.jar y *commons-collections.jar.

Ahora tengo iReport0.5.0 y los jar;
jasperreport-0.6.7.jar,
commons-beanutils.jar,
*commons-digester-1.7.jar,
*commons-collections-3.1.jar,
itext-1.02b.jar
y otros como poi..,xerces.. en WEB-INF\lib

Yo uso Tomcat-5.5.7, j2se 5


El codigo del servlet es el siguiente:

package com.ivss.sappie.ctrl.reportes;

import java.io.File;
import java.io.IOException;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRPdfExporterPa rameter;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterP arameter;
import net.sf.jasperreports.engine.data.JRXmlDataSource;
import net.sf.jasperreports.engine.util.JRLoader;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.ivss.lib.sql.ConectarDB;

/**
* @ version 1.0
* @ author José Pacheco
*/
public class ReportServlet extends HttpServlet implements Servlet{

private static final Log log = LogFactory.getLog(ReportServlet.class);

public final static String fileName = "ReporteRechazado";

/**
* @see Inicializa el servlet
*/
public void init() throws ServletException {

super.init();

ServletContext context = getServletContext();

//Setea la ruta de las classes para compilar
System.setProperty(
"jasper.reports.compile.class.path",
context.getRealPath("/WEB-INF/lib/jasperreports-0.6.7.jar")
+ System.getProperty("path.separator")
+ context.getRealPath("/WEB-INF/classes/"));

//Especifica la carpeta donde esta el reporte compilado
System.setProperty(
"jasper.reports.compile.temp",
context.getRealPath("/reportes/xml/"));

log.info("Inicializando ReportServlet");
}

public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {

doPost(request, response);
}

public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{

log.info("Inicia Generacion de Reporte");

Connection conn = null;

Map parameters = new HashMap();

ConectarDB connection = new ConectarDB("recursos/sappie");

try {
//Obtiene la conexion a la base de datos
conn = connection.getConnection();


String reportType = "PDF"; //request.getParameter("reportType");
ServletContext context = getServletContext();

JasperReport jasperReport = getCompiledReport();

parameters.put("id_ciudadano","1555555");

if(reportType.indexOf("HTML") >= 0){

//Crea el Objeto JasperPrint usando fillReport()
JasperPrint jasperPrint =
JasperFillManager.fillReport(jasperReport, parameters, conn);

//Llama al metodo para generar el reporte PDF
generateHtmlOutput(jasperPrint, request, response);
}else{
//Llama al metodo para generar el reporte PDF
generatePDFOutput(response, parameters, jasperReport,conn);
}

}catch(Exception e){

e.printStackTrace(System.err);

request.setAttribute("exception", e);

getServletContext().getRequestDispatcher(
"/comunes/exceptionSAPPIE.jsp").forward(
request,
response);
}finally{
if(conn != null)
try{
conn.close();
}catch(SQLException e){
e.printStackTrace(System.err);
}
if(connection.con != null)
try{
connection.closeConnection();
}catch(Exception e){
e.printStackTrace(System.err);
}
}
}

private void generateHtmlOutput(
JasperPrint jasperPrint,
HttpServletRequest request,
HttpServletResponse response) throws IOException, JRException {

Map imagesMap = new HashMap();
request.getSession().setAttribute("IMAGES_MAP", imagesMap);
JRHtmlExporter exporter = new JRHtmlExporter();

exporter.setParameter(JRExporterParameter.JASPER_P RINT, jasperPrint);

exporter.setParameter(
JRExporterParameter.OUTPUT_WRITER,
response.getWriter());

exporter.setParameter(JRHtmlExporterParameter.IMAG ES_MAP, imagesMap);

exporter.setParameter(
JRHtmlExporterParameter.IMAGES_URI,
"image?image=");

exporter.exportReport();
}

private void generatePDFOutput(
HttpServletResponse response,
Map parameters,
JasperReport jasperReport,Connection conn) throws JRException,SQLException,IOException {

byte[] bytes = null;

bytes =
JasperRunManager.runReportToPdf(
jasperReport,
parameters,
conn);

log.info("Size del byte [ " + bytes.length + " ] --> Significa la cantidad de byte del reporte");

response.setContentType("application/pdf");

response.setHeader("Content-Disposition","inline; filename=ReporteRechazado.pdf");

response.setContentLength(bytes.length);

ServletOutputStream ouputStream = response.getOutputStream();

ouputStream.write(bytes, 0, bytes.length); //ouputStream.write(bytes);

ouputStream.flush();

ouputStream.close();

log.info("Reporte Generado");
}

private JasperReport getCompiledReport()
throws JRException{

File reportFile = new File(getServletContext().getRealPath("/reportes/xml/" + fileName + ".jasper"));

log.info("Archivo " + reportFile.toString() + " Seteado en Objeto File");

//Si el archivo compilado no es encontrado, entonces
//se compila la plantilla XML
if (!reportFile.exists()) {
JasperCompileManager.compileReportToFile(
getServletContext().getRealPath(
"/reportes/xml/" + fileName + ".jrxml"));
}

JasperReport jasperReport =
(JasperReport) JRLoader.loadObject(reportFile.getPath());

log.info("Archivo Compilado");

return jasperReport;
}

}

gracias a quien pueda ayudarme
  #2 (permalink)  
Antiguo 12/08/2005, 12:37
 
Fecha de Ingreso: agosto-2005
Mensajes: 5
Antigüedad: 18 años, 8 meses
Puntos: 0
Resuelto

Hola a todos, fue una equivocacion. Tenia diferenctes versiones de jasperreport tanto el lib de iReport como el lib de la aplicacion de Tomcat. Finalmente me quede trabajando con iReport-0.4.1 que trae jasperreport-0.6.4, y funciona bien.
Disculpen la torpeza
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:55.