1、 需要的jar包
(1)jasperreports-3.7.6.jar 依赖的包、核心包
(2) itext-2.1.7.jar(生成pdf.word组件包)iTextAsian.jar(中文字体包)
(3) commons-digester-2.1.jar(xml解析功能)
2、使用的文件
(1).jrxml文件 使用ireport软件画出的pdf模板格式为.jrxml,在程序中没有用到,建议保存,可以用来以后修改pdf模板
(2).jasper文件 由.jrxml编译生成,程序中调用
调用.jasper生成.pdf(建议存放位置WebContent/ireport/ireport.jasper)
3、程序代码
@RequestMapping("/list/pdf")
public void pdf(HttpSession session, HttpServletResponse response) throws JRException, IOException{
JasperPrint print = null;
try {
Map map = new HashMap();//不需要传值
UsersVo usersVo = new UsersVo();
usersVo.setUsersName("山东方亚信息技术有限公司");
usersVo.setJc("山东方亚");
usersVo.setTxrq("2018年4月23日");
List list = new ArrayList();
list.add(usersVo);
JRDataSource JRdataSource = new JRBeanCollectionDataSource(list);
print = JasperFillManager.fillReport(session.getServletContext().getRealPath("/ireport/ireport.jasper"), map,
JRdataSource);
byte[] bytes = JasperExportManager.exportReportToPdf(print);
response.setHeader("Content-Disposition", "attachment;filename="+java.net.URLEncoder.encode(usersVo.getJc(), "UTF-8")+".pdf");
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
4、新建Vo类
Vo类中的字段与.jrxml文件中字段一致,如要修改,.jrxml也要一起修改(.jrxml文件中有的字段,Vo类中一定要有)
5、制作pdf模板