iTextharp - 使用字体

以下从我的ItextSharp介绍中,可以允许您在ASP.NET中使用PDF文件的免费PDF实用程序,本文介绍您创建的PDF文档中的字体。如果你还没有阅读 本系列的第一条文章,我建议你这样做。

ItextSharp为14型字体内置支持:快递,快递大胆,快递斜体,快递大胆,斜体,Helvetica,Helvetica Bold,Helvetica Italic,Helvetica大胆和斜体,时代罗马,时代罗马大胆,时代罗马斜体,时代罗马粗体和斜体,符号,zapfdingbats®。 Helvetica或多或少地转换为Windows Arial字体,而罗马时代在新罗马时代相当。默认字体是Helvetica,12pt,黑色通常称为正常的风格。

设置字体有三种主要方法可以使用:一个是使用 basefont.createfont() 方法,第二个是使用 fontfactory..getfont() 方法,第三个是实例化一个新的 字体 目的。 basefont.createfont() 是有限的更多限制,只能设置字体的定义。 新字体() 允许从一个字体到下一个字体的字体样式偏移。 fontfactory.getfont() 返回有效和新的 字体 您可以直接使用的对象。它还提供14个过载的构造函数,为您提供了更多的选择。因此,您最有可能使用 fontfactory.getfont() 方法。但我们会得到 basefont.createfont() 首先是不可能的。

 

底座 BFTIMES =. 底座.createfont(底座.times_roman, 底座.cp1252, 错误的);

字体 时间= 新的 字体(BFTIMES,12, 字体。意大利, 颜色。红色的);

 

以上行创建一个 底座 对象并使用内置常量值来设置字体系列和编码。它还指定嵌入PDF文档中的字体的FALSE。这会降低文档的整体大小,但如果您使用不太可能在用户系统上的字体,或者您计划获得专业打印的PDF,则应将其设置为TRUE。一个新的 字体 使用该对象使用 底座 对象,并进一步在点,样式和颜色中设置字体大小 - 再次使用ItextSharp的这些值。现在字体在段落中使用:

 

细绳 path = server.mappath(“pdfs”);

文档 doc = 新的 文档();

pdfwriter..getInstance(Doc, 新的 filestream(路径+ “/font.pdf”, filemode.。创造));

doc.oden();

doc.add(新的 段落(“这是使用Times Roman的红色字体测试”,次));

doc.close();

 


结果(如果一切顺利)如下:

现在到fontfactory.getfont()方法。此方法具有14(计数'EM!)过载,允许您从字体系列,大小,颜色,样式,嵌入,编码和缓存中的任何组合中指定任何您喜欢的组合。每次都会打电话 fontfactory.getfont(),一个新的 字体 创建对象。此方法将直接使用itextharp注册的所有字体,其中包括Windows默认字体目录中的所有字体。在Win XP Pro上,通常是C:/ Windows / Fonts。如果您想要所有已注册字体的列表,则 fontfactory.registeredfonts. 收集持有它们。如果要查找每个字体的确切名称,这非常有用。

totalfonts = fontfactory..RegisterDirectory(“C:\\ Windows \\ fonts”);

StringBuilder. SB = 新的 StringBuilder.();

Foreach. (细绳 fontname. fontfactory..registeredfonts)

{

  sb.Append(fontname + “\ n”);

}

doc.add(新的 段落(“所有字体:\ n” + sb.ToString()));

 

这是一种使用的方式 getfont() method:

 

字体 arial = fontfactory..getfont(“arial”, 28, 颜色。灰色的);

字体 Verdana =. fontfactory..getfont(“verdana”, 16, 字体。加粗斜体, 新的 颜色(125,88,15));

字体 Palatino = fontfactory..getfont(

 “Palatino Linotype Italique”,

  底座.cp1252,

  底座.mbedded,

  10,

  字体。意大利,

  颜色。绿色

  );

字体 smallfont =. fontfactory..getfont(“arial”, 7);

字体 X = fontfactory..getfont(“尼娜费特”);

X.Size = 10;

X.SetStyle(“斜体”);

X.SetColor(100,50,200);

 

如您所见,其中一些使用itextharp颜色对象使用常量设置颜色,而其他人则使用 setcolor() 方法和传递RGB值或创建新的 颜色 通过RGB值传递的对象。通常,它们对字体样式使用恒定值,但您可以通过表示其中一个值的int,或使用 setStyle() 方法传入字符串。还有不同数量的参数传递,其中Ilustrules可用的一些不同的过载。 IntelliSense,代码完成,对象浏览器将显示完整的Panoply选项。

注册字体

您可能有一个情况,您无法在Web服务器上的默认字体目录中安装要在Web服务器上的默认字体目录中安装的情况,因此您必须使用Itextharp显式注册它。

 

细绳 fontpath = server.mappath(“。”);

底座 自定义= 底座.createfont(fontpath + “myspecial.ttf”, 底座.cp1252, 底座.mbedded);

字体 字体= 新的 字体(习惯,12);

细绳 S = “我昂贵的自定义字体。”;

doc.add(新的 段落(s,字体));

 

您可能会注意到上面的示例嵌入在PDF文件中(basefont.embedded.),因为您的昂贵字体不太可能存在于用户的操作系统上。