HTML元素';使用iTextSharp转换后,s页边距不应用于PDF格式

HTML元素';使用iTextSharp转换后,s页边距不应用于PDF格式,html,css,itextsharp,Html,Css,Itextsharp,我正在使用iTextSharp库进行HTML到PDF的转换。 你能解释一下为什么下面的HTML+CSS不能正确转换成PDF吗?看起来根本没有应用元素边距…文本粘贴在左侧。浏览器(Chrome)可以很好地居中 CSS: #sgh-mainC { width: 100px; margin-top: 0; margin-bottom: 0; margin-right: auto; margin-left: auto; } HTML: 多谢各位。 关于这个

我正在使用iTextSharp库进行HTML到PDF的转换。 你能解释一下为什么下面的HTML+CSS不能正确转换成PDF吗?看起来根本没有应用元素边距…文本粘贴在左侧。浏览器(Chrome)可以很好地居中


CSS:

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

多谢各位。
关于

这个问题有点老了,不过万一有人无意中发现了这个帖子


iTextSharp实际支持的CSS集似乎非常有限。您可以在

1找到它。您是否正在使用
HTMLWorker
?如果是这样,那么您应该知道,
HTMLWorker
早就被放弃了,而且
HTMLWorker
中不支持CSS。2.您正在使用XML Worker吗?如果是这样的话,请注意并非所有CSS值都受支持,但是如果您提供了一个,那么您可以看到,有人可以查看it.XMLWorker。我在帖子中添加了我正在使用的方法。我稍后会做SSCCE。但这几乎就是一切。。。
<!DOCTYPE html>
<html lang="en">
<head>
    <title>PDS</title>
</head>
<body>
    <div id="sgh-mainC">
        text that should be centered
    </div>
</body>
</html>
 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
            }
        }