日期:2014-05-16  浏览次数:20993 次

jasperreports报表的粗体,斜体,无效的解决方案

????? 以前从来没有用JAVA做过报表,最近在项目中需要做报表。以前也听说过jasperreports。就开始google了几篇文章照着做,做的很艰苦。遇到问题需要很长时间解决。比如说subreport的传值等问题。中文字体问题。等到报表做出了拿给客户看,客户要求标题要粗体显示,原来以为是PDF格式的问题,后来在网络google很久,有人说jasperreports的源码有问题,还给出了修改办法。但是没有提供修改后的jar包,不得不自己动手,下载了jasperreports源码,按照网上的提示修改后重新打包,把原来的jar包重新替换后,运行出的报表粗体,斜体,下划线都有效果了。我用的版本是3.5.3,附件是我修改过的jar包,假如你用的别的版本,你可以下了源码,按下面的提示修改后重新编译。不要告诉 我你ant都不会用。

?

修改的文件是:JRPdfExporter.java

?

修改的地方是第1723行(红色部分)(不同版本行数可能不同):

Font font = null;
??PdfFont pdfFont = null;
??FontKey key = new FontKey(jrFont.getFontName(), jrFont.isBold(), jrFont.isItalic());

??if (fontMap != null && fontMap.containsKey(key))
??{
???pdfFont = (PdfFont) fontMap.get(key);
??}
??else
??{
???FontInfo fontInfo = JRFontUtil.getFontInfo(jrFont.getFontName(), locale);
???if (fontInfo == null)
???{
????pdfFont = new PdfFont(jrFont.getPdfFontName(), jrFont.getPdfEncoding(), jrFont.isPdfEmbedded(),jrFont.isBold(), jrFont.isItalic());??//增加了三个参数
???}
???else
???{
????FontFamily family = fontInfo.getFontFamily();
????FontFace face = fontInfo.getFontFace();
????int faceStyle = java.awt.Font.PLAIN;

?

希望你遇到的问题,能完美解决。

?

?