使用iTextSharp XMLWorker将HTML转换为PDF时,CSS不适用

时间:2013-07-01 02:49:44

标签: css itextsharp html-to-pdf

我目前正致力于POC,以展示使用iTextSharp XMLWorker类将HTML转换为PDF。

  1. 使用链接标记将CSS文件链接到HTML文件。
  2. CSS文件的路径是文件服务器路径。它与HTML文件的目录相同。
  3. 我使用以下函数执行操作。生成PDF文件但未应用CSS文件。

    public void Html2Pdf(FileStream inputHtml, Document doc, PdfWriter pdfWriter)
    {
       var cssFiles = new CssFilesImpl();
       cssFiles.Add(XMLWorkerHelper.GetCSS(new FileStream(@"C:\Test_HTML2PDF\Test.css",FileMode.Open)));
       var cssResolver = new StyleAttrCSSResolver(cssFiles);
    
       var htmlContext = new HtmlPipelineContext(new CssAppliersImpl(new XMLWorkerFontProvider()));
       htmlContext.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(Tags.GetHtmlTagProcessorFactory());
    
       htmlContext.SetPageSize(new Rectangle(doc.Left, doc.Bottom, doc.Right, doc.Top));
    
       // Pipelines
    
       var pdf = new PdfWriterPipeline(doc, pdfWriter);
            var html = new HtmlPipeline(htmlContext, pdf);
            var css = new CssResolverPipeline(cssResolver, html);
    
       var worker = new XMLWorker(css, true);
       var parser = new XMLParser(worker, Encoding.UTF8);
       parser.Parse(inputHtml, Encoding.UTF8);     
    }
    

    请分享您对我错过的内容以及可以解决此问题的意见。

1 个答案:

答案 0 :(得分:1)

HTML-to-PDF转换器在查找资产的相对路径方面非常糟糕。尝试使用绝对URL链接样式表,例如:

<link href='http://localhost/css/style.css'>