博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ireport+springMVC生成pdf
阅读量:6968 次
发布时间:2019-06-27

本文共 5641 字,大约阅读时间需要 18 分钟。

hot3.png

如果是少量,简单的报表itext就轻松搞定,但是报表多了,itext会死人的。记录下本人使用ireport+springMVC生成pdf

  1. 下载并安装ireport

  2. 将依赖的jar放到lib下面,jasperreports-5.6.0.jar、groovy-all-2.1.3.jar、iText-2.1.7.js2.jar、iTextAsian.jar、iTextAsianCmaps.jar(iTextAsian这几个是解决中文乱码的)

  3. 继承JasperReportsMultiFormatView类,并重写fillReport()方法,在该方法中增加setUrl()实现,这样就可 以在controller中指定要使用的报表模板文件了。这样做的好处是,只需要一个jasperReport配置文件,可以在controller中动 态的设定报表模板url。

  4. package com.hutong.ms.pdf.controller;import net.sf.jasperreports.engine.JRDataSource;import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import com.hutong.ms.pdf.entity.UserTest;/** * @author :alex * @date :2015年12月17日 下午8:20:05 * @description: */@Controllerpublic class UserTestController {    @RequestMapping(value="getpdf")    public String report(Model model) {          // 报表数据源          JRDataSource jrDataSource = new JRBeanCollectionDataSource(UserTest.getList());          // 动态指定报表模板url  //        model.addAttribute("url", "/WEB-INF/jasper/MvcIReportExample.jasper");          model.addAttribute("url", "/WEB-INF/jasper/test1.jasper");          model.addAttribute("format", "pdf"); // 报表格式          model.addAttribute("jrMainDataSource", jrDataSource);                        return "iReportView"; // 对应jasper-defs.xml中的bean id      }     }

4.在/WEB-INF/jasper/目录下创建报表视图配置文件jasper-defs.xml,并指定解析器类为自定义的视图解析器类:

5.Jasper报表的渲染需要用到XmlViewResolver视图解析器,这样你的项目中就会存在多个视图解析器。需要注意的是,项目中如果 使用了多个视图解析器,则需要设置order的值来区分解析器的使用顺序,order值越小则越靠前。增加XmlViewResolver视图解析器的同 时,并指定其要解析的配置文件路径。

那么,需要在/WEB-INF/spring/appServlet/servlet-context.xml中增加下述配置:

      
          
              
0
                    
              
WEB-INF/jasper/jasper-defs.xml
                

--------------------------------分割线-------------------------------------

java测试代码

  1. 实体类:

  2. package com.hutong.ms.pdf.entity;import java.io.Serializable;import java.util.ArrayList;import java.util.List;/** * @author :alex * @date :2015年12月17日 下午8:16:26 * @description: */public class UserTest implements Serializable {    /**     *      */    private static final long serialVersionUID = 1L;        private int id;    private String name;    private String nickname;    private String phone;    private int age;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getNickname() {        return nickname;    }    public void setNickname(String nickname) {        this.nickname = nickname;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    @Override    public String toString() {        return "UserTest [id=" + id + ", name=" + name + ", nickname="                + nickname + ", phone=" + phone + ", age=" + age + "]";    }        public UserTest(int id, String name, String nickname, String phone, int age) {        super();        this.id = id;        this.name = name;        this.nickname = nickname;        this.phone = phone;        this.age = age;    }    public UserTest() {        super();    }    public static List
     getList(){        List
     list = new ArrayList<>();        UserTest ut1 = new UserTest(1, "alex", "alex", "18976878", 23);        UserTest ut2 = new UserTest(2, "alex2", "alex2", "18976878", 23);        UserTest ut3 = new UserTest(3, "alex3", "alex3", "18976878", 23);        UserTest ut4 = new UserTest(4, "alex4", "alex4", "18976878", 23);        UserTest ut5 = new UserTest(5, "alex5", "alex5", "18976878", 23);        UserTest ut6 = new UserTest(5, "哈哈", "哈哈", "18976878", 23);        list.add(ut1);        list.add(ut2);        list.add(ut3);        list.add(ut4);        list.add(ut5);        list.add(ut6);        return list;    }}

2.使用iReport设计报表模板,并编成.jasper二进制文件,并拷贝至\WEB-INF\jasper目录下:

140725_BwFh_2402229.png

3.Controller代码:

package com.hutong.ms.pdf.controller;import net.sf.jasperreports.engine.JRDataSource;import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import com.hutong.ms.pdf.entity.UserTest;/** * @author :zhouyong * @date :2015年12月17日 下午8:20:05 * @description: */@Controllerpublic class UserTestController {    @RequestMapping(value="getpdf")    public String report(Model model) {          // 报表数据源          JRDataSource jrDataSource = new JRBeanCollectionDataSource(UserTest.getList());          // 动态指定报表模板url  //        model.addAttribute("url", "/WEB-INF/jasper/MvcIReportExample.jasper");          model.addAttribute("url", "/WEB-INF/jasper/test1.jasper");          model.addAttribute("format", "pdf"); // 报表格式          model.addAttribute("jrMainDataSource", jrDataSource);                        return "iReportView"; // 对应jasper-defs.xml中的bean id      }     }

4.运行效果;

140920_F46u_2402229.png

如果上述的中文相关jar都天剑了中文不显示的话:

在生成jasper的时候设置字段属性:

Font name    宋体

Pdf Font name :   STSong-Light

Pdf Embedded  :  true

Pdf Encoding  :  UniGB-UCS2-H (Chinese Simplified)


简单说下ireport配置javabean数据源:

160537_wCOT_2402229.png

此处路径为你javabean的class文件地址,

160712_9puy_2402229.png

160840_svZt_2402229.png

配置完成后左侧就可以看到了:

160931_5LZh_2402229.png


http://blog.csdn.net/xht555/article/details/43409637

转载于:https://my.oschina.net/u/2402229/blog/547280

你可能感兴趣的文章
P6Spy和sping配合显示真正的SQL
查看>>
我的友情链接
查看>>
mysql(mariadb)基于ssl主从复制
查看>>
(1)SpringCloud相关知识资源整理
查看>>
定时任务与手动执行脚本时的一个重要注意事项
查看>>
EditPlus常用快捷键
查看>>
26次课(正则介绍 grep)
查看>>
Spark的Shuffle过程
查看>>
ISIS----RIP
查看>>
windows 8 应用小技巧(31-35)
查看>>
SurfaceView 的 setZOrderOnTop
查看>>
多线程之线程锁的使用
查看>>
基数排序
查看>>
使用 ECharts 在网页上绘制图表
查看>>
linux 基础知识学习(七)
查看>>
软件工程基础知识
查看>>
Qt:禁止qDebug的输出
查看>>
我的友情链接
查看>>
解决“你没有权限访问,请与网络管理员联系”
查看>>
在lamp环境安装phpMyAdmin工具笔记
查看>>