失效链接处理 |
jasperReport生成图片JPEG PDF 下载
本站整理下载:
相关截图:
主要内容:
最近公司新项目上有一个新的需要,即在原来用jasper打印出来的文档上面,加上一个可以进行识别的东西(暂定为条形码),然后对这个文档的扫描件进行识别。初步确定就是修改原有的jasper资源文件,并在打印方法中加入一个对条形码的field引用,这样来完成在文档上打印条形码的需求。
但后面这一需要进一步修正,因为要将扫描件保存入数据库中,这时就想到如果不通过扫描设备,而直接将jasper在客户端调出打印的时候,由服务器端生成一个jasper图像,再将这个图像直接入库。这样就避免了二次扫描的麻烦。
在网上google了一下关于jasperReport的应用,发现大部分都是讲如何将jasper导入一个html或pdf进行打印的例子,并没有直接将jasperReport打印生成一个图像的示例。包括jaspe自带的demo里面,也没有相应的例子,决定自己看看相应的api,找一个可以运用的东西。
产生想到的是jasper自带的ImageServlet这个类,认为可以从这个类方法中找到一些可以参考的东西。可惜将代码粗略看一道,就失望了。这个类不是将一个jasper输出一个图像文件,而是输出一个jasper文件中指定图像名称中的图像信息。也就是说,这个类根本不能将一个jasper完整输出成一个图像的byte[]数组。看完这个类,我还真不知道这个类有什么样,至少现在我不看好这个类。
接到就找export包中的相应类,看能否找到一个根图像有关的exporter,最后找到这样一个类:JRGraphics2DExporter.java,从文档可以看出,它可以完整的将一个jasper文档输出到一个graphics对象中,而不像其他的exporter只是近似的模拟。但是这个文档同时也说明,它只是输出到graphics对象,而不是输出到一个文件或字节流中。当然这不是问题,我们可以创建一个可以产生graphics的对象(比如说bufferedimage),然后用g进行export,当然最后的信息就保存在拥有g的对象上了。接下来的操作就简单了。
如下代码所示:
Java代码
1.Map parameters = new HashMap();
2.JasperPrint jasperPrint =
3. JasperFillManager.fillReport(
4. (JasperReport) JRLoader.loadObject(new File("d:/injuryPresume.jasper")),//jasper对象
5. parameters,//参数列表
6. new JREmptyDataSource()//数据源信息
7. );
8.JRGraphics2DExporter exporter = new JRGraphics2DExporter();//创建graphics输出器
9.//创建一个影像对象
10.BufferedImage bufferedImage = new BufferedImage(jasperPrint.getPageWidth() * 4, jasperPrint.getPageHeight() * 4, BufferedImage.TYPE_INT_RGB);
11.//取graphics
12.Graphics2D g = (Graphics2D) bufferedImage.getGraphics();
13.//设置相应参数信息
14.exporter.setParameter(JRGraphics2DExporterParameter.GRAPHICS_2D, g);
15.exporter.setParameter(JRGraphics2DExporterParameter.ZOOM_RATIO, Float.valueOf(4));
16.exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
17.exporter.exportReport();
18.g.dispose();//释放资源信息
19.//这里的bufferedImage就是最终的影像图像信息,可以通过这个对象导入到cm中了.
20.ImageIO.write(bufferedImage, "JPEG", new File("d:/aa.jpg"));
由上可以看出,和普通的htmlexporter一样,产生创建jasperRecport对象,然后进行填充,接下来就是export了。
Export操作产生创建一个用于图像export的graphics2dExporter对象,然后从bufferedImage中取出g,接着将g,jasperPrint以及其他参数设置到exporter上,调用exportReport进行导出,最后释放g,使之生成图像。
|