初学者使用IText.jar生成PDF文件的问题,当文件中有中文输出的时候,都可能会遇到"Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized"的异常。
这两天才接触这个,也遇到了同样的问题。我使用的是IText5.0.6的问题,根据网上找到的资料说缺少itextasian.jar的问题。
楼主根据这篇博客http://blog.csdn.net/wang12/article/details/5661106得到启示,它提供的方法是将itextasian.jar解压后改包名重新打包,然后将jar文件加入到classpath里面,这个方法应该是可以的。根据文章中的分析,我发现的iTextAsian文件结构如下:
iTextAsian
--com
--lowagie
--text
--pdf
--fonts(字体文件)
上述方法会将文件名lowagie改为itextpdf,然后再打包加入classpath。
但是我觉得麻烦啊,还得配置啥环境变量啥的,换个电脑啥的还得重配啊。而且重点是IText.jar也有上的文件结构啊,为什么不能将iTextAsian.jar ...-》fonts下面的文件复制到IText.jar的fonts目录下呢,文件执行的时候找肯定也是先从本项目的jar文件下面先找哇。说干就干,实施步骤如下:
1.分别解压iTextAsian.jar和IText.jar文件
2.找到iTextAsian-》com-》lowagie-》text-》pdf-》fonts下的文件,全部复制,粘贴到iText-5.0.6-》com-》itextpdf-》text-》pdf-》fonts下面
3.压缩iText-5.0.6文件成jar(注意压缩的时候进入iText-5.0.6文件选中里面三个文件添加到压缩文件,改后缀名为.jar,避免直接压缩iText-5.0.6文件夹,默认会再加上一层文件夹,导致jar文件导入后找不到类)
4.替换原有的iText.jar即可
附上自己修改后的iText-5.0.6.jar(点击下载),以后直接导入这一个jar就搞定啦!
接下来纯属扯淡,可以直接忽略:
官方的binary版本还是没直接集成对asian font的解决方案肯定有自己的考虑,但是我们可以根据自己的需要将Asian字体加入到fonts中,分分合合大势所趋嘛,适合自己的就是最好的!!