我想使用此GetFont重载:
GetFont(string fontname, string encoding, float size, int style, BaseColor color)
...枚举here。但是,当我尝试时,它没有编译:
var linkFont = FontFactory.GetFont(FontFactory.HELVETICA, 9, Font.Underline, BaseColor.BLUE);
我得到了" 最好的重载方法匹配' iTextSharp.text.FontFactory.GetFont(string,float,int,iTextSharp.text.BaseColor)'有一些无效的论点"
但是哪一个,为什么?
我也明白," 论据3:无法转换为' bool'到' int' "
为什么它认为第三个arg(Font.Underline,一个" int")应该是一个bool?那是布尔;我的意思是,那不是(a)布尔。
注意:我得到同样的错误:
var linkFont = FontFactory.GetFont(FontFactory.HELVETICA, 9.0f, Font.Underline, BaseColor.BLUE);
我该怎么做才能创建一个看起来像链接的字体。我的工作正常,但是:
var linkFont = FontFactory.GetFont(FontFactory.HELVETICA, 9, BaseColor.BLUE);
Anchor anchor = new Anchor("Adobe Reader", linkFont);
anchor.Reference = "http://www.adobe.com";
PdfPTable tbl = new PdfPTable(1);
tbl.WidthPercentage = 50;
tbl.HorizontalAlignment = Element.ALIGN_LEFT;
var par = new Paragraph();
par.Add(boldpart);
par.Add(ini);
par.Add(anchor);
...但是"锚"只是蓝色文字,没有下划线,因此显然不是链接/可点击。
答案 0 :(得分:2)
看起来很正确。但是,当我在我的机器上尝试它时,Font.Underline引发了一个错误。唯一可用的常量是 CAPS
中的字体。 UNDERLINEvar linkFont = FontFactory.GetFont(FontFactory.HELVETICA, 9.0f, Font.UNDERLINE, BaseColor.BLUE);
您可以检查Font类的命名空间。看起来这就是错误所在。它应该来自namespance iTextSharp.text.Font
您使用的是Control.Font.Underline,这是一个bool且不正确。如上所述,使用iTextSharp中的Font类。
答案 1 :(得分:2)
两个问题。
首先,您尝试使用5参数重载,但只传递4个参数。
其次,当您尝试使用Font.Underline
时,您实际上使用的是System.Drawing.Font.Underline
而不是iText。
除非您需要将编码开关指定为:
var linkFont = FontFactory.GetFont(FontFactory.HELVETICA, 9, iTextSharp.text.Font.UNDERLINE, BaseColor.BLUE);
答案 2 :(得分:1)
它认为第三个论点是布尔的原因是因为Font.Underline
是一个布尔!您需要使用FontStyle.Underline
编辑:FontStyle.Underline是System.Drawing.Font.Underline,iTextSharp不使用它。它具有为字体样式定义的常量,应该使用它们:
/// <summary> this is a possible style. </summary>
public const int NORMAL = 0;
/// <summary> this is a possible style. </summary>
public const int BOLD = 1;
/// <summary> this is a possible style. </summary>
public const int ITALIC = 2;
/// <summary> this is a possible style. </summary>
public const int UNDERLINE = 4;
/// <summary> this is a possible style. </summary>
public const int STRIKETHRU = 8;
/// <summary> this is a possible style. </summary>
public const int BOLDITALIC = BOLD | ITALIC;