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
}
}
감사합니다. 감사
1. 'HTMLWorker'를 사용하고 있습니까? 그렇다면'HTMLWorker'가 오래 전에 버려지고 CSS가'HTMWorker'에서 지원되지 않는다는 것을 알아야합니다. 2. XML Worker를 사용하고 있습니까? 그렇다면 모든 CSS 값이 지원되는 것은 아니지만 [SSCCE] (http://sscce.org)를 제공하면 누군가가이를 볼 수 있습니다. –
XMLWorker를 볼 수 있습니다. 게시물에 사용하는 방법을 추가했습니다. 나중에 SSCCE 할 것입니다. 하지만 이것은 거의 모든 것입니다 ... – Victor