Il report Jasper esporta dati vuoti in formato PDF quando sono presenti più dati
-
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);
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)
);