生成PDF文件 (jasperReports方式)

    技术2022-07-31  75

    1.引入依赖:

    <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.8.0</version> </dependency>

    2.通过Jaspersoft Studio软件生成jrxml模板文件 注意中文字体设置 需要与我们程序中所拥有的字体资源一致 一般放在非Detail区域的使用parameters组件来定义动态数据,后台使用map传递参数 放在Detail区域的,用Field组件定义动态数据,后台使用JRDataSource数据源类型传递List参数 注意传递的参数类型,要与设置模板数据的类型必须是一致的。 3.后台代码编辑流程

    1.获取存入的jrxml模板地址 2.定义编译生成的jasper文件地址 3.通过两个地址进行编译文件 4.填充数据 5.生成PDF文件

    入门案例代码:(JavaBean数据源方式 )

    //找到模板 //模板位置 jrxml String jrxmlPath="F:jrxml\\demo1.jrxml"; //编译后模板位置jasper String jasperPath="F:\\jrxml\\demo1.jasper"; //编译文件 JasperCompileManager.compileReportToFile(jrxmlPath,jasperPath); //定义map类型数据 用来给parameters组件传递数据 HashMap<String, Object> map = new HashMap<>(); map.put("company","鹿山学院"); //伪装从数据库中获取的数据 此处使用javaBean类型传递 List<Map> list=new ArrayList<>(); HashMap<String, Object> map1 = new HashMap<>(); map1.put("id",1); map1.put("username","张三"); map1.put("password","123456"); map1.put("email","123456@qq.com"); HashMap<String, Object> map2 = new HashMap<>(); map2.put("id",2); map2.put("username","李四"); map2.put("password","123456"); map2.put("email","123456@qq.com"); list.add(map1); list.add(map2); //填充数据 是用javaBean数据源传递数据 需要将list放入JRBeanCollectionDataSource中 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath, map, new JRBeanCollectionDataSource(list)); //生成PDf文件 JasperExportManager.exportReportToPdfFile(jasperPrint,"F:\\jrxml\\ls.pdf");

    注意:我们一般在项目中使用时,都是将pdf文件传递给浏览器下载 也就是使用response方式通过输出流传输 此时我们就需要设定文件类型和名称,exportReportToPdfStream方法没有对我们进行封装。最后一步生成需要进行修改.

    //设置输出流 ServletOutputStream out = response.getOutputStream(); //设置输出类型(tomcat中的web.xml文件中寻找对应的) response.setContentType("application/pdf"); //设置输出名称 response.setHeader("content-Disposition", "attachment;filename=report.pdf"); //输出流 JasperExportManager.exportReportToPdfStream(jasperPrint,out);
    Processed: 0.009, SQL: 9