title: CSS styles not being applied to PDF with iTextSharp
body: <p>I am attempting to convert a portion of my webpage to pdf using iTextSharp, and while the pdf generation is working correctly, none of the css styles are being applied.  I've tried applying the styles one at a time, but that doesn't seem to work.  This is what I've come up with so far:</p>
  
  <pre><code>//Get the portion of the page to convert.
  StringBuilder sb = new StringBuilder();
  print_div.RenderControl(new HtmlTextWriter(new StringWriter(sb)));
  string html = sb.ToString();
  
  //Generate a random filename to use for the pdf
  Guid random_guid;
  random_guid = Guid.NewGuid();
  string fileName = random_guid.ToString() + ".pdf";
  string filename_with_folder = @"pdf\sl_" + fileName;
  string fullFilePath = System.IO.Path.Combine(Request.PhysicalApplicationPath, filename_with_folder);
  
  using (Document doc = new Document())
  {
      // Create the pdf
      PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(fullFilePath, FileMode.Create));
      doc.Open();
      try
      {
          //Set the font size for all elements
          StyleSheet styles = new StyleSheet();
          styles.LoadStyle("body", "fontsize", "8px");
  
          //Write the content to the pdf document
          StringReader sr = new StringReader(html);
          XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, sr);
      }
      catch (Exception ex)
      {
      }
      doc.Close();
  }
  </code></pre>
  
  <p>Am I missing something?  I started off using HTMLWorker and have switched to XMLWorker, but I think I'm just confusing myself now.  Help would be appreciated.</p>
  
  <p><strong>ATTEMP #2</strong></p>
  
  <p>Thanks for the reply!  This is what I've come up with, but it isn't working.  My content doesn't appear in the pdf at all now, and I'm not sure why.  Any thoughts?  </p>
  
  <pre><code>using (Document doc = new Document())
  {
      PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(fullFilePath, FileMode.Create));
      doc.Open();
  
      // CSS
      var cssResolver = new StyleAttrCSSResolver();
      var cssFile = XMLWorkerHelper.GetCSS(new FileStream(HttpContext.Current.Server.MapPath("~/css/print.css"), FileMode.Open));
      cssResolver.AddCss(cssFile);
  
      // HTML
      CssAppliers ca = new CssAppliersImpl();
      HtmlPipelineContext hpc = new HtmlPipelineContext(ca);
      hpc.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
  
      // PIPELINES
      PdfWriterPipeline pdf = new PdfWriterPipeline(doc, writer);
      HtmlPipeline htmlPipe = new HtmlPipeline(hpc, pdf);
      CssResolverPipeline css = new CssResolverPipeline(cssResolver, htmlPipe);
  
      XMLWorker worker = new XMLWorker(css, true);
      XMLParser p = new XMLParser(worker);
      StringReader sr = new StringReader(html);
      p.Parse(sr);
      doc.Close();
  }
  </code></pre>
  
  <p>Am I close, or am I missing the point completely?</p>