我正在尝试使用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 }
这样写的内容
但它没有用。
我在这里遗漏了什么?
答案 0 :(得分:1)
LoadTagStyle
是HTMLWorker
的一部分,尽管看起来应该是类似的,但它并不真正支持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");
使用LoadTagStyle
和LoadStyle
时,如果您无法在iTextSharp.text.html.HtmlTags
中找到HTML标记或属性,那么iTextSharp就不会知道它并且它不会工作。此外,请确保您的HTML中没有<hr/>
个标记,HTMLWorker
也不喜欢这些标记。如果您可以忍受这些限制,那么HTMLWorker
可能适合您,但它不再维护,已经超过5年了。就像我说的那样,你应该考虑XMLWorker
。