.NET Core热敏票据PDF生成:CSS渲染异常问题求助
HtmlRendererCore PdfSharp生成PDF时CSS(如Flex)不生效,求解决方案及.NET Core PDF生成包推荐
我正在做Bematech热敏打印机票据的概念验证(POC),使用HtmlRendererCore PdfSharp包基于HTML模板生成PDF。PDF能成功生成,但CSS样式未正常生效,Flex这类布局样式完全不符合预期。
我的C#代码:
var document = new PdfSharpCore.Pdf.PdfDocument(); var today = DateTime.UtcNow; TicketHeader header = new TicketHeader() { Test= "some value", Test2= "Some value 2", ScheduledTime = DateTime.UtcNow }; TicketContent content= new TicketContent { Name = "Test", dsc= "Test2" }; var htmlPage = System.IO.File.ReadAllText($"Models\\TicketLayout.html"); htmlPage = htmlPage.Replace("DAY", header.ScheduledTime.ToString()); htmlPage = htmlPage.Replace("Test", header.Test); htmlPage = htmlPage.Replace("Test2", header.Test); htmlPage = htmlPage.Replace("Name", detail.Name); htmlPage = htmlPage.Replace("Dsc", detail.Dsc); byte[]? result = null; using (var stream = new MemoryStream()) { var pdf = PdfGenerator.GeneratePdf(htmlPage, PdfSharpCore.PageSize.A4); pdf.Save(stream); result = stream.ToArray(); } string Filename = "Ticket_test.pdf"; return File(result, "application/pdf", Filename);
HTML模板:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> .container { width: 300px; } .header-title { font-weight: bold; font-size: 20px; } .align-left { display: flex; float: right; } .centered-info { text-align: center; } .bolded { font-weight: bold; } </style> </head> <body> <div class="container"> <p class="header-title"> <span>DAY</span> <span class="align-left">HOUR</span> </p> <p class="centered-info"> <span class="bolded">Test</span> <br> <span>Order</span> <br> <span class="bolded">Test</span> </p> <hr class="centered-info"> <div> <span class="bolded">DUMMY DATA</span> <span style="margin-left: 10px">DUMMY DATA</span> <span style="font-weight: bold; margin-left: 10px">DUMMY DATA</span> <span style="margin-left: 10px">DUMMY DATA</span> <br> <span style="font-weight:bold;margin-right: 10px">DUMMY DATA</span> <span>DUMMY DATA</span> <span>|</span> <span>DUMMY DATA</span> </div> <div style="padding: 10px; border: solid; border-radius: 15px; margin-top: 20px"> <span style="font-weight: bold">12345</span> <span>DUMMY DATA</span> <br> <span style="font-weight: bold; margin-right: 20px">DUMMY DATA</span> <span style="font-weight: bold; margin-right: 30px">DUMMY DATA.</span> <span style="font-weight: bold; margin-right: 30px">DUMMY DATA</span> <br> <span style="font-weight: bold;margin-right:35px;">DUMMY DATA</span> <span style="margin-right: 15px">DUMMY DATA</span> <span>DUMMY DATA</span> <br> <span style="font-weight: bold">DUMMY DATA.</span> </div> <span style="padding: 20px">Some text</span> </div> </body> </html>
疑问:
- 这个问题是HTML本身的问题还是HtmlRendererCore PdfSharp包的兼容性问题?
- 有没有针对这类CSS不生效问题的解决方案?
- 针对热敏打印机票据生成场景,有没有更合适的.NET Core PDF生成包推荐?
内容的提问来源于stack exchange,提问作者Percy22
相关产品推荐
相关产品推荐

