[color=red] [b]一、利用iTextAsian.jar解决中文乱码[/b][/color],iTextAsian.jar提供了对中文字符输出的支持。
[color=brown]1.itext5.x版本以下的,[/color]比如itext2.x,直接导入到classpath目录下就OK了,
附件中有针对iText5.0以下版本的iTextAsian5down.jar下载。
[color=brown]2.itext5.x版本以上的,[/color]直接导入到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(已经修改好的了)下载。代码编写和上面的一样。
[color=red][b]二、使用自带的字体,字体可以自己下载,也可以使用windows自带的字体 [/b][/color]
下面附件中中中文简体字体包
[color=brown]1.itext5.x版本以下的,[/color]比如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);
[color=brown]2.itext5.x版本以上的,[/color]直接导入到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(已经修改好的了)下载。代码编写和上面的一样。
[color=red][b]二、使用自带的字体,字体可以自己下载,也可以使用windows自带的字体 [/b][/color]
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();
下面附件中中中文简体字体包