【发布时间】:2015-06-13 19:35:34
【问题描述】:
尝试遵循示例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)'的最佳重载方法匹配有一些无效参数"),所以我通过一次添加一个 arg 让智能感知“帮助”我。因为对于第一个参数它说它是字体名称,一个字符串,所以我添加了“Segoe UI”;下一个参数是字体大小,一个浮点数,所以我添加了 18.0;最后,它调用了字体颜色,一个BaseColor类型,所以我添加了BaseColor.Black,最后是:
var titleFont = FontFactory.GetFont("Segoe UI", 18.0, BaseColor.BLACK);
...但这也不会编译,说“'iTextSharp.text.FontFactory.GetFont(string, string, bool)' 的最佳重载方法匹配有一些无效参数”
所以当我复制示例并使用 string、int 和 Font 样式时,它说不,它需要 string、float 和 BaseColor。然后当我添加这些参数时,它改变了它的“想法”并说它真正想要的是字符串、字符串和布尔值?
此外,该示例显示然后将段落添加到文档中,如下所示:
doc.Add(docTitle, titleFont);
...但这也行不通,因为“'Add' 方法没有重载需要 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);
【问题讨论】:
-
您需要在段落的构造函数中设置字体,而不是在文档中。至于 GetFont 方法,我认为您只是缺少颜色参数。 IOW,请同时使用粗体和黑色,而不是仅使用其中一种。
标签: c# pdf fonts itextsharp