2011-12-19 28 views
21

私はJasper Reportsに慣れ親しむためのとても簡単なサンプルプロジェクトを書いています。私はPDF OutputStreamに設定したレポートをエクスポートしたいのですが、それのためのファクトリメソッドはありません。JasperReportをPDF OutputStreamにエクスポートしますか?

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

がどのように私はOutputStreamでPDFを得ることができますか?

答えて

28

これはどのように動作するのですか。 JasperFillManagerは実際にそう、JasperPrintオブジェクトを返します。

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

をお楽しみください。

+2

非非推奨ソリューションです。 exportReportToPdfFile'あなた自身で出力ストリームを処理することはありません –

+0

しかし、この方法は私に最も柔軟性を与えます。出力ストリームをファイルに書き込んだり、ネットワークやどこでも好きな場所に書き込んだりすることができます。 –

+1

コンパイルは、通常は*余計な手順です。代わりに、ソフトウェアは毎回 '.jrxml'ファイルを再コンパイルするのではなく、' .jasper'ファイルを使用してレポートに記入する必要があります。 –

16

JRExporterを使用して、埋め込まれたレポートをさまざまなストリームとフォーマットにエクスポートできます。

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

あなたはここに利用できるより多くの輸出業者を見つけることができます: http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRExporter.html

彼らはすべてのレポートの送信先を制御するためにOUTPUT_STREAMパラメータを受け入れる必要があり

JRExporter exporter = null; 

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

はまた、他の輸出国があることに注意してください。

+0

ポリモーフィックであるために改善されました –

+1

5年後、JRExportParameterは廃止されました。廃止予定の[回答](http://stackoverflow.com/a/35916470/5292302)が追加されました。 –

6

JRExporterParameterが最新のバージョンで廃止されましたあなたは、単に `あなたが使用することができ、ファイルに出力レポートしようとしている場合、これは@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(); 
関連する問題