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/
只不過裏面都是全英的 反正我看着是挺費勁的