一步一步 IText.Sharp 中文支持

在初始使用IText.Sharp时,这个组件生成PDF文档,比较简单,默认情况下,它是不支持中文显示的,需要加入第三方的支持才能使用。

一、扩展支持文件下载:

http://sourceforge.net/projects/itextsharp/files/extras/

image

 

下载上图中框中的,就可以:

二、使用方法如下:

   1: BaseFont.AddToResourceSearch("iTextAsian.dll");
   2:                         BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");

注意:文件路径要使用全路径

三、注册中文字体

字体注册是非常方便的,使用如下:

可以使用字体文件,也可以使用字体目录进行批量注册。

注册字体文件:

   1: FontFactory.Register(Environment.GetFolderPath(Environment.SpecialFolder.System) +
   2:                                              @"\..\Fonts\STSONG.ttf");
   3: FontFactory.Register(Environment.GetFolderPath(Environment.SpecialFolder.System) +
   4:                                              @"\..\Fonts\simhei.ttf");
   5: FontFactory.Register(Environment.GetFolderPath(Environment.SpecialFolder.System) +
   6:                                              @"\..\Fonts\simsun.ttc");

注册字体目录方法签名如下:

   1: public static int RegisterDirectory(String dir) 
   2: public static int RegisterDirectory(String dir, bool scanSubdirectories) 

 

演示实例:

   1: static void Main(string[] args)
   2:         {
   3:             BaseFont.AddToResourceSearch("iTextAsian.dll");
   4:             BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
   5:             FontFactory.Register(Environment.GetFolderPath(Environment.SpecialFolder.System) +
   6:                                  @"\..\Fonts\STSONG.ttf");
   7:             FontFactory.Register(Environment.GetFolderPath(Environment.SpecialFolder.System) +
   8:                                  @"\..\Fonts\simhei.ttf");
   9:             FontFactory.Register(Environment.GetFolderPath(Environment.SpecialFolder.System) +
  10:                                  @"\..\Fonts\simsun.ttc");
  11:  
  12:             MemoryStream ms = new MemoryStream();
  13:             Document document = new Document();
  14:             PdfWriter writer = PdfWriter.GetInstance(
  15:   document, new FileStream(string.Format("{0}helloworld.pdf",
  16:                 AppDomain.CurrentDomain.BaseDirectory), FileMode.OpenOrCreate));
  17:             document.Open();
  18:  
  19:             document.Add(new Paragraph("中显示实例",FontFactory.GetFont("华文宋体", BaseFont.IDENTITY_H, 16)));
  20:             writer.CloseStream = false;
  21:             document.Close();
  22:  
  23:         }

执行效果:

image

posted @ 2011-03-30 12:15  cdboy  阅读(5080)  评论(7编辑  收藏  举报