标签:attach and file 显示 design info src Map集合 显示中文
JasperReport 导出 PDF 的设置
(用工具 Jaspersoft studio来定义模板)
在idea中项目的resources目录下要导入配置,文件在:D:\Astudy\软件语言\Java\java就\项目一\13.saax-export_day13\03.资料和工具\03 中文字体
步骤
1.在工具里面生成PDF模板并且编译,把编译后的.jsaper文件拷贝进idea项目中
2.编写代码,实现数据填充
注意:数据填充 由三种方式
方式一,参数map填充
/** * 演示Map参数填充 * @param id * @throws Exception */ @RequestMapping("/exportPdf") public void exportPdf(String id) throws Exception { //1.读取模板文件(.jasper) InputStream inputStream = session.getServletContext().getResourceAsStream("/jasper/test02_map.jasper"); //2.把数据填充到模板 /** * 参数一:需要填充的模板文件输入流 * 参数二:Map参数 * 参数三:Jasper的数据源 */ //进行Map参数填充 HashMap map = new HashMap<>(); //模板的参数名称和Map的key一致的 map.put("userName","小苍"); map.put("email","xc@itcast.cn"); map.put("companyName","字节跑动"); map.put("deptName","视频组"); JasperPrint print = JasperFillManager.fillReport(inputStream, map , new JREmptyDataSource()); //3.导出PDF文件 /** * 参数一:封装好模板数据的JasperPrint对象 * 参数二:输出的位置,response.getOutputStream() //输出在页面显示 */ JasperExportManager.exportReportToPdfStream(print,response.getOutputStream()); }
方式二,JDBC数据源填充
@Autowired private DataSource dataSource; /** * 演示JDBC数据源参数填充 * @param id * @throws Exception */ @RequestMapping("/exportPdf") public void exportPdf(String id) throws Exception { //1.读取模板文件(.jasper) InputStream inputStream = session.getServletContext().getResourceAsStream("/jasper/test03_jdbc.jasper"); //2.把数据填充到模板 JasperPrint print = JasperFillManager.fillReport(inputStream, new HashMap<>() ,dataSource.getConnection()); //3.导出PDF文件 /** * 参数一:封装好模板好数据的JasperPrint对象 * 参数二:输出的位置 */ JasperExportManager.exportReportToPdfStream(print,response.getOutputStream()); }
方式三,JavaBean数据源填充
/** * 演示List集合(JavaBean)数据源导出 * @param id * @throws Exception */ @RequestMapping("/exportPdf") public void exportPdf(String id) throws Exception { //1.读取模板文件(.jasper) InputStream inputStream = session.getServletContext().getResourceAsStream("/jasper/test04_list.jasper"); //2.把数据填充到模板 List list = new ArrayList(); //注意: 必须遵守的规则:List的JavaBean的每个属性名称 和 模板的Filed名称 一致 for(int i=0;i<10;i++){ User user = new User(); user.setUserName("小苍"+i); user.setEmail("xc+"+i+"@itcast.cn"); user.setCompanyName("字节跑动"); user.setDeptName("视频组"+i); list.add(user); } //从而得到数据源 JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list); JasperPrint print = JasperFillManager.fillReport(inputStream, new HashMap<>() ,dataSource); //3.导出PDF文件 /** * 参数一:封装好模板好数据的JasperPrint对象 * 参数二:输出的位置 */ JasperExportManager.exportReportToPdfStream(print,response.getOutputStream()); }
数据源 填充数据分为:JDBC数据源填充数据(数据库连接)、JavaBean填充数据(list集合
对于JDBC数据源,是在做PDF模板的时候就链接了数据库获取数据,再在代码里通过数据源创建连接对象从而填充
对于JaveBean数据源(又称为List集合填充),只是在PDF模板中填充空的数据,真正的数据还是在代码中填充
其实在java代码中无非就是三步
1.读取模板文件(.jasper) InputStream inputStream = session.getServletContext().getResourceAsStream("/jasper/test04_list.jasper(webapp下面的文件地址)");
2.把数据填充到模板
JasperPrint print = JasperFillManager.fillReport (inputStream, Map集合 , dataSource数据源);
填充就是在用数据源还是map集合的不同而分出的3中方法
如果是用了map集合,那数据源就得为空,JasperPrint print = JasperFillManager.fillReport (inputStream, Map集合 , new JREmptyDataSource());
如果用了数据源,那map集合就得为空,JasperPrint print = JasperFillManager.fillReport (inputStream, new HashMap<>() , 数据源);
在区分,①用JDBC数据源,那就是JasperPrint print = JasperFillManager.fillReport(inputStream, new HashMap<>() ,dataSource.getConnection());
记得在外面写上 @Autowired
private DataSource dataSource;
②用JavaBean数据源,那就是
//从而得到数据源
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);
JasperPrint print = JasperFillManager.fillReport (inputStream, new HashMap<>() , dataSource);
3.pdf文件的显示或导出
①在浏览器显示
/** * 参数一:封装好模板好数据的JasperPrint对象 * 参数二:输出的位置 */
JasperExportManager.exportReportToPdfStream( print, response.getOutputStream());
②下载
* 参数:封装好模板好数据的JasperPrint对象
* 参数二:输出的位置
//设置下载框响应头
response.setHeader("Content-Disposition","attachment;filename=export.pdf"); /参数一是响应头,参数而,是附件和下载后的文件名
JasperExportManager.exportReportToPdfStream( print, response.getOutputStream()); //这一步同上
Jaspersoft studio工具(报表生成工具)之 设置PDF 的开发
标签:attach and file 显示 design info src Map集合 显示中文
原文地址:https://www.cnblogs.com/lanto/p/13282994.html