gpt4 book ai didi

使用 iTextSharp 转换后,HTML 元素的边距未应用于 PDF

转载 作者:行者123 更新时间:2023-11-28 16:14:49 29 4
gpt4 key购买 nike

我正在使用 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:

<!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
}
}

谢谢。问候

最佳答案

这个问题有点老了,但是万一其他人偶然发现这篇文章......

看来 iTextSharp 实际支持的 CSS 集非常有限。您可以在 http://demo.itextsupport.com/xmlworker/itextdoc/CSS-conformance-list.htm 找到它

关于使用 iTextSharp 转换后,HTML 元素的边距未应用于 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37724532/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com