使用itext工具类生成PDF文档后,在iphone上下载完预览,无论是英文、中文、数字,统统是乱码。但是其它不是由我的程序生成的但和我生成的PDF在一体上的(就是一部分是我生成的,另一部分是由程序拼接上去的)PDF在iphone上显示都是正常的。所以问题排除了文件编码的问题,也排除了苹果不支持中文的问题。那来再通过各种调试发现是字体库的问题。代码如下:
bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
就是前两个参数的问题!!!
第一个STSong-Light表示itext内部默认的中文字体库,其实就是itextAsian这个jar包下的一个properties文件名,即itext的jar包里自带的一个文件。第二个UniGB-UCS2-H是第一个参数指向的字库文件对应的横排字库。还有一个竖排的,把H换成V就是了,这里不讨论。
后来我在我自己本地机器上的字库里一个一个找对应的中文简体字体库,看哪一个可以在iphone里可以正常显示,就是一遍遍用不同的字体的打印PDF,然后放到iphone上看一下是不是显示正常。后来找到了一个各原来字体相近的华文宋体,然后把代码改成了如下这样:
bfChinese = BaseFont.createFont("C:\\windows\\fonts\\STSONG.TTF