`

解决利用iText导出PDF报表中文乱码两种方式

 
阅读更多
  一、利用iTextAsian.jar解决中文乱码,iTextAsian.jar提供了对中文字符输出的支持。
   1.itext5.x版本以下的,比如itext2.x,直接导入到classpath目录下就OK了,
     附件中有针对iText5.0以下版本的iTextAsian5down.jar下载。
   
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 12, com.lowagie.text.Font.NORMAL);
Paragraph pragraph=new Paragraph("你好", FontChinese); 


  2.itext5.x版本以上的,直接导入到classpath目录下,会出现无法找到中文字体的问题。主要的原因是iTextAsian.jar的包名:com.lowagie.text.pdf.fonts。而 iText5.x的Font的包名:com.itextpdf.text.pdf.fonts。
iText2.x的相应的包名:com.lowagie.text.pdf.fonts 。
    原来iTextAsian.jar对iText的扩展,是通过在相同的包空间下加入字体来解决的。故将winrar解压下iTextAsian.jar,将包名com.lowagie.text.pdf.fonts修改为com.itextpdf.text.pdf.fonts,再压缩就OK了。
     附件中有针对iText5.0以上版本的iTextAsian5up.jar(已经修改好的了)下载。代码编写和上面的一样。
二、使用自带的字体,字体可以自己下载,也可以使用windows自带的字体 
  		     Document document = new Document();
			PdfWriter.getInstance(document, new FileOutputStream("D:/demo.pdf"));
            //使用windows自带的字体,字体所在路径
			BaseFont chinese = BaseFont.createFont("C:/windows/fonts/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
			Font font = new Font(chinese, 14, Font.NORMAL);
			document.open();
			document.add(new Paragraph("iText中文测试内容", font));
			document.close();

下面附件中中中文简体字体包



2
1
分享到:
评论
1 楼 xchsh12345 2015-08-24  
如果用的是linux服务器呢

相关推荐

Global site tag (gtag.js) - Google Analytics