2017-01-25 5 views

Antwort

1

Sie könnten den Exporteur anweisen, den Bericht auf ein Bild im Speicher zu speichern und dann auf Festplatte zu speichern.

das Bild erstellen (Set die richtige Breite, Höhe und Format):

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

den Ausführer erstellen, konfigurieren Sie es (vielleicht einige andere Parameter eingestellt werden sollte) und exportieren Sie den Bericht:

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

Dump das Bild auf der Festplatte:

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

Ja Sie JRExporterParameter.PAGE_INDEX besser einstellen zu wählen, welche Seite exportiert wird und wenn ZOOM_RATIO 1 ist schön, die Bildgröße für JasperPrint (getPageWidth(), getPageHeight()) zu erhalten –

+0

exporter.setParameter – Novaax

+0

ist veraltet @Novaax Sie sollten [JRAbstractExporter.html.setParameter-API-Dokument] lesen (http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRABstractExporter.html#setParameter%28net.sf.jasperreports.engine.JRExporterParameter ,% 20java.lang.Object% 29). Die Methode setParameter wird ersetzt durch setExporterInput (ExporterInput), setConfiguration (ExporterConfiguration), setConfiguration (ReportExportConfiguration) und setExporterOutput (ExporterOutput). –

0

Sie die JRGraphics2DExporter verwenden möchten, aber dies kann auch direkt das JasperPrintManager

Beispiel Code contemplenting mehr Bilder 1 für jede Seite

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

mit getan werden, wenn Sie ein Bild wie mit allen Seiten, sollten Sie die isIgnorePagination="true" auf dem Jasper Tag gesetzt

Verwandte Themen