iReport 進行PDF打印的時候如果發現字體樣式找不到,可以通過以下方法解決.
首先 : 請檢查你是否把 iTextAsian.jar,iTextAsianCmaps.jar 已經加入到了iReport 的classpath環境中.
如有請接著下一步.
其次: 查看每個欄位是否將 PDF Embedded 複選框勾選上, PDF Foot Name : STSong-Light, PDF Encoding : UniGB-UCS2-H (Chinese Simplified)
一般到了這個時候 pdf 中文都能打印出來,但是,你可能會發現,當選中 Bold 複選框,或者Italic 複選框 ,打印出來的PDF 樣式并沒有變化.何解???
在這需要感謝 Allen 他寫了一篇文章關於這個問題的解決方案,其博文地址為:http://jiamingwu.blogspot.com/2007/03/jasperreports.html
我用的iReport 版本是 2.0.5,此問題出現的位置為 1696 行
Java代码 收藏代码
protected Font getFont(Map attributes)
{
JRFont jrFont = new JRBaseFont(attributes);
Exception initialException = null;
Color forecolor = (Color)attributes.get(TextAttribute.FOREGROUND);
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
{
pdfFont = new PdfFont(jrFont.getPdfFontName(), jrFont.getPdfEncoding(), jrFont.isPdfEmbedded());
}
將其修改為
Java代码 收藏代码
pdfFont = new PdfFont(jrFont.getPdfFontName(), jrFont.getPdfEncoding(), jrFont.isPdfEmbedded(),jrFont.isBold(), jrFont.isItalic());
并將此文件編譯后的class文件添加至 jasperreports-2.0.5.jar中