Pregunta

Tengo un informe para exportar en Excel, PDF y Word usando informes Jasper. Utilizo el archivo xml como DataSource para el informe, pero cuando los datos aumentan, el informe jasper exporta el archivo vacío solo en formato PDF, cuando reduzco el contenido de los datos, exporta los datos disponibles correctamente. ¿Hay alguna limitación para el tamaño del pdf? , ¿cómo podemos gestionar el tamaño en los informes de jaspe de java?

Mi jrxml es realmente grande, así que no puedo agregarlo aquí, agregué mi código java que uso 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);
¿Fue útil?

Solución

Intente configurar la longitud del contenido:

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

Vea si esto resuelve su problema.

Otros consejos

Cuando no hay una fuente de fecha, puede probar este código

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

Incluso si no tiene ninguna fuente de datos y es un informe de datos estático, es importante proporcionar JREmptyDataSource; de ??lo contrario, puede obtener un informe en blanco.

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

- ¡Aclamaciones!

tal vez no tenga datos definidos en el informe.

pruebe este código cuando genere un informe para evitar ocultar secciones cuando no haya datos:

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

¡salud!

Tuve un problema similar. Para una gran cantidad de registros, el pdf recibía un informe en blanco.

Esto se resolvió estableciendo JRParameter.IS_IGNORE_PAGINATION en falso.

Un método que me funcionó al tratar con grandes datos e informes de jaspe es insertar primero los datos que necesita en una tabla de base de datos y luego crear una declaración SQL en el informe de jaspe que se unirá a la tabla que creó con los datos que necesitar. 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)
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top