希望总在你想放弃的前一刻到来,这就算是对坚持的犒赏吧。今天折腾displaytag半天,一直被中文这个问题折磨着。但是,回头想来,确实痛苦并快乐着。既然得来这么不易,当然要总结一下啦。闲话少说,进入正题……
displaytag的版本是1.2,即:displaytag-1.2。相关jar包有:commons-lang-2.3.jar;displaytag-1.2.jar;displaytag-export-poi-1.2.jar;displaytag-portlet-1.2.jar;itext-1.3.jar;iTextAsian.jar(PDF中文包);standard-1.1.2.jar等。
一、Excel中文乱码处理:
displaytag-1.2已经在displaytag-export-poi-1.2.jar中为Excel提供了一种对中文的解决方案:ExcelHssfView。方法是在displaytag.properties和displaytag_zh_CN.properties中覆盖默认配置,即:
export.excel.class=org.displaytag.export.ExcelView (默认配置)
export.excel.class=org.displaytag.export.excel.ExcelHssfView(中文解决配置);
二、PDF中文乱码解决
我对PDF中文的解决方案是采用一种替代的方式修改原来的:org.displaytag.exportl.PdfView累里面的initTable()方法;具体如下:
新建一个类com.hicom.tagext.PdfCNView
内容copy org.displaytag.export.PdfView
将:initTable()方法里面的如下代码:
smallFont = FontFactory.getFont(FontFactory.HELVETICA, 7, Font.NORMAL, new Color(0, 0, 0));
修改为:
smallFont = FontFactory.getFont("STSong-Light","UniGB-UCS2-H", Font.DEFAULTSIZE);
然后在displaytag.properties和displaytag_zh_CN.properties中覆盖默认配置,即:
export.pdf.class=com.hicom.tagext.PdfCNView。
至此,displaytag的中文处理完毕。
备注:displaytag.properties和displaytag_zh_CN.properties位于/WEB-INF/classes目录下。