如何使用iTextSharp设置PDF段落的字体?

时间:2015-04-08 17:34:37

标签: c# pdf fonts itextsharp

尝试按照示例here,我添加了以下代码来创建PDF文档的标题:

using (var doc = new Document(PageSize.A4, 50, 50, 25, 25))
{
    using (var writer = PdfWriter.GetInstance(doc, ms))
    {
        doc.Open();

        var docTitle = new Paragraph("UCSC Direct - Direct Payment Form");                        
        var titleFont = FontFactory.GetFont("Lucida Sans", 18, Font.Bold);
        doc.Add(docTitle);

然而,创建titleFont的尝试不会编译(" 最好的重载方法匹配' iTextSharp.text.FontFactory.GetFont(string,float,iTextSharp.text。 BaseColor)'有一些无效的参数"),所以我让intellisenseless" help"我一次加一个arg。因为对于第一个arg它说它是字体名称,一个字符串,我添加了" Segoe UI&#34 ;;下一个arg是字体大小,浮点数,所以我加了18.0;最后,它调用了字体颜色,一个BaseColor类型,所以我添加了BaseColor.Black,结尾为:

var titleFont = FontFactory.GetFont("Segoe UI", 18.0, BaseColor.BLACK);

...但这也不会编译,说" 最好的重载方法匹配' iTextSharp.text.FontFactory.GetFont(string,string,bool)&# 39;有一些无效的论点"

因此,当我复制示例并使用string,int和Font样式时,它说不,它需要string,float和BaseColor。当我然后添加这些论点时,它改变了它的#34; mind"并说它真正想要的是字符串,字符串和布尔?

此外,该示例显示然后将段落添加到文档中,如下所示:

doc.Add(docTitle, titleFont);

...但是,它也不会飞,因为" 没有超载的方法'添加'需要2个参数"

如何安抚iTextSharp?无论我是跳舞还是吟唱挽歌,它都不想玩。

更新

好的,这可以编译:

var docTitle = new Paragraph("UCSC Direct - Direct Payment Form");
var titleFont = FontFactory.GetFont("Courier", 18, BaseColor.BLACK);
docTitle.Font = titleFont;
doc.Add(docTitle);

1 个答案:

答案 0 :(得分:14)

GetFont14 possible overloads currently

public static Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color)
public static Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color, bool cached)
public static Font GetFont(string fontname, string encoding, bool embedded, float size, int style)
public static Font GetFont(string fontname, string encoding, bool embedded, float size)
public static Font GetFont(string fontname, string encoding, bool embedded)
public static Font GetFont(string fontname, string encoding, float size, int style, BaseColor color)
public static Font GetFont(string fontname, string encoding, float size, int style)
public static Font GetFont(string fontname, string encoding, float size)
public static Font GetFont(string fontname, string encoding)
public static Font GetFont(string fontname, float size, int style, BaseColor color)
public static Font GetFont(string fontname, float size, BaseColor color)
public static Font GetFont(string fontname, float size, int style)
public static Font GetFont(string fontname, float size)
public static Font GetFont(string fontname)

步骤#1,选择哪一个最适合你。

下面一行不起作用的原因:

FontFactory.GetFont("Segoe UI", 18.0, BaseColor.BLACK);

如果because per the c# spec没有后缀,18.0会被解释为双精度,因为没有重载.Net是将其转换为字符串的字符串。

FontFactory.GetFont("Segoe UI", 18.0f, BaseColor.BLACK)

对于段落本身,您既可以在构造函数中设置字体,也可以设置段落的Font属性,任何一个都可以。

var p1 = new Paragraph("Hello", myFont);

var p2 = new Paragraph();
p2.Font = myFont;
p2.Add("Hello")