iText7使用PdfFont遇特殊字符如‘凉’字报空指针,中文打印乱码问题--最终解决方案!!

首先看原来的代码:
PdfFont font = PdfFontFactory.createFont(“STSongStd-Light”, “UniGB-UCS2-H”, true);

遇到凉字跟特殊字符会空指针异常.,具体如下。

java.lang.NullPointerException
    at com.itextpdf.kernel.font.PdfType0Font.getCidFontType2(PdfType0Font.java:720)
    at com.itextpdf.kernel.font.PdfType0Font.flushFontData(PdfType0Font.java:808)
    at com.itextpdf.kernel.font.PdfType0Font.flush(PdfType0Font.java:597)
    at com.itextpdf.kernel.pdf.PdfDocument.flushFonts(PdfDocument.java:1794)
    at com.itextpdf.kernel.pdf.PdfDocument.close(PdfDocument.java:792)
    at com.itextpdf.layout.Document.close(Document.java:120)
    at com.gsafety.plan.module.util.Testp.main(Testp.java:26)

解决方案:

把本地项目中的中文字体ttf文件拷贝到项目中,然后去读取此文件,本地中文字体在c://windows//fonts//目录下,

我这边测试用的是仿宋字体,情况如下:

原来代码改为:

PdfFont font = PdfFontFactory.create

你可能感兴趣的:(iText7使用PdfFont遇特殊字符如‘凉’字报空指针,中文打印乱码问题--最终解决方案!!)