2013-04-19 4 views
5

OK J'analyse le code HTML d'une chaîne dans un fichier PDFCEll.Utilisation de Css externe pour analyser XML

Cela fonctionne très bien grâce à l'aide d'ici.

Voici comment je le fais.

Comment puis-je utiliser un fichier CSS externe afin que je puisse utiliser de classe et non 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); 
     } 
    } 

Maintenant, j'ai obtenu jusqu'ici, mais comment Tye tout me élude. Toute aide serait beaucoup suivie.

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

Répondre

7

Si vous piquez autour du source here et vous devriez voir comment l'implémenter. En gros, vos trois blocs de ligne using en taille et quadrupler la complexité:

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

mal donner qu'un coup, merci pour votre aide à nouveau. :} –

+1

Merci encore beaucoup. travaillé comme un rêve ... bon morceau de kit. –

+0

Comment répéter l'en-tête de table en utilisant ce code –

Questions connexes