2009-10-29 44 views
6

Tengo un informe para exportar en excel, pdf y word utilizando informes de jaspe. Utilizo el archivo xml como DataSource para el informe, pero cuando los datos aumentan el informe de jasper exporta el archivo vacío solo en formato PDF, cuando reduzco el contenido de datos, exporto los datos disponibles correctamente. ¿hay alguna limitación para el tamaño del pdf? , ¿cómo podemos gestionar el tamaño en los informes jasper de java?Informe de Jasper exporta datos vacíos en formato PDF cuando hay más datos

Mi jrxml es muy grande, así que no se puede añadir aquí, que he añadido mi código java que utilizo para exportar el contenido:

JRAbstractExporter exporter = null; 
if (format.equals("pdf")) { 
    exporter = new JRPdfExporter(); 
    jasperPrint.setPageWidth(Integer.parseInt(pWidth)); 
} else if (format.equals("xls")) { 
    exporter = new JRXlsExporter(); 

} else if (format.equals("doc")) { 
    jasperPrint.setPageWidth(Integer.parseInt(pWidth)); 
} 
exporter.setParameter(JRExporterParameter.JASPER_PRINT, 
     jasperPrint); 
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, 
     outputStream_); 
exporter.exportReport(); 
contents = outputStream_.toByteArray(); 
response.setContentType("application/" + format); 
response.addHeader("Content-disposition", 
     "attachment;filename=" + name.toString() + "." + format); 

Respuesta

2

intente configurar la longitud del contenido:

response.setContentLength(outputStream_.toByteArray().length) 

Vea si esto resuelve su problema.

+0

Tengo un problema similar e intenté pero no funcionó. He estado buscando en internet por varias horas. Puedo abrir informes pequeños (<100 kb), pero los informes más grandes aparecen en blanco en Adobe Reader, aunque puedo abrirlos con Foxit, por ejemplo. ¿Requiere Abobe alguna especificación especial cuando se generan informes más grandes? –

+0

Intenté actualizar los informes de jaspe y el lector de adobe, pero tampoco funcionó. –

2

quizás no tenga los datos definidos en el informe.

tratar este código cuando se genera el informe para evitar secciones se esconden cuando no hay datos:

JasperReport jasperReport = (JasperReport)JRLoader.loadObject ("report1.jasper"); 
**jasperReport.setWhenNoDataType(WhenNoDataTypeEnum.ALL_SECTIONS_NO_DETAIL);** 

vivas !.

10

Cuando no hay ninguna fuente fecha puede probar este código

 jasperReport = JasperCompileManager.compileReport(sourceFileName); 
     jasperPrint = JasperFillManager.fillReport(jasperReport,jasperParameter,new JREmptyDataSource()); 
     JasperExportManager.exportReportToPdfFile(jasperPrint, "D://.pdf") 

Incluso si usted no tiene ninguna fuente de datos y su informe de datos estática dando JREmptyDataSource es importante, de lo contrario puede obtener un informe en blanco.

Comprobar este enlace para obtener más información https://stackoverflow.com/a/5334415/649451

- Salud!

+0

chicos en JasperSoft podrían mejorar esto para el método sobrecargado JasperFillManager.fillReport (jasperReport, jasperParameter); y solo nos hacen la vida más fácil ... –

1

Tuve un problema similar. Para una gran cantidad de registros, el pdf estaba recibiendo un informe en blanco.

Esto se solucionó estableciendo JRParameter.IS_IGNORE_PAGINATION en falso.

0

Un método que me funcionó cuando se trata de big data y jasper reports es insertar primero los datos que necesita en una tabla de base de datos y luego crear una declaración SQL en el informe jasper que se unirá a la tabla que creó con los datos necesitas. Esto pone más trabajo en la base de datos y menos en la biblioteca jasper. Aquí hay un ejemplo de una tabla que se puede crear para almacenar datos de informes.

CREATE TABLE RE_EMPLOYEE(
EMPLOYEE_ID INT UNIQUE NOT NULL 
COMPANY_ID INT UNIQUE NOT NULL 
REPORT_NAME VARCHAR(20) 
UNIQUE_USER_ID INT UNIQUE NOT NULL 
PRIMARY KEY (EMPLOYEE_ID, COMPANY_ID) 
); 
Cuestiones relacionadas