c# - 如何将 bootstrap.css 添加到 pdf 文档 itextsharp

标签 c# css twitter-bootstrap itext

以此为基础 http://dangtrung87.blogspot.com/2013/07/asp-generate-pdf-with-itextsharp.html 我有下一个代码

  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("~/Content/bootstrap.css"), false);我没有错误。

我有 pdf 文件,但只能使用 cssResolver.AddCss(".shadow {background-color: #ebdddd; }", true);

bootstrap 风格不起作用 (

如何正确添加这个??

最佳答案

出现此错误的原因是 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)));

尝试一下,对我来说效果很好。 问候

关于c# - 如何将 bootstrap.css 添加到 pdf 文档 itextsharp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209106/

相关文章:

jquery - 修复了可调整大小的 HTML 表格的标题,包括自动水平滚动溢出

html - CSS。移动设备中按钮的幽灵风格

javascript - 如何使用 Ajax 通过 Bootstrap Modal 提交表单

c# - 如何使用 C# 从 XML 文件中检索所有元素

C#,如何在 foreach 循环期间将字符串拆分为新行?

javascript - YUI自动完成错位问题

html - 如何将社交媒体按钮添加到 Bootstrap 导航

jquery - Twitter Bootstrap 更改词缀偏移量

c# - 如何防止在公式绑定(bind)单元格中显示绿色警告三角形(C# Excel Interop)?

c# - 绑定(bind)到 WPF 中的静态数组?