java pdf 中文字体_iText PDF中文扩展解决方案

本文介绍如何在iText库中解决中文显示问题,通过引入TTF字体文件并利用BaseFont.createFont方法支持华文细黑、雅黑等字体,提升中文排版质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iText自带是不支持中文的,需要引入第三方中文包itext-asian才行,但是在itext-asian中可使用的中文也只有宋体,显示太low,表现形式太差,不能接收。

现通过引入TTF字体文件形式的方式在项目中使用其他字体中文,比如华文细黑、雅黑等等。 关于中文字体可以在windows下的C:/WINDOWS/Fonts下找到。

Linux下,推荐放到字体目录下即可,比如:/usr/share/fonts/

BaseFont bfChinese = BaseFont.createFont(“C:/WINDOWS/Fonts/STXIHEI.TTF”, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

Font font = new Font(bfChinese, 8, Font.BOLD);

另外,参考iText包中的com.itextpdf.text.pdf.BaseFont类,我们发现他的createFont方法可以发现:

if (isBuiltinFonts14 || name.toLowerCase().endsWith(".afm") || name.toLowerCase().endsWith(".pfm")) {

fontBuilt = new Type1Font(name, encoding, embedded, ttfAfm, pfb, forceRead);

fontBuilt.fastWinansi = encoding.equals(CP1252);

}

else if (nameBase.toLowerCase().endsWith(".ttf") || nameBase.toLowerCase().endsWith(".otf") || nameBase.toLowerCase().indexOf(".ttc,") > 0) {

if (encoding.equals(IDENTITY_H) || encoding.equals(IDENTITY_V))

fontBuilt = new TrueTypeFontUnicode(name, encoding, embedded, ttfAfm, forceRead);

else {

fontBuilt = new TrueTypeFont(name, encoding, embedded, ttfAfm, false, forceRead);

fontBuilt.fastWinansi = encoding.equals(CP1252);

}

}

除了TTF字体外,还有其他几种字体文件支持。

ref:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值