原文 【译】在Asp.Net中操作PDF - iTextSharp - 使用字体

紧接着前面我对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()方法:

  1. BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
  2.  
  3. Font times = new Font(bfTimes, 12, Font.ITALIC, Color.RED);

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

  1. string path = Server.MapPath("PDFs");
  2.  
  3. Document doc = new Document();
  4.  
  5. PdfWriter.GetInstance(doc, new FileStream(path + "/Font.pdf", FileMode.Create));
  6.  
  7. doc.Open();
  8.  
  9. doc.Add(new Paragraph("This is a Red Font Test using Times Roman", times));
  10.  
  11. doc.Close();

结果如下:

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

  1. int totalfonts = FontFactory.RegisterDirectory("C:\\WINDOWS\\Fonts");
  2.  
  3. StringBuilder sb = new StringBuilder();
  4.  
  5. foreach (string fontname in FontFactory.RegisteredFonts)
  6.  
  7. {
  8.  
  9. sb.Append(fontname + "\n");
  10.  
  11. }
  12.  
  13. doc.Add(new Paragraph("All Fonts:\n" + sb.ToString()));
  14.  
  15. Font arial = FontFactory.GetFont("Arial", 28, Color.GRAY);
  16.  
  17. Font verdana = FontFactory.GetFont("Verdana", 16, Font.BOLDITALIC, new Color(125, 88, 15));
  18.  
  19. Font palatino = FontFactory.GetFont(
  20.  
  21. "palatino linotype italique",
  22.  
  23. BaseFont.CP1252,
  24.  
  25. BaseFont.EMBEDDED,
  26.  
  27. 10,
  28.  
  29. Font.ITALIC,
  30.  
  31. Color.GREEN
  32.  
  33. );
  34.  
  35. Font smallfont = FontFactory.GetFont("Arial", 7);
  36.  
  37. Font x = FontFactory.GetFont("nina fett");
  38.  
  39. x.Size = 10;
  40.  
  41. x.SetStyle("Italic");
  42.  
  43. x.SetColor(100, 50, 200);

如你所见,上面的一些方法使用iTextSharp的Color对象的constant值来设置字体颜色,还有诸如使用SetColor()方法传入RGB值或是New一个Color对象传入。通常情况下,我们都可以传入int值作为字体风格参数,或者使用SetStyle()方法传入一个字符串。当然,生成Font还有很多种参数传入方式,使用Intellisense或是对象浏览器来查看更确切的参数使用方法.

注册字体

有时候你会遇到在WEB服务器上你没有权限安装字体,这时你必须显示在iTextSharp中注册字体了:

  1. string fontpath = Server.MapPath(".");
  2.  
  3. BaseFont customfont = BaseFont.CreateFont(fontpath + "myspecial.ttf", BaseFont.CP1252, BaseFont.EMBEDDED);
  4.  
  5. Font font = new Font(customfont, 12);
  6.  
  7. string s = "My expensive custom font.";
  8.  
  9. doc.Add(new Paragraph(s, font));

上面代码中你也许会注意到字体文件是嵌入PDF中的(BaseFont.EMBEDDED),因为很多情况下你创建的PDF中的字体在用户的电脑上并不存在。

--------------------------- 原文地址:Create PDFs in ASP.NET - getting started with iTextSharp 
translated by careyson

【译】在Asp.Net中操作PDF - iTextSharp - 使用字体的更多相关文章

  1. 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版

    原文 [译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版 在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵 ...

  2. 【译】在Asp.Net中操作PDF - iTextSharp - 绘制矢量图

    原文 [译]在Asp.Net中操作PDF - iTextSharp - 绘制矢量图 在上一篇iTextSharp文章中讲述了如何将现有的图片插入PDF中并对其进行操作.但有时,你需要在PDF中绘制不依 ...

  3. 【译】在Asp.Net中操作PDF – iTextSharp - 操作图片

    原文 [译]在Asp.Net中操作PDF – iTextSharp - 操作图片 作为我的iTextSharp系列的文章的第七篇,开始探索使用iTextSharp在PDF中操作图片,理解本篇文章需要看 ...

  4. 【译】在Asp.Net中操作PDF – iTextSharp - 使用表格

    原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用表格 使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观.本篇文章并 ...

  5. 【译】在Asp.Net中操作PDF – iTextSharp - 使用链接和书签

    原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用链接和书签 用户和PDF文档的交互可以通过锚(链接)和书签进行,接着我前面iTextSharp的系列文章,本篇文章主要讲通过 ...

  6. 【译】在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本

    原文 [译]在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本 本篇文章是讲述使用iTextSharp这个开源组件的系列文章的第三篇,iTextSharp可以通过As ...

  7. 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版(转)

    [译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版   在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵盖 ...

  8. 在Asp.Net中操作PDF – iTextSharp - 使用表格

    使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观.本篇文章并不会深入探讨表格,仅仅是提供一个使用iTextSharp生成表格的方法介绍 使用i ...

  9. 在Asp.Net中操作PDF – iTextSharp - 操作图片

    iTextSharp支持所有主流的图片格式,比如:jpg, tif, gif, bmp, png和wmf.在iTextSharp中使用Image.GetInstance()方法创建图片有很多种方式,或 ...

随机推荐

  1. Backbone入门教程

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  2. bootstrap固定响应式导航

    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap. ...

  3. 修改SQL Server登录密码(使用SQL Server身份登录)

    修改登录密码: http://blog.sina.com.cn/s/blog_631611220100iqao.html

  4. 软件源(Software Sources)

    写在前面:浏览了很多国内外的网站,看了很多关于软件源(Software Sources)设置的文章,发现有很多文章中对软件源的设置存在误解,为了让新人能顺利进入Ubuntu的大家庭,特地作此文,详细地 ...

  5. jquery 几点注意事项

    jquery触发hover事件 使用 mouseenter/mouseleave/mouseover/mouseout

  6. Java学习笔记51:数组转ArrayList和ArrayList转数组技巧

    ArrayList转数组: public class Test { public static void main(String[] args) { List<String> list = ...

  7. Roseonly:互联网轻奢品牌之路-搜狐IT

    Roseonly:互联网轻奢品牌之路-搜狐IT Roseonly:互联网轻奢品牌之路

  8. MYSQL - 创建数据库时设置编码

    CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE 的语法: CRE ...

  9. CodeForces 450B Jzzhu and Sequences 费波纳茨数列+找规律+负数MOD

    题目:Click here 题意:给定数列满足求f(n)mod(1e9+7). 分析:规律题,找规律,特别注意负数取mod. #include <iostream> #include &l ...

  10. Minimum Window Substring @LeetCode

    不好做的一道题,发现String Algorithm可以出很多很难的题,特别是多指针,DP,数学推导的题.参考了许多资料: http://leetcode.com/2010/11/finding-mi ...