如何在使用itextsharp </span>将html传递给pdf时在<span>上应用字体属性

时间:2011-11-09 10:57:51

标签: html pdf itextsharp

我正在使用itextsharp将html转换为pdf,我想设置标签的字体大小。我怎么能这样做?

目前我正在使用:

样式表

styles = new StyleSheet();
styles.LoadTagStyle(HtmlTags.SPAN, HtmlTags.FONTSIZE, "9f");
string contents = File.ReadAllText(Server.MapPath("~/PDF TEMPLATES/DeliveryNote.html"));

列表

parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), styles);

但它不起作用。

1 个答案:

答案 0 :(得分:4)

HtmlTags中列出的常量实际上是HTML标签和HTML和CSS属性和值的大杂烩,有时候弄清楚要使用的内容可能有点棘手。

在你的情况下,请尝试HtmlTags.SIZE而不是HtmlTags.FONTSIZE,你应该得到你想要的。

修改

我从来没有真正看过关于什么属性做什么的好教程,我通常只是直接去源代码。例如,在ElementFactory类中有一个名为GetFont()的方法,它显示了如何解析字体信息。具体来说,在line 130(修订版229)上,您会看到HtmlTags.SIZE的使用位置。但是,大小的实际值在ChainedProperties中在名为AdjustFontSize()的方法中进行了解析。如果您查看它,您会看到它首先查找以pt结尾的值,例如12pt。如果它发现那么它会丢弃pt并按字面解析数字。如果它不以pt结尾,则跳转到HtmlUtilities到名为GetIndexedFontSize()的方法。对于相对大小,此方法需要+1-1之类的值,或者对于索引大小,只需要2之类的整数。根据{{​​3}}用户代理应该接受字体大小的值1到7,并将它们映射到逐渐增加的字体大小列表。这意味着您9f的值实际上不是传递给它的有效值,您可能应该传递9pt

无论如何,你有一半在源头跳来走去找出被解析的地方。