itextpdf使用中文字體的三種方式


使用itextpdf時,默認的字體沒有中文,總結了一下使用中文字體的方式。

1、使用windows系統下的字體,該種方式的具體操作可以看另一篇博客:https://www.cnblogs.com/whalesea/p/11714681.html

2、使用自己的字體資源,可以是在別的地方下載的資源,也可以是吧windows的字體資源復制到項目內使用。

3、使用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);
    }
    
    
    
    
    
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM