我正在使用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);
但它不起作用。
答案 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
。
无论如何,你有一半在源头跳来走去找出被解析的地方。