關於iReport 的轉化PDF 字體樣式失效的解決方法

本文介绍了解决iReport进行PDF打印时遇到的字体样式问题,包括如何配置字体和编码,以及如何通过修改Java代码使加粗和斜体效果生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值