2013-04-19 7 views
5

OK tôi đang phân tích HTML từ chuỗi thành PDFCEll.Sử dụng Css bên ngoài để phân tích cú pháp XML

Nó hoạt động tốt nhờ một số trợ giúp từ đây.

Đây là cách tôi đang thực hiện.

Làm thế nào để tôi sử dụng một tập tin css bên ngoài vì vậy tôi có thể sử dụng lớp và không 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); 
     } 
    } 

Bây giờ tôi đã có này, nhưng làm thế nào để Tye nó tất cả trong trốn tránh tôi. Bất kỳ sự giúp đỡ nào cũng sẽ được nhiều người vi phạm.

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

Trả lời

7

Nếu bạn poke xung quanh source here và bạn sẽ thấy cách triển khai. Về cơ bản, ba khối đường gồm using của bạn có kích thước và độ phức tạp gấp bốn lần:

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

không cho phép bạn đi lại, nhờ sự giúp đỡ của bạn lần nữa. :} –

+1

Cảm ơn bạn rất nhiều lần nữa. làm việc như một giấc mơ ... bộ đồ tốt. –

+0

Cách lặp lại tiêu đề bảng bằng mã này –