Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

jasperReport生成图片JPEG PDF 下载


分享到:
时间:2020-08-18 10:11来源:http://www.java1234.com 作者:小锋  侵权举报
jasperReport生成图片JPEG PDF 下载
失效链接处理
jasperReport生成图片JPEG PDF 下载


本站整理下载:
提取码:q9t8 
 
 
相关截图:
 
主要内容:

   最近公司新项目上有一个新的需要,即在原来用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,使之生成图像。

 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐