可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm writing a pretty simple sample project for familiarizing myself with Jasper Reports. I'd like to export a report I've configured to a PDF OutputStream
, but there's no factory method for it:
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")));
How can I get the PDF in an OutputStream
?
回答1:
Ok, so here's how it works; JasperFillManager
actually returns a JasperPrint
object, so:
// 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));
Enjoy.
回答2:
You can use a JRExporter to export the filled report to different streams and formats.
JRExporter exporter = null; exporter = new JRPdfExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream); exporter.exportReport();
Also note that there are other exporters:
exporter = new JRRtfExporter(); exporter = new JRHtmlExporter();
You can find more exporters available here: http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRExporter.html
They should all accept an OUTPUT_STREAM parameter to control the destination of the report.
回答3:
JRExporterParameter is deprecated in latest versions, This is a non deprecated solution of @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();