現(xiàn)在很多工程里面用到的iText都是2.*版本或者是1.*,而最近新下載的iText是5.0.2版,用iTextAsian.jar以后會(huì)拋一個(gè)“ Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized ”異常出來,按照網(wǎng)上的解決方法,將這個(gè)jar文件中的包名稱修改了一下,然后重新打包了一下,方便大家使用。
iText 5是什么
iText是一個(gè)能夠快速產(chǎn)生PDF文件的java類庫。iText的java類對(duì)于那些要產(chǎn)生包含文本,表格,圖形的只讀文檔是很有用的。它的類庫尤其與java Servlet有很好的給合。使用iText與PDF能夠使你正確的控制Servlet的輸出。
iText5.0解決中文輸出的問題
最近研究PDF的生成,用到了iText。在網(wǎng)上,大多數(shù)人用的都是iText2.1,并且配合iTextAsian.jar來解決中文輸出的問題。
但是,將iTextAsian.jar和iText5.0放在lib目錄下,利用以下語句:
Java代碼
PdfWriter.getInstance(document, new FileOutputStream("123.pdf"));
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
Font fontChinese = new Font(bfChinese);
document.open();
Paragraph par = new Paragraph("你好",fontChinese);
document.add(par);
。。。。。
結(jié)果會(huì)報(bào)錯(cuò)(已經(jīng)解決了,忘了截圖):
大意是:找不到資源包。
可是明明導(dǎo)入了呀?
峰回路轉(zhuǎn):
細(xì)心地查看了一下,iTextAsian.jar的包名:com.lowagie.text.pdf.fonts
而 iText5.0的Font的包名:com.itextpdf.text.pdf.fonts。
又對(duì)比了下iText2.1的相應(yīng)的包名:com.lowagie.text.pdf.fonts
原來iTextAsian.jar對(duì)iText的擴(kuò)展,是通過在相同的包空間下加入字體來解決的,然而,iText5.0的包空間命名與2.1有很大的差別。
解決辦法:
呵呵,在winrar中,簡(jiǎn)單地修改下iTextAsian.jar的包名就可以輸出中文了。具體就是,將lowagie的文件夾重命名為itextpdf。