You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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>

疑问:

  1. 这个问题是HTML本身的问题还是HtmlRendererCore PdfSharp包的兼容性问题?
  2. 有没有针对这类CSS不生效问题的解决方案?
  3. 针对热敏打印机票据生成场景,有没有更合适的.NET Core PDF生成包推荐?

内容的提问来源于stack exchange,提问作者Percy22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:07:34