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

WPF应用中jsreport页码索引不更新问题求助

解决jsreport ChromePdf页码不更新问题

问题现状

在WPF C#应用中使用jsreport生成PDF报告时,所有页面的页脚均显示“Page 1 of 4”,页码索引未随页面变化,但报告内容与页眉页脚的样式均可正常显示。

问题原因

当前采用PdfOperationType.Merge方式合并页眉页脚模板,这种方式会将页眉页脚模板独立渲染为PDF后,再叠加到主文档的每一页上。此时页眉页脚模板中的$pdf.pages仅对应自身的页面集合(实际只有1页),导致循环中的@index始终为0,最终所有页码都显示为1。

解决方案

改用ChromePdf内置的页眉页脚功能,无需通过合并操作实现,直接利用Chrome提供的内置页码变量即可正确生成每页的页码。

1. 修改C#渲染配置

移除PdfOperations配置,在Chrome属性中添加HeaderTemplate和FooterTemplate,直接引用页眉页脚模板:

var report = await rs.RenderAsync(new RenderRequest
{
    Template = new Template
    {                       
        Content = File.ReadAllText(Path.Combine(path.LocalPath, "ReportTemplates", _report.ReportTemplate)),
        Engine = Engine.Handlebars,
        Recipe = Recipe.ChromePdf,
        Chrome = new Chrome()
        {
            MarginBottom = "2cm",
            MarginTop = "1cm",
            MarginLeft = "1cm",
            MarginRight = "1cm",
            // 引用页眉页脚模板
            HeaderTemplate = File.ReadAllText(Path.Combine(path.LocalPath, "ReportTemplates", "Header-Footer.html")),
            FooterTemplate = File.ReadAllText(Path.Combine(path.LocalPath, "ReportTemplates", "Header-Footer.html"))
        }
    },
    Data = _report.Content,
});

去掉循环逻辑,直接使用ChromePdf内置的{{pageNumber}}和{{totalPages}}变量,无需自定义helper:

<html>
<head>
    <meta charset="utf-8">
    <style>
        * {
            box-sizing: border-box;
        }
        body {
            margin: 0;
            padding: 0;
            direction: rtl;
            margin: 15px 10px 10px 15px;
        }
        .footer {
            width: 100%;
            padding-bottom: 15px;
        }
    </style>
</head>
<body>
    <footer class="footer">
        <span>Page {{pageNumber}} of {{totalPages}}</span>
    </footer>
</body>
</html>

3. 移除冗余的helper.js

由于使用了Chrome内置的页码变量,自定义的getPageNumber和getTotalPages函数不再需要,可以直接删除helper.js文件,或者保留但不再引用。

验证要点

  • 确保MarginTop和MarginBottom的设置足够容纳页眉页脚内容,避免被主内容遮挡
  • 确认模板引擎仍设置为Handlebars,以支持{{pageNumber}}等变量解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:16:09