iText生成pdf显示中文

原创
2019/12/25 22:12
阅读数 1.4K

最近项目中需要使用iText生成pdf文件,为了支持中文显示,百度了一下,用下面这行代码就可以,应该是iText内置的中文字体吧,实际用了也可行。

PdfFont chineseFont = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", true);

但是接下来就发现,生成pdf时若遇到字符串中包含换行符、tab、生僻字等字符时会报错。为了解决这个问题,我用宋体字体文件simsun.ttf(可自行百度下载)代替内置字体,发现不会报错了。

PdfFont chineseFont = PdfFontFactory.createFont("fonts/simsun.ttf", PdfEncodings.IDENTITY_H, true); //fonts/simsun.ttf为文件地址

虽然用字体文件不会报错,但有一次遇到导出的pdf中“㭎”这个字显示为空白,也就是说使用字体文件遇到识别不了的字符不会报错,但是直接跳过这个字符了。不知道有没有解决这个问题的方法?

另外,我个人倾向于将字体嵌入pdf,也就是PdfFontFactory.createFont()方法的第三个参数设置为true,因为遇到过有用户导出pdf显示异常,字体和间隔都变大,类似全角的效果,怀疑是电脑缺少字体导致的,将字体嵌入pdf中就可以解决这个问题。不过嵌入字体会使得导出的pdf变大,电脑缺字体这种情况基本也只会发生在很旧的电脑上,是否嵌入字体可酌情处理。

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部