itextpdf 5.5.6版本生成pdf文件 字体设置三种方式

时间:2024-03-17 22:12:43

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 5.5.6版本生成pdf文件 字体设置三种方式

写到这就结束了 如果有错误的话 希望大家指正交流哈 然后这里给大家提供个itextpdf官方的api链接

https://api.itextpdf.com/iText5/java/5.5.9/

只不过里面都是全英的 反正我看着是挺费劲的