web-dev-qa-db-fra.com

Exporter JasperReport vers PDF OutputStream?

J'écris un exemple de projet assez simple pour me familiariser avec Jasper Reports. Je voudrais exporter un rapport que j'ai configuré vers un PDF OutputStream, mais il n'y a pas de méthode d'usine pour cela:

InputStream template = JasperReportsApplication.class
    .getResourceAsStream("/sampleReport.xml");
JasperReport report = JasperCompileManager.compileReport(template);
JasperFillManager.fillReport(report, new HashMap<String, String>());
// nope, just chuck testa.  
//JasperExportManager.exportReportToPdfStream(report, new FileOutputStream(new File("/tmp/out.pdf")));

Comment puis-je obtenir le PDF dans un OutputStream?

28
Naftuli Kay

Ok, voici donc comment cela fonctionne; JasperFillManager renvoie en fait un objet JasperPrint, donc:

// get the JRXML template as a stream
InputStream template = JasperReportsApplication.class
    .getResourceAsStream("/sampleReport.xml");
// compile the report from the stream
JasperReport report = JasperCompileManager.compileReport(template);
// fill out the report into a print object, ready for export. 
JasperPrint print = JasperFillManager.fillReport(report, new HashMap<String, String>());
// export it!
File pdf = File.createTempFile("output.", ".pdf");
JasperExportManager.exportReportToPdfStream(print, new FileOutputStream(pdf));

Prendre plaisir.

35
Naftuli Kay

Vous pouvez utiliser un JRExporter pour exporter le rapport rempli vers différents flux et formats.

JRExporter exporter = null;

exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
exporter.exportReport();

Notez également qu'il existe d'autres exportateurs:

exporter = new JRRtfExporter();
exporter = new JRHtmlExporter();

Vous pouvez trouver plus d'exportateurs disponibles ici: http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRExporter.html

Ils doivent tous accepter un paramètre OUTPUT_STREAM pour contrôler la destination du rapport.

17
stevemac

JRExporterParameter est déconseillé dans les dernières versions, il s'agit d'une solution non déconseillée de @ stevemac answer

JRPdfExporter exporter = new JRPdfExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream));
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setMetadataAuthor("Petter");  //why not set some config as we like
exporter.setConfiguration(configuration);
exporter.exportReport();
14
Petter Friberg