C# 如何设置PDF段落';使用iTextSharp的字体是什么?

C# 如何设置PDF段落';使用iTextSharp的字体是什么?,c#,pdf,fonts,itextsharp,C#,Pdf,Fonts,Itextsharp,为了遵循示例,我添加了以下代码来创建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");

为了遵循示例,我添加了以下代码来创建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)'匹配的最佳重载方法具有一些无效参数”),因此我让IntelliSense通过一次添加一个参数来“帮助”我。因为第一个参数是字体名,一个字符串,我加了“SegoeUI”;下一个参数是字体大小,一个浮点数,所以我添加了18.0;最后,它调用了字体颜色,一种基色类型,因此我添加了BaseColor.Black,结果是:

var titleFont = FontFactory.GetFont("Segoe UI", 18.0, BaseColor.BLACK);
…但这也无法编译,因为“与'iTextSharp.text.FontFactory.GetFont(string,string,bool)'匹配的最佳重载方法具有一些无效参数”

所以,当我复制这个示例,并使用字符串、int和字体样式时,它说不,它需要字符串、浮点和基色。当我添加这些参数时,它改变了“想法”,说它真正想要的是字符串、字符串和bool

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

doc.Add(docTitle, titleFont);
…但这也不会飞,因为“方法'Add'的无重载包含2个参数”

我能做些什么来安抚它?不管我是跳吉格舞还是唱挽歌,它都不想跟着我玩

更新 好,这个编译:

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

因此,第一步,选择最适合你的

以下行不起作用的原因:

FontFactory.GetFont("Segoe UI", 18.0, BaseColor.BLACK);
如果没有后缀,
18.0
被解释为一个double,并且由于没有重载,因此.Net是string来将其转换为字符串

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")

您需要在段落的构造函数中设置字体,而不是在文档中设置字体。至于GetFont方法,我认为您只是缺少了color参数。瞧,用黑体字和黑体字,而不是一个或另一个。相关的,也许是被愚弄的感谢,克里斯;顺便说一句,我看到你住在拉克罗斯;我在Brookfield和Oconomowoc住了15年。这个答案用词不太恰当。18.0永远不会在C#中自动转换为字符串。在C#中,数字被隐式转换为字符串的唯一时间是使用字符串
+
运算符,这里没有使用该运算符。所发生的是重载解析选择它认为最接近的重载并失败,因为类型不匹配。
var p1 = new Paragraph("Hello", myFont);

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