1.第一种是引用window本地系统字体(这里以常见的宋体为例)
BaseFont bf =BaseFont.createFont("C:/WINDOWS/Fonts/simsun.ttf", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
Font f = new Font(bf,18,Font.NORMAL);
2.第二种是直接根据路径引用项目中字体
String path = getClass().getResource("/").getPath();
if (path.indexOf("WEB-INF/classes") != -1) {
path = path.substring(1, path.indexOf("WEB-INF/classes"));
path = "/"+path + "font/simsun.ttf";
}
BaseFont bf =BaseFont.createFont(path , BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
Font f = new Font(bf,18,Font.NORMAL);
这里可以直接将字体放在项目的classes路径下, 这样直接引用字体名就可以了。
3.第三种直接引用itext字体库中的字体
BaseFont bf =BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
Font f = new Font(bf,18,Font.NORMAL);
这种方法引用基本都是常见字体,像一些韩语或西班牙语字体就没有了 就需要使用上面的方法了
最后再说下相关api的传参作用,举个栗子
BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
第一个参数为字体引用地址,第二个参数为字体编码方式,第三个参数为字体写入方式 我这里的BaseFont.NOT_EMBEDDED这个参数的意思就是不以嵌入式方式写入字体
new Font(bf,18,Font.NORMAL);
第一个参数是字体对象,第二个参数是字体大小,第三个参数是字体样式 这里的Font.NORMAL代表无附加样式,相关api还提供加粗等
no bb 上图
写到这就结束了 如果有错误的话 希望大家指正交流哈 然后这里给大家提供个itextpdf官方的api链接
https://api.itextpdf.com/iText5/java/5.5.9/
只不过里面都是全英的 反正我看着是挺费劲的