相信用過itext的朋友都知道,中文顯示一直都是個問題(最新版5.5.7官方也沒直接集成中文字體)。 java
固然這樣的問題,早就有高手解決了,那就是使用iTextAsian.jar。 測試
可是本文介紹的,不是使用iTextAsian.jar,而是另外一種解決方法。 字體
在此以前,須要準備的僅僅爲itextpdf-5.x.jar 和一個 ttf格式的中文字體。好比咱們經常使用的宋體simsun.ttf。 spa
咱們首先要作的,就是將simsun.ttf集成到咱們的項目中: code
測試例子: get
package com.example.itext; import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.text.Chunk; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Font; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Phrase; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfWriter; public class Demo1 { //自定義中文字體位置 private static final String fontPath = "/com/example/itext/simsun.ttf"; private static final String cfontPath = "/com/example/itext/dnmbxs.ttf"; public static void main(String[] args) throws DocumentException, IOException { //建立基礎字體 BaseFont bf = BaseFont.createFont(fontPath,BaseFont.IDENTITY_H,BaseFont.EMBEDDED); //自定義字體屬性 Font font = new Font(bf,30); Document document = new Document(PageSize.A4.rotate()); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("test_cn.pdf")); writer.setPdfVersion(PdfWriter.PDF_VERSION_1_7); //Make document tagged writer.setTagged(); //=============== writer.setViewerPreferences(PdfWriter.DisplayDocTitle); document.addTitle("中文測試"); writer.createXmpMetadata(); //===================== document.open(); Paragraph p = new Paragraph(); //Embed font p.setFont(font); //================== Chunk c = new Chunk("中文測試"); p.add(c); document.add(p); BaseFont cbf = BaseFont.createFont(cfontPath,BaseFont.IDENTITY_H,BaseFont.EMBEDDED); Font cfont = new Font(cbf,64); Phrase ph = new Phrase("中文測試",cfont); document.add(ph); document.close(); } }
其實看看BaseFont的實現,就會發現,iText還支持其餘4種字體: it
而ttf是咱們最多見的字體。 io