Отчет Jasper экспортирует пустые данные в формате PDF, когда данных больше - PullRequest
6 голосов
/ 29 октября 2009

У меня есть отчет для экспорта в Excel, PDF и Word с использованием отчетов Jasper. Я использую XML-файл в качестве источника данных для отчета, но когда данные увеличиваются, отчет Jasper экспортирует пустой файл только для формата PDF, когда я уменьшаю содержание данных, он экспортирует данные, доступные правильно. Есть ли ограничение по размеру PDF? Как мы можем управлять размером в отчетах Джаспер из Java?

Мой jrxml действительно большой, поэтому я не могу добавить его сюда, я добавил свой Java-код, который я использую для экспорта контента:

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);

Ответы [ 5 ]

10 голосов
/ 09 декабря 2011

Когда нет источника даты, вы можете попробовать этот код

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

Даже если у вас нет источника данных и его статический отчет о данных, дающий JREmptyDataSource, важен, иначе вы можете получить пустой отчет.

Проверьте эту ссылку для получения дополнительной информации https://stackoverflow.com/a/5334415/649451

- Ура!

2 голосов
/ 15 июня 2010

возможно у вас нет данных, определенных в отчете.

попробуйте этот код при создании отчета, чтобы избежать скрытия разделов при отсутствии данных:

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

ура!.

2 голосов
/ 29 октября 2009

Попробуйте установить длину контента:

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

Посмотрите, разрешит ли это вашу проблему.

1 голос
/ 02 сентября 2015

У меня была похожая проблема. Для большого количества записей pdf получал пустой отчет.

Это было решено установкой JRParameter.IS_IGNORE_PAGINATION в значение false.

0 голосов
/ 02 апреля 2017

Метод, который работал для меня при работе с большими данными и отчетами jasper, заключается в том, чтобы сначала вставить необходимые данные в таблицу базы данных, а затем создать оператор SQL в отчете jasper, который соединит созданную вами таблицу с данными, которые вы необходимость. Это увеличивает нагрузку на базу данных и меньше на библиотеку яшмы. Вот пример таблицы, которую можно создать для хранения данных отчета.

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)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...