Prezados,
Não conheço nada de jasper e ireport, sou novo na empresa e ja me deram essa bucha…por favor me ajudem…
Tem um relatório de uma empresa que quando solicito ele, por ter mais informações de as outras empresas ele cria uma pagina a mais e estoura esse erro:Infinite loop creating new page due to page header overflow.
li em alguns foruns que é só aumentar a band só que por não conhecer de jasper não tenho a minima idéia do que seja isso, por favor me ajudem…estou postando o codigo:
[code]
//impressão
JasperPrint impressao = JasperFillManager.fillReport(pathJasper,parametros, new JRResultSetDataSource(rs));
//formato do relatório
String tipoGeracao =tipoRelatorio(2);
//parametros para criação do relatório
RelatorioByQueryProperties parametrosRelatorios = new RelatorioByQueryProperties();
parametrosRelatorios.setNomeRelatorio("");
parametrosRelatorios.setTipoGeracao(tipoGeracao);
parametrosRelatorios.setCaminhoEstruturaRelatorio(pathJasper);
ParametrosRelatorios parametrosRelatorio = parametrosRelatorios;
//cria relatório
byte[] bytes = GeradorRelatorios.geraRelatorioPdfHtmlXlsCsv(impressao, parametrosRelatorio);
response.setContentType(GeradorRelatorios.obterContentTypeSaida(parametrosRelatorios.getTipoGeracao()));
//response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();[/code]
/*
* Created on 11/03/2005
*
* Projeto Gerador de Relatórios
*/
package br.com.odontoprev.implantacao.util;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.export.JRXmlExporter;
import net.sf.jasperreports.engine.export.JRXmlExporterParameter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import org.apache.log4j.Logger;
import br.com.odontoprev.implantacao.to.ParametrosRelatorios;
/**
* @author edsousa
*
* Classe responsavel pela geração do relatório.
*/
public class GeradorRelatorios {
private static final String URL_BASE = "/relatorios/";
private static final String URL_XML = "xml/";
static Logger logger = Logger.getLogger(GeradorRelatorios.class);
/**
* Realiza a geração do relatório para o formato xml.
* @param isEmbed Indica se terá as imagens embutidas no arquivo xml.
* @param jasperPrint Relatório com os dados carregados.
* @param parametrosRelatorios Contém informações de geração do relatório.
* @return Retorna os bytes do arquivo gerado.
* @throws JRException
*/
public static byte[] gerarRelatorioToXML(boolean isEmbed,
JasperPrint jasperPrint, ParametrosRelatorios parametrosRelatorios)
throws JRException {
byte[] conteudo;
JRXmlExporter exporter = new JRXmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXmlExporterParameter.IS_EMBEDDING_IMAGES,
Boolean.valueOf(isEmbed));
File destFile = new File(parametrosRelatorios.getCaminhoEstruturaRelatorio() +
".xml");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.exportReport();
byte[] bytes = baos.toByteArray();
conteudo = bytes;
return conteudo;
}
/**
* Utilizado para criar relatórios de acordo com o Tipo solicitado Html, PDF, Xls, Xml, Csv.
*
* @param jasperPrint
* @param parametrosRelatorios
* @return Relatório
* @author lsadinolfi
*/
public static byte[] geraRelatorioPdfHtmlXlsCsv(JasperPrint jasperPrint, ParametrosRelatorios parametrosRelatorios){
byte[] conteudo = null;
if (jasperPrint != null) {
try {
if (ParametrosRelatorios.TASK_PDF.equals(
parametrosRelatorios.getTipoGeracao())) {
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
baos);
exporter.exportReport();
byte[] bytes = baos.toByteArray();
conteudo = bytes;
}
else if (ParametrosRelatorios.TASK_XML.equals(
parametrosRelatorios.getTipoGeracao())) {
conteudo = GeradorRelatorios.gerarRelatorioToXML(false, jasperPrint,
parametrosRelatorios);
} else if (ParametrosRelatorios.TASK_XML_EMBED.equals(
parametrosRelatorios.getTipoGeracao())) {
conteudo = GeradorRelatorios.gerarRelatorioToXML(true, jasperPrint,
parametrosRelatorios);
}
else if (ParametrosRelatorios.TASK_XLS.equals(
parametrosRelatorios.getTipoGeracao())) {
File destFile = new File(parametrosRelatorios.getCaminhoEstruturaRelatorio() +
".xls");
JRXlsExporter exporter = new JRXlsExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
baos);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_AUTO_DETECT_CELL_TYPE, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.exportReport();
byte[] bytes = baos.toByteArray();
conteudo = bytes;
} else if (ParametrosRelatorios.TASK_CSV.equals(
parametrosRelatorios.getTipoGeracao())) {
File destFile = new File(parametrosRelatorios.getCaminhoEstruturaRelatorio() +
".csv");
JRCsvExporter exporter = new JRCsvExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
baos);
exporter.exportReport();
byte[] bytes = baos.toByteArray();
conteudo = bytes;
} else if (ParametrosRelatorios.TASK_PRINT.equals(
parametrosRelatorios.getTipoGeracao())) {
JasperPrintManager.printReport(jasperPrint, true);
}
else if (ParametrosRelatorios.TASK_HTML.equals(
parametrosRelatorios.getTipoGeracao())) {
// File destFile = new File(parametrosRelatorios.getCaminhoEstruturaRelatorio() +
// ".html");
JRHtmlExporter exporter = new JRHtmlExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(JRHtmlExporterParameter.OUTPUT_STREAM,
baos);
exporter.exportReport();
byte[] bytes = baos.toByteArray();
conteudo = bytes;
}
}
catch (JRException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}
return conteudo;
}
/**
* Obter o content-type de saída do relatório.
* @param tipoSaida Tipo que o relatório deverá ser apresentado.
* @return Retorna o o content-type de saída.
*/
public static String obterContentTypeSaida(String tipoSaida) {
final String CONTENT_HTML = "text/html";
final String CONTENT_XLS = "application/vnd.ms-excel";
final String CONTENT_PDF = "application/pdf";
final String CONTENT_CSV = "text/plain";
final String CONTENT_XML = "text/xml";
String retorno = CONTENT_HTML;
if (tipoSaida.equals(ParametrosRelatorios.TASK_HTML)) {
retorno = CONTENT_HTML;
} else {
if (tipoSaida.equals(ParametrosRelatorios.TASK_PDF)) {
retorno = CONTENT_PDF;
} else {
if (tipoSaida.equals(ParametrosRelatorios.TASK_XLS)) {
retorno = CONTENT_XLS;
} else {
if ((tipoSaida.equals(ParametrosRelatorios.TASK_XML)) ||
(tipoSaida.equals(
ParametrosRelatorios.TASK_XML_EMBED))) {
retorno = CONTENT_XML;
} else {
if (tipoSaida.equals(ParametrosRelatorios.TASK_CSV)) {
retorno = CONTENT_CSV;
} else {
retorno = CONTENT_HTML;
}
}
}
}
}
return retorno;
}
}