2016-06-09 2 views
1

HTML에서 PDF 로의 변환을 위해 iTextSharp 라이브러리를 사용하고 있습니다. 다음 HTML + CSS가 PDF로 제대로 변환되지 않는 이유를 제안 해주세요. 요소 마진이 전혀 적용되지 않는 것 같습니다 ... 텍스트가 왼쪽으로 붙어 있습니다. 브라우저 (Chrome)가 잘 정리되어 있습니다.iTextSharp로 변환 후 HTML 요소의 여백이 PDF에 적용되지 않습니다.


CSS :

#sgh-mainC { 
    width: 100px; 
    margin-top: 0; 
    margin-bottom: 0; 
    margin-right: auto; 
    margin-left: auto; 
} 

HTML :

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>PDS</title> 
</head> 
<body> 
    <div id="sgh-mainC"> 
     text that should be centered 
    </div> 
</body> 
</html> 

C 번호 :

private void CreatePdf(string html, string css) 
     { 
      try 
      { 
       Byte[] bytes; 
       using (var ms = new MemoryStream()) 
       { 
        using (var doc = new Document()) 
        { 
         using (var writer = PdfWriter.GetInstance(doc, ms)) 
         { 
          doc.Open(); 
          var cssResolver = new StyleAttrCSSResolver(); 
          var msCss = XMLWorkerHelper.GetCSS(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(css))); 
          cssResolver.AddCss(msCss); 

          HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); 
          htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); 
          htmlContext.AutoBookmark(false); 
          var htmlStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)); 

          PdfWriterPipeline pdfPpl = new PdfWriterPipeline(doc, writer); 
          HtmlPipeline htmlPpl = new HtmlPipeline(htmlContext, pdfPpl); 
          CssResolverPipeline cssPpl = new CssResolverPipeline(cssResolver, htmlPpl); 

          new XMLParser(new XMLWorker(cssPpl, true)).Parse(htmlStream); 

          doc.Close(); 
         } 
        } 
        bytes = ms.ToArray(); 
       } 
       if (File.Exists(FilePath)) 
       { 
        File.Delete(FilePath); 
       } 
       var file = File.Create(FilePath); 
       file.Write(bytes, 0, bytes.Count()); 
       file.Close(); 
      } 
      catch (Exception exc) 
      { 
       //TODO log errror 
      } 
     } 

감사합니다. 감사

+0

1. 'HTMLWorker'를 사용하고 있습니까? 그렇다면'HTMLWorker'가 오래 전에 버려지고 CSS가'HTMWorker'에서 지원되지 않는다는 것을 알아야합니다. 2. XML Worker를 사용하고 있습니까? 그렇다면 모든 CSS 값이 지원되는 것은 아니지만 [SSCCE] (http://sscce.org)를 제공하면 누군가가이를 볼 수 있습니다. –

+1

XMLWorker를 볼 수 있습니다. 게시물에 사용하는 방법을 추가했습니다. 나중에 SSCCE 할 것입니다. 하지만 이것은 거의 모든 것입니다 ... – Victor

답변

관련 문제