2017-01-25 4 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, но это может также может быть сделано непосредственно с помощью JasperPrintManager

Пример кода contemplenting нескольких изображений 1 для каждой страницы

//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 файл со всеми страницами, вы должны установить isIgnorePagination="true" на бирке jasperReport

Смежные вопросы