JasperReports – Exportar para HTML

21 03 2011


package br.com.jm.ss2.servlet;

 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.sql.Connection;
 import java.util.HashMap;

 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 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.JasperFillManager;
 import net.sf.jasperreports.engine.JasperPrint;
 import net.sf.jasperreports.engine.JasperReport;
 import net.sf.jasperreports.engine.export.JRHtmlExporter;
 import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
 import net.sf.jasperreports.engine.util.JRLoader;
 import net.sf.jasperreports.j2ee.servlets.ImageServlet;

 public class GeraRelatorioEmHTML extends HttpServlet {

 private final static long serialVersionUID = 1L;

 @SuppressWarnings("unchecked")
 protected void doGet(HttpServletRequest request,
 HttpServletResponse response) throws ServletException, IOException {

 String nomeDoRelatorio = request.getParameter("nomeRelatorio");
 //List lista = (List) request.getAttribute("lista");
 HashMap<String, String> parametros = (HashMap<String, String>) request
 .getAttribute("parametros");

 ServletContext context = this.getServletContext();

 String nomeDoArquivoCompilado = context.getRealPath(nomeDoRelatorio);
 File arquivo = new File(nomeDoArquivoCompilado);
 PrintWriter printWriter = response.getWriter();

 try {
 JasperReport relatorioCompilado = (JasperReport) JRLoader
 .loadObject(arquivo);

 //JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(
 //      lista);

 IRelatorios rel = new RelatoriosDao();
 Connection con = rel.getConnection();

 JasperPrint relatorioFinal = JasperFillManager.fillReport(
 relatorioCompilado, parametros, con);

 JRHtmlExporter htmlExporter = new JRHtmlExporter();

 response.setContentType("text/html");

 response.setCharacterEncoding("ISO-8859-1");

 request.getSession().setAttribute(
 ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
 relatorioFinal);
 htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT,
 relatorioFinal);
 htmlExporter.setParameter(JRExporterParameter.OUTPUT_WRITER,
 printWriter);
 htmlExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,
 "ISO-8859-1");
 /*
 * aqui é mapeado para o servlet do JasperReport, para que ao gerar o
 * html não renderize as imagens em branco, pois os espaços em branco,
 * são imagens em branco que ele adiciona!
 * Basta adicionar no web.xml a chamada ao servlet que existe no pacote:
 *
 <servlet>
 <servlet-name>ImageServlet</servlet-name>
 <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>
 </servlet>

 <servlet-mapping>
 <servlet-name>ImageServlet</servlet-name>
 <url-pattern>/image.servlet</url-pattern>
 </servlet-mapping>
 *
 */
 htmlExporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
 request.getContextPath() + "/image.servlet?image=");
 htmlExporter.exportReport();
 // printWriter.println("Passou por aqui");
 } catch (JRException e) {
 e.printStackTrace(printWriter);
 }
 }
 }

É necessário também mapear o servlet ImageServlet que vem com o JasperReports, no web.xml:

</pre>
<servlet>
<servlet-name>ImageServlet</servlet-name>
 <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>ImageServlet</servlet-name>
 <url-pattern>/image.servlet</url-pattern>
 </servlet-mapping>
<pre>

O servlet renderiza os espaços em branco através de imagens.


Ações

Informação

Uma resposta

8 02 2012
frank

Parabens,
Salvou meu dia…..

vlws

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s




Seguir

Obtenha todo post novo entregue na sua caixa de entrada.