困擾兩天的問題,今天得到解決.
由於公司早些時候的產品是ireport-1.x系列下開發的,現在ireport都出到5.x系列,產品要做升級,就把老的xml文件拿來,放到新的ireport中,預覽出來發現報錯,各種報錯.
解決辦法就是網上的那種各種修改配置文件,添加ireport的classPath的jar包,下載最新的itext-asian-5.2.0.jar,itextpdf-5.4.0.jar,jasperreports-3.7.5.jar,jasperreports-fonts-4.0.0.jar各種辦法均有所嘗試,還是不行!!!!!!!!!
然后wo就開始研究ireport它自己的實例,發現,當我把字體修改為STSong-light的時候,預覽也咩有報錯
,再看看xml文件,發現里面fontName標簽,這樣的話就出現了2個STSong-light,這不是坑爹么,前面的那個完全沒有必要,刪掉,統統刪掉,后面的那個留着.
PDF文件只識別pdfFontName的標簽才對,所以趕緊的批量刪除fontName標簽...然后預覽,發現就ok了~!!!
順便把我的lib下面的文件截圖放上來,希望其他同志能夠吸取本次教訓.
jar包請去maven官網服務器上下載,http://search.maven.org/#search%7Cga%7C1%7Cjasperreports
另附 網上一個解決方案還算靠近的前輩寫的文章,大家去參考下...總有一種方案能解決的,加油.
1.將iTextAsian.jar復制到iReport安裝目錄\ireport\libs下,運行iReport,工具-->選項-->iReport:Classpath中,將iTextAsian.jar包導入。
完成后,在屬性里面設置 Pdf font name: STSong-Light; pdf Encoding =UniGB-UCS2-H;(Pdf Embedded復選框選不選上都一樣),一般的中文字體就可以在pdf中正常顯示了。注意:雖然在iReport3.7中,PDF font name和pdf Encoding兩個屬性已被聲明過時(Deprecated),但實際上還是必須得設置正確,否則編譯任然出錯。
2.項目中還需要用到宋體之外的字體,即黑體和華文新魏(iReport中默認有這些字體,但卻不能用於pdf中,在PDF Font name下就只有STSong-Light可用,而且加粗、斜體等效果在pdf中都無效),則做好上述設置之后,還需要在做如下設置:
1)將要用的字體文件拷貝到 安裝目錄\ireport\fonts 中。
2)工具-->選項-->iReport:Classpath中,將剛才的字體目錄引入。
3)工具-->選項-->iReport:Fonts中,將剛才的字體目錄和包引入。
4)完成后,重啟一下iReport,在文字屬性中的Pdf font name中就可以看到相應的名字,選擇字體后,設置Pdf Embedded打勾和Pdf Encoding為Identity-H(Unicode with horizontal writing),在iReport中預覽(用Adobe pdf Reader預覽)可以看到一切都OK了,iReport配置完畢。
3.用Jasperreport生成報表還有一個問題,項目找不到字體,會一直拋異常,解決方法如下:
1)將剛才iReport中引入的fonts文件夾復制到項目的根目錄下。
2)右鍵點自己項目-Properties-Java Build Path,選Libraries選項卡,點Add Class Folder,選擇剛才復制進來的fonts文件夾,點OK。
最重要的一點,別忘了先確保要安裝的字體在本機上必須先安裝,即把ttf字體文件拷貝到C:\Windows\Fonts目錄下,保證文件名稱都一致即可。
參考文章網址 http://blog.sina.com.cn/s/blog_707036b30100p5ub.html
今天下午從csdn上找到的將字體打包到jar包的辦法,大家看下..
在使用Jasperreports以及iReport設計報表時,導出PDF是一個常見的需求。網上解決PDF導出中文顯示問題相關的文章很多,無非就是設置控件的pdf font name和pdf encoding屬性,但是在4.5中都已經被棄用了(不推薦)。並且原來的解決方案還存在兩個問題:(1)預覽的字體通常不是STSong-Light, 這會導致預覽字體與導出到PDF不一致。(2)當字符串中既有字母又有漢字的時候,導出的PDF可能莫名的換行。本文就介紹一種完美的解決方案,既保持一致性,也不會出現換行問題。
首先,安裝完iReport之后,安裝你想要使用的字體。Windows操作系統下面有各種字體,下面以仿宋的安裝為例。在C:\Windows\Fonts文件夾下找到simfang.ttf仿宋字體文件。選擇iReport菜單:工具->選項(英文應該為Tools->Options) ,在彈出的窗口中選擇Fonts Tab。點擊 Install Font按鈕,選擇剛才找到的仿宋字體文件simfang.ttf,點擊下一步,選擇pdf-encoding為Identity-H (Unicode with horizontal writing),勾選Embed in this font in the PDF document。 點擊完成即可。此時應該可以在控件的font屬性中看到宋體選項,選擇宋體,即可預覽,也可在iReport里面導出PDF。具體的截圖如下:
其次打包字體文件。要在具體的項目中運用剛才設置的字體,需要把字體文件以及Jasperreports配置文件打包為Jar包,並放到classpath中。切換到iReport的安裝目錄,選擇fonts目錄,命令行切換到該目錄,執行命令: jar cf simfang.jar * 。 打包的方式有很多 ,ant,maven等也都可以。把simfang.jar放到項目classpath下面即可。
到此,完成了Jasperreports的個性化字體設置。控件的字體設置為仿宋即可,pdf相關的屬性不用再設置。預覽和PDF導出效果完全一致。
參考網址 : http://blog.csdn.net/kimylrong/article/details/7635407