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

在NReco.PdfGenerator中如何自定义页码序列(首页1、次页3)

实现NReco.PdfGenerator自定义页码(第1页显示Page 1,第2页显示Page 3)

要实现这种非连续的自定义页码效果,核心是通过JavaScript动态修改页脚的页码显示值,利用NReco.PdfGenerator支持页眉/页脚HTML中嵌入脚本的特性来实现。具体操作如下:

修改页脚HTML,加入自定义逻辑

替换原有的PageFooterHtml配置,加入JavaScript代码来控制页码的显示规则:

public void GenerateHtmlToPdf()
{
    var htmlContent = String.Format("<body>Hello world: {0}</body>", DateTime.Now);
    var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
    // 自定义页脚:实现第1页显示Page 1,第2页及以后显示Page (当前页码+1)
    htmlToPdf.PageFooterHtml = @"
        <table style=""border-bottom: 1px solid black; width: 100%"">
            <tr>
                <td class=""section""></td>
                <td style=""text-align:right"">Page <span id=""customPage""></span></td>
            </tr>
        </table>
        <script>
            // 获取默认替换的当前页码值
            var currentPage = parseInt(document.querySelector('.page').textContent);
            var displayNumber;
            // 根据页码设置显示值:第1页显示1,第2页显示3,后续页以此类推
            if (currentPage === 1) {
                displayNumber = 1;
            } else {
                displayNumber = currentPage + 1;
            }
            // 将计算后的页码赋值给自定义显示元素
            document.getElementById('customPage').textContent = displayNumber;
            // 隐藏默认的页码元素,避免重复显示
            document.querySelector('.page').style.display = 'none';
        </script>";
    var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
    // 后续处理PDF字节流(如保存到文件、返回给客户端等)
    // ...
}

关键逻辑说明

  • NReco会自动将<span class="page"></span>替换为当前的实际页码数字,我们通过JS获取这个值进行计算
  • 针对第1页直接使用原页码,第2页及以后的页码在原数值基础上加1,满足第2页显示Page 3的需求
  • 新增customPage元素用来展示最终的自定义页码,同时隐藏默认的.page元素避免重复内容

如果你的需求仅针对前两页(后续页码不需要调整),可以修改JS中的判断逻辑为:

if (currentPage === 1) {
    displayNumber = 1;
} else if (currentPage === 2) {
    displayNumber = 3;
} else {
    // 后续页码保持默认值
    displayNumber = currentPage;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:04:54