SpringMVC与iReport整合开发时的PDF中文显示处理

来源:互联网 发布:怎么联系淘宝官方客服 编辑:程序博客网 时间:2024/05/21 09:34

虽可以输出PDF格式的报表,但报表内容中若包含中文汉字,则无法正常显示。的确,整合开发实例中涉及到的PDF格式报表是不支持中文显示的,因为我的初衷是让大家熟悉SpringMVC与iReport的整合过程,并起到一个抛砖引玉的作用,所以PDF报表能否显示中文汉字压根没在考虑范围之内。

  既然现在有不少网友遇到了这样的问题,刚好今天稍微有些空闲,就PDF如何显示中文的问题做下说明。

一、特别说明:

  开始本示例之前,有必要先阅读我先前发布的《SpringMVC与iReport(JasperReports) 5.6整合开发实例》这篇博文,只有熟悉了SpringMVC与iReport的整合基础之后,才能更容易上手本示例教程。

  开始之前,先来预览下最终的报表效果:

  

二、开发环境

  • 操作系统: Windows 7 x64
  • JDK: JDK 1.7.0_79 x64
  • 开发IDE: Eclipse Luna Service Release 2 (4.4.2) x64
  • Maven: Apache Maven 3.2.3
  • iReport: Jaspersoft iReport Designer 5.6.0

三、添加PDF中文显示依赖包itextasian

  PDF中文显示需要itext和itextasian这两个jar文件的支持,尤其是itextasian,PDF报表能否显示中文就靠它了。很多网友肯定都知道这一点,但为什么还是不能正确显示中文呢?原因有二:要么itextasian这个包有问题,要么报表模板设计有问题。

  其实这两个包在iReport的安装目录下也有,他们位于:${iReport安装根目录}\ireport\modules\ext下:

  

  另外一点需要注意的是,我们的项目是使用Maven来管理Jar包依赖的,因此需要将上述两个Jar包导入到Maven本地库中,然后在项目POM文件中添加依赖。因此我已经写好了批处理,双击对应的bat批处理脚本即可将上述jar包导入到Maven本地库中(位于本项目的跟目录下)。

  

  然后在项目POM文件中添加itextasian依赖:

[html] view plain copy
  1. <!-- iReport PDF中文支持 -->  
  2. <dependency>  
  3.     <groupId>com.lowagie</groupId>  
  4.     <artifactId>itextasian</artifactId>  
  5.     <version>2.1.7.js2</version>  
  6. </dependency>  

四、报表模板设计

  1、在报表模板中添加一个“Style”,暂且命名为“zh_CN”。

  

  2、设置样式“zh_CN”的<Pdf Font name>和<Pdf Encoding>两项参数:

  

  3、指定显示字段使用样式“zh_CN”。

  

  当然也可以不使用“Style”的方式,而是为每个字段都指定<Pdf Font name>和<Pdf Encoding>这两项参数,不过这样会很繁琐。记得保存、编译模板文件。

五、编写Controller方法

[java] view plain copy
  1. /** 
  2.  * 返回iReport报表视图,支持PDF显示中文 
  3.  * @param model 
  4.  * @return 
  5.  */  
  6. @RequestMapping(value = "/reportChs", method = RequestMethod.GET)  
  7. public String reportChs(Model model) {  
  8.     // 报表数据源  
  9.     JRDataSource jrDataSource = new JRBeanCollectionDataSource(JavaBeanPerson.getListChs());  
  10.               
  11.     // 动态指定报表模板url  
  12.     model.addAttribute("url""/WEB-INF/jasper/MvcIReportChsExample.jasper");  
  13.     model.addAttribute("format""pdf"); // 报表格式  
  14.     model.addAttribute("jrMainDataSource", jrDataSource);  
  15.       
  16.     return "iReportView";  
  17. }  

  发布项目,通过链接:http://localhost:8080/mvc-ireport-chs/reportChs访问生成的PDF报表。

六、Demo源码下载

  项目源码:mvc-ireport-chs.zip

0 0