2017-01-25 18 views

答えて

1

レポートをメモリ内のイメージにダンプしてディスクに保存するように指示することができます。

(適切な幅、高さおよびフォーマットを設定)イメージを作成します。

BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB); 

は、それを構成する、輸出を作成します(おそらくいくつかの他のパラメータを設定する必要があります)とレポートをエクスポート:

JRGraphics2DExporter exporter = new JRGraphics2DExporter(); 

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
exporter.setParameter(JRGraphics2DExporterParameter.GRAPHICS_2D, (Graphics2D)image.getGraphics()); 
exporter.setParameter(JRGraphics2DExporterParameter.ZOOM_RATIO, Float.valueOf(1)); 

exporter.exportReport(); 

ディスクにイメージをダンプします。

ImageIO.write(image, "PNG", new File("image.png")); 
+1

はい、JRExporterParameter.PAGE_INDEXを設定して、エクスポートするページを選択し、ZOOM_RATIOが1の場合はJasperPrint(getPageWidth()、getPageHeight())のイメージサイズを取得するのがいいです。 –

+0

exporter.setParameterは非推奨です – Novaax

+0

@Novaax [JRAbstractExporter.html.setParameter API doc](http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRAbstractExporter.html#setParameter%28net.sf.jasperreports.engine.JRExporterParameter)を読んでください。 、%20java.lang.Object%29)。 setParameterメソッドは、setExporterInput(ExporterInput)、setConfiguration(ExporterConfiguration)、setConfiguration(ReportExportConfiguration)、およびsetExporterOutput(ExporterOutput)に置き換えられます。 –

0

あなたはJRGraphics2DExporterを使用したいが、これはできますまた、あなたがすべてのページに1枚の画像のような場合は、コードのは、あなたがjasperReportタグ

isIgnorePagination="true"を設定する必要があり、すべてのページ

//Get my print, by filling the report 
JasperPrint jasperPrint = JasperFillManager.fillReport(report, map,datasource); 

final String extension = "jpg"; 
final float zoom = 1f; 
String fileName = "report"; 
//one image for every page in my report 
int pages = jasperPrint.getPages().size(); 
for (int i = 0; i < pages; i++) { 
    try(OutputStream out = new FileOutputStream(fileName + "_p" + (i+1) + "." + extension)){ 
     BufferedImage image = (BufferedImage) JasperPrintManager.printPageToImage(jasperPrint, i,zoom); 
     ImageIO.write(image, extension, out); //write image to file 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

のために複数の画像1をcontemplenting JasperPrintManager

例を使用して直接実行すること

関連する問題