iText PDF中文擴展解決方案

iText自帶是不支持中文的,須要引入第三方中文包itext-asian才行,可是在itext-asian中可以使用的中文也只有宋體,顯示太low,表現形式太差,不能接收。html

現經過引入TTF字體文件形式的方式在項目中使用其餘字體中文,好比華文細黑、雅黑等等。 關於中文字體能夠在windows下的C:/WINDOWS/Fonts下找到windows

Linux下,推薦放到字體目錄下便可,好比:/usr/share/fonts/字體

BaseFont bfChinese = BaseFont.createFont(「C:/WINDOWS/Fonts/STXIHEI.TTF」, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font font = new Font(bfChinese, 8, Font.BOLD);

另外,參考iText包中的com.itextpdf.text.pdf.BaseFont類,咱們發現他的createFont方法能夠發現:ui

if (isBuiltinFonts14 || name.toLowerCase().endsWith(".afm") || name.toLowerCase().endsWith(".pfm")) {
            fontBuilt = new Type1Font(name, encoding, embedded, ttfAfm, pfb, forceRead);
            fontBuilt.fastWinansi = encoding.equals(CP1252);
        }
        else if (nameBase.toLowerCase().endsWith(".ttf") || nameBase.toLowerCase().endsWith(".otf") || nameBase.toLowerCase().indexOf(".ttc,") > 0) {
            if (encoding.equals(IDENTITY_H) || encoding.equals(IDENTITY_V))
                fontBuilt = new TrueTypeFontUnicode(name, encoding, embedded, ttfAfm, forceRead);
            else {
                fontBuilt = new TrueTypeFont(name, encoding, embedded, ttfAfm, false, forceRead);
                fontBuilt.fastWinansi = encoding.equals(CP1252);
            }
        }

除了TTF字體外,還有其餘幾種字體文件支持。.net

ref:code

https://my.oschina.net/mobinchao/blog/524112htm

<<iText in Action 2nd>>讀書筆記彙總blog

相關文章
相關標籤/搜索