Il report Jasper esporta dati vuoti in formato PDF quando sono presenti più dati

StackOverflow https://stackoverflow.com/questions/1641884

  •  10-07-2019
  •  | 
  •  

Domanda

Ho un rapporto da esportare in Excel, PDF e Word usando i rapporti Jasper. Uso il file xml come DataSource per il rapporto, ma quando i dati aumentano il diaspro esporta il file vuoto solo per il formato PDF, quando riduco il contenuto dei dati esporta i dati disponibili correttamente. c'è qualche limitazione alla dimensione del pdf? , come possiamo gestire le dimensioni nei report jasper di java?

Il mio jrxml è davvero grande, quindi non posso aggiungerlo qui, ho aggiunto il mio codice java che utilizzo per esportare il contenuto:

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);
È stato utile?

Soluzione

Prova a impostare la lunghezza del contenuto:

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

Verifica se questo risolve il tuo problema.

Altri suggerimenti

Quando non c'è alcuna fonte di data puoi provare questo codice

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

Anche se non si dispone di alcuna origine dati ed è un rapporto dati statico che fornisce JREmptyDataSource è importante, altrimenti è possibile ottenere un rapporto vuoto.

Controlla questo link per maggiori informazioni https://stackoverflow.com/a/5334415/649451

- Saluti!

forse non hai i dati definiti nel rapporto.

prova questo codice durante la generazione del rapporto per evitare di nascondere sezioni in assenza di dati:

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

evviva!.

Ho avuto un problema simile. Per un gran numero di record pdf stava ottenendo un rapporto vuoto.

Ciò è stato risolto impostando JRParameter.IS_IGNORE_PAGINATION su false.

Un metodo che ha funzionato per me quando ho a che fare con report di big data e jasper è innanzitutto inserire i dati necessari in una tabella del database e quindi creare un'istruzione SQL sul report jasper che unirà la tabella creata con i dati che hai creato bisogno. Questo mette più lavoro sul database e meno sulla libreria jasper. Ecco un esempio di una tabella che può essere creata per archiviare i dati del report.

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)
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top