我iTextSharp用于将HTML页面转换为PDF。我正在使用这里提供的帮助程序类,并且还尝试了使用StyleSheet.LoadTagStyle()CSS。但是似乎没有任何作用。有什么见解吗?
iTextSharp
HTML
PDF
StyleSheet.LoadTagStyle()
编辑
我可以添加这样的样式-
.mystyle { color: red; width: 400px; }
使用以下代码-
StyleSheet css = new StyleSheet(); css.LoadStyle("mystyle", "color", "red"); css.LoadStyle("mystyle", "width", "400px");
但是,当我拥有复杂的样式时会发生什么?
div .myclass { /*some styles*/ } td a.hover { /*some styles*/ } td .myclass2 { /*some styles*/ } .myclass .myinnerclass { /*some styles*/ }
如何使用iTextSharp添加它?
使用StyleSheet.LoadTagStyle()使您处在正确的轨道上。
基本上,这是一个四步过程:
这是一个简单的HTTP处理程序:
<%@ WebHandler Language='C#' Class='styles' %> using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Web; using iTextSharp.text.html; using iTextSharp.text.html.simpleparser; using iTextSharp.text; using iTextSharp.text.pdf; public class styles : IHttpHandler { public void ProcessRequest (HttpContext context) { HttpResponse Response = context.Response; Response.ContentType = "application/pdf"; string Html = @" <h1>h1</h1> <p>A paragraph</p> <ul> <li>one</li> <li>two</li> <li>three</li> </ul>"; StyleSheet styles = new StyleSheet(); styles.LoadTagStyle(HtmlTags.H1, HtmlTags.FONTSIZE, "16"); styles.LoadTagStyle(HtmlTags.P, HtmlTags.FONTSIZE, "10"); styles.LoadTagStyle(HtmlTags.P, HtmlTags.COLOR, "#ff0000"); styles.LoadTagStyle(HtmlTags.UL, HtmlTags.INDENT, "10"); styles.LoadTagStyle(HtmlTags.LI, HtmlTags.LEADING, "16"); using (Document document = new Document()) { PdfWriter.GetInstance(document, Response.OutputStream); document.Open(); List<IElement> objects = HTMLWorker.ParseToList( new StringReader(Html), styles ); foreach (IElement element in objects) { document.Add(element); } } } public bool IsReusable { get { return false; } } }
您需要版本5.0.6才能运行上面的代码。对解析HTML的支持已大大改善。