/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.titanic.ventapasajes.datasource;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRPdfExporterParameter;
/**
* @author Jhon
*/
public class ReporteGen implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6894823156794184869L;
public void exportByFormato(JRDataSource dt,String path, String type, String outputFileName) {
try {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
ServletContext scontext = (ServletContext) context.getExternalContext().getContext();
byte[] bytes = null;
try {
JasperPrint jasperPrint = JasperFillManager.fillReport(scontext.getRealPath(path), null, dt);
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
JRExporter exporter = null ;
exporter = new JRPdfExporter();
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment;filename=" + outputFileName + ".pdf");
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, arrayOutputStream);
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print({bUI: true, bSilent: false, bShrinkToFit: true});");
exporter.exportReport();
if (exporter != null) {
try{
bytes = arrayOutputStream.toByteArray();
if (bytes != null && bytes.length > 0) {
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
bytes = arrayOutputStream.toByteArray();
response.setContentLength(bytes.length);
response.getOutputStream().write(bytes, 0, bytes.length);
}
} catch (Exception e) {
}
}
} catch (JRException e) {
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
} finally {
response.getOutputStream().flush();
response.getOutputStream().close();
context.responseComplete();
}
} catch (Exception j) {
}
}
}