Через 6 лет @Bozho ответ сейчас (v5 и v6) содержит устаревший код в точке 5 JRExporterParameter.OUTPUT_STREAM , но я постараюсьчтобы улучшить другие пункты, пока я в этом
Загрузить отчет скомпилировано версия .jasper
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);
или не скомпилировано версия .jrxml
(медленнее, поскольку нужно компилировать, но выполнимо)
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml");
Заполнить отчет с ничем (источник данных, сгенерированный внутри отчета или просто статический текст)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params);
с источником данных :
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
с базой данных соединение (возможно, наиболее распространенное, sql выполняется внутри отчета)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);
Экспорт отчета
JRPdfExporter exporter = new JRPdfExporter()
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream));
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setMetadataAuthor("Petter"); //Set your pdf configurations,
exporter.setConfiguration(configuration);
exporter.exportReport();
Если вы хотите направить отчет прямо на веб-страницу, это, как установлены contentType
и Content-disposition
и как вы получаете outputStream
response.setContentType("application/x-pdf");
response.setHeader("Content-disposition", "inline; filename=myReport.pdf");
OutputStream outputStream = response.getOutputStream();