携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
前言:使用itext生成PDF的时候,是没有中文字体的,如果我们想在PDF中使用中文字体,需要我们自己进行设置。下面就itext设置中文字体进行说明。
一、itext设置中文字体的三种方式
1、使用Windows系统下的字体
关于怎么获取Windows下的字体,可以找寻路径 C:/WINDOWS/Fonts,里面有各种我们需要的字体,可以个根据需要选取自己需要的字体。 示例:
//使用windows系统下的字体
public void test() {
//windows里的字体资源路径,黑体
String path = "C:/WINDOWS/Fonts/simhei.ttf";
BaseFont font = BaseFont.createFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font font = new Font(font, 10f, Font.NORMAL, BaseColor.BLACK);
}
其中,BaseFont.createFont(String name, String encoding, boolean embedded),name 为字体路径;encoding是字体的编码方式,BaseFont.IDENTITY_H在源码中的意思是:带有垂直书写的Unicode编码;embedded,是个boolean值,如果字体要嵌入到PDF中,则为true。
值得注意的是,Windows系统下的字体有的是.ttf类型,有的是.ttc类型。ttc类型的是组合字体,里面包含了几个字体的集合。若想使用ttc类型的文件,可以打开ttc文件,点击右上角下一个,看看你需要的是第几个字体,在声明字体的时候标注索引就好了。示例如下:
BaseFont font = BaseFont.createFont("C:/WINDOWS/Fonts/simhei.ttc,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //0代表该字体集合里面的第一个
2、使用自己找的字体资源
可以自己找字体文件或者直接把Windows系统里的字体文件粘贴到项目中,然后创建字体的时候使用项目里的路径。示例如下:
//使用自己找的字体资源
public void test() {
//windows里的字体资源路径,黑体
String path = "ceshi/fonts/simhei.ttf"; //自己在项目中字体放置的路径
BaseFont font = BaseFont.createFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font font = new Font(font, 10f, Font.NORMAL, BaseColor.BLACK);
}
3、使用iTextAsian.jar中的字体
iTextAsian.jar是一个itext支持中文的包,我们可以直接使用其中的字体,首先要导入itext-asian 的依赖,在上文有展示,这里就不赘述。具体代码示例如下:
Font font = FontFactory.getFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED,10f, Font.NORMAL, BaseColor.BLACK); //宋体;带有垂直书写的Unicode编码;嵌入PDF;字体大小;字体样式;字体颜色
以上就是使用itext生成PDF时要使用中文字体时可使用的三种方式,个人比较喜欢第二种方式,第三种方式有时会出现不生效的情况,第二种方式只要找到字体文件放到项目中就可以,代码中路径没有写错就不会有什么问题。以上就是全部内容,如果哪里说的有问题,欢迎大家指正。