2013-07-01 5 views
2

현재 iTextSharp XMLWorker 클래스를 사용하여 HTML을 PDF로 변환하는 데 POC를 사용하고 있습니다.iTextSharp XMLWorker를 사용하여 HTML을 PDF로 변환하는 동안 CSS가 적용되지 않습니다.

  1. CSS 파일은 링크 태그를 사용하여 HTML 파일에 연결됩니다.
  2. CSS 파일의 경로는 파일 서버 경로입니다. HTML 파일과 같은 디렉토리입니다.

다음 기능을 사용하여 작업을 수행합니다. 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

HTML-to-PDF 변환기는 자산에 대한 상대 경로를 찾는 것으로 악명이 높습니다. 대신에 절대 URL을 사용하여 스타일 시트를 연결하십시오 (예 :

<link href='http://localhost/css/style.css'> 
).
관련 문제