【译】在Asp.Net中操作PDF

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 05:41 点击:

 

紧接着前面我对iTextSharp简介博文,iTextSharp是一个免费的允许Asp.Net对PDF进行操作的第三方组件。本篇文章讲述如何在你创建的PDF文档中使用各种字体。如果你还没有阅读我的第一篇文章,我强烈推荐你现在就阅读iTextSharp的简介.

 

       iTextSharp默认支持14种字体,分别为:Courier, Courier Bold, Courier Italic, Courier Bold and Italic, Helvetica, Helvetica Bold, Helvetica Italic, Helvetica Bold and Italic, Times Roman, Times Roman Bold, Times Roman Italic, Times Roman Bold and Italic, Symbol, ZapfDingBats®.因为Times Roman已经有了替代品Times New Roman,所以iTextSharp的默认字体为Helvetica, 12pt,黑色,也就是所谓的正常(Normal)字体。

 

       iTextSharp提供了3种主要方式来设置字体:一种是使用BaseFont.CreateFont()方法,第二种方法是使用FontFactory.GetFont()方法。第三种方法是直接生成一个新的Font对象,BaseFont.CreateFont()有很多局限性,表现在仅仅是生成一个新的字体定义。new Font()允许-------------,FontFactory.GetFont()返回一个你可以直接操作的Font对象。并且提供了14种不同的重载来给你提供更多选项,所以通常来说你可能会使用这个方法,但是开始将这个方法之前,让我们先来看一看BaseFont.CreateFont()方法:

 

BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);

 

Font times = new Font(bfTimes, 12, Font.ITALIC, Color.RED);

 

        上面的代码创建了一个BaseFont对象并且使用内置的constant值来设置字体类型和编码类型。在是否将字体嵌入PDF中选择了False以减少PDF的大小.但是如果你的字体在大多数用户的电脑中都没有时,亦或是你打算在专业的印刷设备中印刷出你的pdf时,这项你必须选择为True.使用BaseFont来创建一个新的Font对象,下一行代码进一步从字体大小,字体风格,颜色来设置字体,当然,我们依然使用内置的constant类型值,下面,将上述风格字体加入段落:

 

 

string path = Server.MapPath("PDFs");

 

Document doc = new Document();

 

PdfWriter.GetInstance(doc, new FileStream(path + "/Font.pdf", FileMode.Create));

 

doc.Open();

 

doc.Add(new Paragraph("This is a Red Font Test using Times Roman", times));

 

doc.Close();

 

   结果如下:

 

    

 

 

    现在开始说FontFactory.GetFont()方法,这个方法提供了14种不同的重载来让你对字体的任何方面进行设置,包括:字体,颜色, 风格,是否嵌入,编码以及缓存等.每次你调用FontFactory.GetFont()时都会返回一个新的对象.这个方法对于字体的设置可以对任何在iTextSharp中注册的字体进行生效。在iTextSharp中注册的字体包括windows字体的默认目录,在WIN XP下,这个目录一般为”C:/WINDOWS/Fonts”,如果你想知道哪些字体在iTextSharp中已注册,FontFactory.RegisteredFonts将会告诉你答案,查看这个列表对于我们想获得确切的字体名称尤为重要:

 

  

 

int totalfonts = FontFactory.RegisterDirectory("C:\\WINDOWS\\Fonts");

 

StringBuilder sb = new StringBuilder();

 

foreach (string fontname in FontFactory.RegisteredFonts)

 

{

 

  sb.Append(fontname + "\n");

 

}

 

doc.Add(new Paragraph("All Fonts:\n" + sb.ToString()));

 

 

 

 

 

 

 

Font arial = FontFactory.GetFont("Arial", 28, Color.GRAY);

 

Font verdana = FontFactory.GetFont("Verdana", 16, Font.BOLDITALIC, new Color(125, 88, 15));

 

Font palatino = FontFactory.GetFont(

 

 "palatino linotype italique",

 

  BaseFont.CP1252,

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • C#高级编程:数据库连接[1]
    • asp.net 设置GridView的选中行的实现代码
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET GridView列表代码示例
    • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1