iText是一个非常出色的生成PDF文件的Java类库,但iText自带的字体对中文不是很支持,所以需要引入自己的字体。
Windows字体非常丰富,只需要将Windows中的中文字体上传到Linux服务器上并生成字体索引,然后引用想要的字体即可。

上传字体

在Windows中找到想要的中文字体(或者把所有的中文字体上传到Linux),右键属性能看到.ttf或.ttc格式的字体名称:
在这里插入图片描述

将Windows字体拷贝到Linux服务器:

# 1.安装字体命令、安装字体索引指令
yum -y install fontconfig
yum install mkfontscale
# 2.查看已安装字体
# (1)查看linux已安装字体
fc-list
# (2)查看linux已安装中文字体
fc-list :lang=zh
# 3.安装中文字体
# (1)创建目录
mkdir -p /usr/share/fonts/my_fonts
# (2)将要安装的字体上传到该文件夹下这里我们安装楷体 常规,即simKai.ttf。
# 关于具体字体查找,我以windows为例。进入C:\Windows\Fonts,该文件夹下就存放相关字体,
# 将simhei.ttf拷贝到linux 目录/usr/share/fonts/my_fonts下即可,如:
cp simKai.ttf /usr/share/fonts/my_fonts
# (3)生成字体索引,进入目录 cd  /usr/share/fonts/my_fonts,执行索引字体生成
mkfontscale
# (4)刷新linux的字体缓存,使其立刻生效
fc-cache -fv
# 4.查看黑体常规字体是否安装成功
fc-list :lang=zh

代码中引用字体

Windows系统下测试:

BaseFont bfKai = BaseFont.createFont("c://windows//fonts//simkai.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font myKai8B = new Font(bfKai, 8, Font.BOLD);

Linux系统字体路径引用:

BaseFont bfKai = BaseFont.createFont("/usr/share/fonts/my_fonts/simkai.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);  //楷体
Font myKai8B = new Font(bfKai, 8, Font.BOLD);

当字体为字体集时需要指定第几个:

BaseFont bfSong = BaseFont.createFont("/usr/share/fonts/my_fonts/simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);  //宋体
Font mySong8B = new Font(bfSong, 8, Font.BOLD);

不同国家字体的选择

itext对不同国家的语言似乎没有提供一个统一的字体,不同国家的语言需要引用本国的字体,如中文需使用simkai.ttf、simsun.ttc等、韩语需使用malgun.ttf、泰语需要用LeelawUI.ttf,怎么找这些字体呢?其实Widows的字体就很全面,直接在C:\Windows\Fonts找对应国家字体即可:
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐