原文 【译】在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()方法:

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, 

  BaseFont.EMBEDDED, 

  10, 

  Font.ITALIC, 

  Color.GREEN

  );

Font smallfont = FontFactory.GetFont("Arial", 7);

Font x = FontFactory.GetFont("nina fett");

x.Size = 10;

x.SetStyle("Italic");

x.SetColor(100, 50, 200);

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

注册字体

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

string fontpath = Server.MapPath(".");

BaseFont customfont = BaseFont.CreateFont(fontpath + "myspecial.ttf", BaseFont.CP1252, BaseFont.EMBEDDED);

Font font = new Font(customfont, 12);

string s = "My expensive custom font.";

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. Web开发者的10个最好的云开发环境

    1. Cloud9 IDE cloud9 Cloud9是我最喜欢的一个最好的云开发环境,它可以让我在任何时间任何地点进行代码编写.运行和调试.Cloud9对Node.js 和 JavaScript代码 ...

  2. 在Tableau中自定义版块地图 (Polygon)

    在Tableau的地图报表中有一个‘Filed Map’的类型,可以根据版块来显示数据. 但实际应用中Tableau固有的版块划分可能不是我们想要的,下面介绍如何自定义版块并且用作数据分析. 自定义版 ...

  3. Spring boot实现数据库读写分离

    背景 数据库配置主从之后,如何在代码层面实现读写分离? 用户自定义设置数据库路由 Spring boot提供了AbstractRoutingDataSource根据用户定义的规则选择当前的数据库,这样 ...

  4. Xcode Could not load NIB 的一个问题解决

    # Could not load NIB 的一个问题 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pr ...

  5. NSUserDefaults概述

    原创,转载请注明原文:NSUserDefaults概述  By Lucio.Yang 首先,iOS中有四种存储数据的方式-对比iOS中的四种数据存储 NSUserDefaults是其中很常用的一种.N ...

  6. 怎样在VC里面使用graphics.h绘图

    网上很多绘图程序和小游戏程序都是用的 TC,在 VC 下编译时提示错误:fatal error C1083: Cannot open include file: 'graphics.h': No su ...

  7. FPGA知识大梳理(三)verilogHDL语法入门(2)知识汇总

    1,时序逻辑.将上次的练习修改成时序逻辑会如何设计. always @ (posedge clock) 2,block 与unblocking  A,有clock的always中通常使用nonbloc ...

  8. ORA-00845 Oracle 启不来修改 MEMORY_TARGET

    1.内存减小导致Oracle启动不了   Last login: Sun Nov  4 15:09:06 2012 from 192.168.5.222  [oracle@h1 ~]$ sqlplus ...

  9. 【Eclipse】修改项目访问名称

    Properties --> Web Project Settings --> Context root --> 输入想要用的名称(默认是项目名)

  10. 使用ActionBar实现Tab导航(快速生成Tab样式)

    效果如图: MainActivity.java具体实现: package com.rainmer.actionbartab; import android.app.ActionBar; import ...