itext7使用PdfFont,内容包含部分中文(凉)、特殊字符(……、€)时报空指针异常

itext版本:7.1.2

报错时PdfFont使用字体:

//无法识别特殊文字、字符
PdfFont font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", false);

异常信息:

java.lang.NullPointerExceptionat com.itextpdf.kernel.font.PdfType0Font.getCidFontType2(PdfType0Font.java:911)at com.itextpdf.kernel.font.PdfType0Font.flushFontData(PdfType0Font.java:792)at com.itextpdf.kernel.font.PdfType0Font.flush(PdfType0Font.java:583)at com.itextpdf.kernel.pdf.PdfDocument.flushFonts(PdfDocument.java:1949)at com.itextpdf.kernel.pdf.PdfDocument.close(PdfDocument.java:854)

当文本内容中包含:凉、省略号(……)、€时,PdfDocument.close会抛出NullPointerException。其它特殊字符暂时没发现。

解决办法:

指定中文字符:simhei(黑体)、simsun(宋体)

//黑体
PdfFont font = PdfFontFactory.createFont("C:\\Windows\\Fonts\\simhei.ttf", PdfEncodings.IDENTITY_H, false);
//宋体
PdfFont font = PdfFontFactory.createFont("C:\\Windows\\Fonts\\simsun.ttc,1", PdfEncodings.IDENTITY_H, false);

目前只验证了黑体、宋体这两种中文字体可以使用,二选一即可。

其它中文字体是否可以可以自行验证下,也欢迎来评论区反馈一下,感谢。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部