2015-01-29 4 views
2

взял в качестве основы для этого http://dangtrung87.blogspot.com/2013/07/asp-generate-pdf-with-itextsharp.html У меня есть следующий кодКак добавить bootstrap.css в PDF документ itextsharp

string htmlText = RenderViewToString(this.ControllerContext, "report", null, true); 
     htmlText = System.Text.RegularExpressions.Regex.Replace(htmlText, @"\s+", " "); 
     htmlText = htmlText.Replace("\n", "").Replace("\r","").Trim(); 

     //Generate PDF 
     using (var document = new Document(PageSize.A4, 40, 40, 40, 40)) 
     { 

      htmlText = FormatImageLinks(htmlText); 

      //define output control HTML 
      var memStream = new MemoryStream(); 
      TextReader xmlString = new StringReader(htmlText); 

      PdfWriter writer = PdfWriter.GetInstance(document, memStream); 

      //open doc 
      document.Open(); 
      string arialuniTff = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF"); 

      // Set factories 
      var htmlContext = new HtmlPipelineContext(null); 
      htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); 

      // Set css 
      ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); 

      IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer))); 
      cssResolver.AddCssFile(HttpContext.Server.MapPath("~/Content/bootstrap.css"), true); 

      cssResolver.AddCss(".shadow {background-color: #ebdddd; }", true); 

      var worker = new XMLWorker(pipeline, true); 
      var xmlParse = new XMLParser(true, worker); 



      xmlParse.Parse(xmlString); 
      xmlParse.Flush(); 

      document.Close(); 
      document.Dispose(); 



      return File(memStream.ToArray(), "application/pdf", "test.pdf"); 

     } 

У меня есть ошибка здесь xmlParse.Parse (xmlString); Дополнительная информация: Строка ввода недействительна.

, если я изменить cssResolver.AddCssFile (HttpContext.Server.MapPath ("~/Содержание/bootstrap.css"), ложные); У меня нет ошибки.

И у меня есть файл в формате pdf, но работает только cssResolver.AddCss (". Shadow {background-color: #ebdddd;}", true);

стиль начальной загрузки не работает (

как исправить это добавить ??

ответ

0

Причина у вас есть эта ошибка, потому что cssResolver должен быть инициализирован перед использованием в трубопроводе, попробуйте изменить эти строки



     // Set css 
     ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); 
     IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer))); 
     cssResolver.AddCssFile(HttpContext.Server.MapPath("~/Content/bootstrap.css"), true); 
     cssResolver.AddCss(".shadow {background-color: #ebdddd; }", true); 

по



     // Set css 
     ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); 
cssResolver.AddCssFile(HttpContext.Server.MapPath("~/Content/bootstrap.css"), true); 
     cssResolver.AddCss(".shadow {background-color: #ebdddd; }", true); 
     IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer))); 

Пробуйте, работает фи ne для меня. С уважением

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