itext 生成PDF文档后,iphone显示乱码,我是这样解决的。
来源:互联网 发布:ubuntu 软件安装 编辑:程序博客网 时间:2024/05/21 15:32
使用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", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
注意,这两个参数都换了。
C:\\windows\\fonts\\STSONG.TTF上边这个就是我本机器上的字库目录
BaseFont.IDENTITY_H上边这个就是itext对我本地那个字体库的支持配置。
后来发现不能这么干,因为我们的生产和测试环境都是在linux服务器上。我就把字库拷出来,然后放到我的工程目录里,把代码换成了:
bfChinese = BaseFont.createFont("com/utility/STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);就可以了。
0 0
- itext 生成PDF文档后,iphone显示乱码,我是这样解决的。
- itext 生成pdf文档
- itext 生成pdf文档
- itext生成pdf文档
- springMVC中itext生成PDF,根本上解决中文乱码以及不显示问题
- iText生成PDF文件(解决了中文乱码)
- 使用iText生成pdf文档
- 利用iText生成PDF文档
- iText生成PDF图片文档
- itext生成只读pdf文档
- itext生成只读pdf文档
- 利用itext生成pdf文档
- java使用iText生成pdf文档的对齐方式
- Android用itext生成含中文的PDF文档
- Java 使用 iText动态生成PDF文档
- 使用 iText动态生成PDF文档
- 使用itext生成PDF文档入门
- 利用IText生成word、pdf文档
- pip缓存下载的包文件
- 在Windows中安装 HTCondor
- nyoj 618 追击【理解题意】
- 学习GitHub的第一周笔记
- Random_QuickSort
- itext 生成PDF文档后,iphone显示乱码,我是这样解决的。
- 文件解压缩
- PLSQL DEVELOPER 使用的一些技巧【转】
- 一对多关系修改为多对多关系
- Android Studio多渠道打包和代码混淆教程
- Spring HandlerInterceptor的使用
- OpenMP
- java compiler level does not match the version of the installed java project facet 解决方法
- MarkDown30分钟入门教程