2013-04-19 15 views
5

OK Parsuję HTML z ciągu znaków do PDFCEll.Użyj zewnętrznego Css do parsowania XML

To działa świetnie dzięki pomocy tutaj.

Oto, jak to robię.

Jak korzystać z zewnętrznego pliku css więc mogę używać klasy, a nie style = „”

public class XhtmlToListHelper : IElementHandler 
{ 
// Generic list of elements 
public List<IElement> elements = new List<IElement>(); 
// Add the item to the list 
public void Add(IWritable w) 
{ 
    if (w is WritableElement) 
    { 
    elements.AddRange(((WritableElement)w).Elements()); 
    } 
} 

    string html = "<ul class=\"list\"><li>html 1</li><li>html 2</li><li>html 3</li></ul>"; 
    using (TextReader sr = new StringReader(html)) 
    { 
     XMLWorkerHelper.GetInstance().ParseXHtml(XhtmlHelper, sr); 
    } 
    foreach (var element in XhtmlHelper.elements) 
    { 
     if (element.IsContent()) 
     { 
      PDFCell.AddElement(element); 
     } 
    } 

Teraz mam tak daleko, ale jak to wszystko w Tye unika mnie. Każda pomoc byłaby bardzo apreacheted.

HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); 
    htmlContext.SetTagFactory(iTextSharp.tool.xml.html.Tags.GetHtmlTagProcessorFactory()); 
    ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); 
    cssResolver.AddCssFile(HttpContext.Current.Server.MapPath("~/Templates/css/core.css"), true); 

Odpowiedz

7

Jeśli grzebać wokół source here i powinieneś zobaczyć, jak je wdrożyć. Zasadniczo, twój trzy linia using blok czterokrotnie w wielkości i złożoności:

var XhtmlHelper = new XhtmlToListHelper(); 
var htmlContext = new HtmlPipelineContext(null); 
htmlContext.SetTagFactory(iTextSharp.tool.xml.html.Tags.GetHtmlTagProcessorFactory()); 
var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); 
cssResolver.AddCssFile(@"c:\test.css", true); 
var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new ElementHandlerPipeline(XhtmlHelper, null)));//Here's where we add our IElementHandler 
var worker = new XMLWorker(pipeline, true); 
var parser = new XMLParser(); 
parser.AddListener(worker); 

using (TextReader sr = new StringReader(html)) { 
    parser.Parse(sr); 
} 
+0

chory dać, że Go, dzięki za pomoc jeszcze raz. :} –

+1

Jeszcze raz dziękuję. pracował jak marzenie ... dobry kawałek zestawu. –

+0

Jak powtórzyć nagłówek tabeli, używając tego kodu –

Powiązane problemy