本文共 1725 字,大约阅读时间需要 5 分钟。
总结一下,基本上有三种方法解决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; /** * PDF2Chinese。 * 详细说明:
* * 三种方法解决iText中文问题。 * 修改列表:
*
* 序号 | 作者 | 修改日期 | 修改内容 |
* * 1 | Oliver | 2010-10-8 上午09:40:44 | 建立类型 |
* *
* @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看到中文了!
转载地址:http://athrj.baihongyu.com/