2013-04-19 2 views
5

OK Я разбираю HTML из строки в файл PDFCEll.Использование внешнего Css для разбора XML

Он отлично работает благодаря некоторой помощи здесь.

Вот как я это делаю.

Как я использовать внешний файл CSS, так что я могу использовать класс, а не СТИЛЬ = «»

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); 
     } 
    } 

Теперь я получил это далеко, но как Тая все это уклоняется меня. Любая помощь будет очень полезна.

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); 

ответ

7

Если вы ткнете вокруг source here, и вы должны увидеть, как его реализовать. В принципе, ваш три линии using блок четверок по размеру и сложности:

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

плохо дать, что идти, спасибо за вашу помощь снова. :} –

+1

Еще раз спасибо. работал как сон ... хороший кусок комплекта. –

+0

Как повторить заголовок таблицы, используя этот код –

Смежные вопросы