I made one jasper report using iReport 3.7.4 version, now i have to use that or call that report in my java application where i am using servlets, jsp and strut
After 6 years @Bozho answer now (v5 and v6) contains deprecated code on point 5 JRExporterParameter.OUTPUT_STREAM, but I will try to improve the other points while I'm at it
Load the report
compiled version .jasper
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);
or the non compiled version .jrxml (slower since need to compile but feasible)
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml");
Fill the report
with nothing (datasource generated inside report or just static text)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params);
with datasource:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
with database connection (may the most common, sql executed inside report)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);
Export report
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();
If you like to stream the report directly to web page this is how contentType and Content-disposition is set and how you retrieve the outputStream
response.setContentType("application/x-pdf");
response.setHeader("Content-disposition", "inline; filename=myReport.pdf");
OutputStream outputStream = response.getOutputStream();