總結一下,基本上有三種方法解決iText顯示中文問題。
方法一:使用Windows系統字型(TrueType)
方法二:使用iTextAsian.jar中的字型
方法三:使用資源字型(ClassPath)
由於比較簡單,直接上代碼了。
package oliver.itext.demo; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Font; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfWriter; /** * <b>PDF2Chinese。</b> * <p><b>詳細說明:</b></p> * <!-- 在此添加詳細說明 --> * 三種方法解決iText中文問題。 * <p><b>修改列表:</b></p> * <table width="100%" cellSpacing=1 cellPadding=3 border=1> * <tr bgcolor="#CCCCFF"><td>序號</td><td>作者</td><td>修改日期</td><td>修改內容</td></tr> * <!-- 在此添加修改列表,參考第一行內容 --> * <tr><td>1</td><td>Oliver</td><td>2010-10-8 上午09:40:44</td><td>建立類型</td></tr> * * </table> * @version 1.0 * @author Oliver * @since 1.0 */ public class PDF2Chinese { public static void main(String[] args) throws DocumentException, IOException { Document document = new Document(); OutputStream os = new FileOutputStream(new File("chinese.pdf")); PdfWriter.getInstance(document,os); document.open(); //方法一:使用Windows系統字型(TrueType) BaseFont baseFont = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); //方法二:使用iTextAsian.jar中的字型 //BaseFont baseFont = BaseFont.createFont("STSong-Light",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); //方法三:使用資源字型(ClassPath) ////BaseFont baseFont = BaseFont.createFont("/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); Font font = new Font(baseFont); document.add(new Paragraph("解決中文問題了!",font)); document.close(); } }
好了,現在可以開啟產生的chinese.pdf看到中文了!