使用Itextsharp为div内的图像加载样式

时间:2014-07-09 11:36:11

标签: c# html itextsharp

我正在尝试使用itextSharp将html页面转换为pdf文件但我在为图像指定css样式时遇到问题

示例:

<body>
...
<div class='ticketFont2'><img src='example.png' /></div>
...
</div>

我试图这样做

styles.LoadTagStyle("img ticketFont2", "width", "30px");

我实际上可以用css .ticketFont2 img { width:30px }这样写的内容 但它没有用。 我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:1)

LoadTagStyleHTMLWorker的一部分,尽管看起来应该是类似的,但它并不真正支持CSS。您可以使用基本的HTML属性以及基于类的定位以及相关的内容。这就是为什么HTMLWorker 已被弃用以支持XMLWorker的原因,我们鼓励您切换到这一点。

使用HTMLWorker,您可以执行非常简单和广泛的HTML标记定位:

//Set all IMG tags to be 100 pixels wide
styles.LoadTagStyle(iTextSharp.text.html.HtmlTags.IMG, iTextSharp.text.html.HtmlTags.WIDTH, "100px");

您也可以进行基于类的定位,但只能定位类属性的全部内容。

//Change the width of all elements that have the exact (not contains) class of myimage
var html = "<img class='myimage' src='...' />";
styles.LoadStyle("myimage", iTextSharp.text.html.HtmlTags.WIDTH, "100px");

不会工作:

var html = "<img class='myimage tickets' src='...' />";
styles.LoadStyle("myimage", iTextSharp.text.html.HtmlTags.WIDTH, "100px");

使用LoadTagStyleLoadStyle时,如果您无法在iTextSharp.text.html.HtmlTags中找到HTML标记或属性,那么iTextSharp就不会知道它并且它不会工作。此外,请确保您的HTML中没有<hr/>个标记,HTMLWorker也不喜欢这些标记。如果您可以忍受这些限制,那么HTMLWorker可能适合您,但它不再维护,已经超过5年了。就像我说的那样,你应该考虑XMLWorker