使用itextpdf時,默認的字體沒有中文,總結了一下使用中文字體的方式。html
一、使用windows系統下的字體,該種方式的具體操做能夠看另外一篇博客:https://www.cnblogs.com/whalesea/p/11714681.htmljava
二、使用本身的字體資源,能夠是在別的地方下載的資源,也能夠是吧windows的字體資源複製到項目內使用。windows
三、使用iTextAsian.jar中的字體,這是一個itext支持中文的包,能夠使用其中字體。該包在有個問題常常會致使報錯,具體緣由大體爲:在itext5.x版本對font和encoding文件都是從 RESOURCE_PATH = 「com/itextpdf/text/pdf/fonts/」加載的,而itextasian1.5.x.jar的包名是com.lowagie.text.pdf.fonts, 包名不一致,致使路徑錯誤測試
下面是統一的代碼演示:字體
package dbzx.pdf; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.junit.Test; import com.itextpdf.text.BaseColor; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Font; import com.itextpdf.text.FontFactory; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfWriter; public class FontTest { /** * 生成pdf文件 */ public void createPdf(Font font) throws FileNotFoundException, DocumentException { String path = "E:/demo/pdfCreat/"+System.currentTimeMillis()+".pdf"; File file = new File(path); file.getParentFile().mkdirs(); Document doc = new Document(PageSize.A4); PdfWriter.getInstance(doc, new FileOutputStream(file)); doc.open(); doc.add(new Paragraph("字體測試",font)); doc.close(); } @Test /** * 使用windows系統下的字體,new Font方式 */ public void test1_1() throws DocumentException, IOException { String path = "C:/WINDOWS/Fonts/simhei.ttf";//windows裏的字體資源路徑 BaseFont bf = BaseFont.createFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font font = new Font(bf, 10f, Font.NORMAL, BaseColor.BLACK); createPdf(font); } @Test /** * 使用windows系統下的字體,FontFactory方式 */ public void test1_2() throws DocumentException, IOException { String path = "C:/WINDOWS/Fonts/simhei.ttf";//windows裏的字體資源路徑 Font font = FontFactory.getFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED,10f, Font.NORMAL, BaseColor.BLACK); createPdf(font); } @Test /** * 使用本身查找的字體,FontFactory方式 */ public void test2() throws DocumentException, IOException { String path = "src/main/resources/file/pdf/font/SIMYOU.TTF";//本身的字體資源路徑 Font font = FontFactory.getFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED,10f, Font.NORMAL, BaseColor.BLACK); createPdf(font); } /** * 使用iTextAsian.jar中的字體,FontFactory方式 */ @Test public void test3() throws DocumentException, IOException { Font font = FontFactory.getFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED,10f, Font.NORMAL, BaseColor.BLACK); createPdf(font); } }