📜  rotativa 表格多页标题 (1)

📅  最后修改于: 2023-12-03 15:04:55.867000             🧑  作者: Mango

Rotativa 表格多页标题

Rotativa 是一个在 ASP.NET Core 中将 HTML 转换为 PDF 的工具。许多情况下,我们需要将网页中的表格转换为 PDF 文件,但是当表格跨越多页时,会出现标题只在第一页出现的问题。本文将介绍如何使用 Rotativa 在表格跨越多页时正确显示标题。

问题描述

在转换跨越多页的表格时,标题只会出现在第一页,其他页则没有标题。

解决方案

为了解决这个问题,我们需要将标题单独保存到一个 HTML 文件,并且在表格每一次跨页时插入标题文件。下面是具体的实现步骤:

  1. 创建一个包含表格和标题的 HTML 文件。

    <html>
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
    <h1>表格标题</h1>
    <table>
    <thead>
    <tr>
        <th>表头一</th>
        <th>表头二</th>
        <th>表头三</th>
    </tr>
    </thead>
    <tbody>
    <!-- 表格内容 -->
    </tbody>
    </table>
    </body>
    </html>
    
  2. 使用 Rotativa 将该 HTML 文件转换为 PDF。

    return new ViewAsPdf("TablePage")
      {
        PageSize = Rotativa.AspNetCore.Options.Size.A4,
        PageOrientation = Rotativa.AspNetCore.Options.Orientation.Landscape,
        PageMargins = new Rotativa.AspNetCore.Options.Margins(10, 10, 10, 10),
      };
    
  3. 配置 PDF 文件的页眉,将标题单独保存到 HTML 文件中。

    var document = new HtmlToPdfDocument
    {
        GlobalSettings = {
            ColorMode = ColorMode.Color,
            Orientation = Orientation.Portrait,
            PaperSize = PaperKind.A4,
        },
        Objects = {
            new ObjectSettings {
                Page = "url_to_html_file_with_table",
                // 设置页眉模板
                HeaderSettings = new HeaderSettings {
                    HtmlUrl = "url_to_html_file_with_header",
                },
            },
        },
    };
    
  4. 提供标题文件的 HTML。

    <html>
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
    <h1>表格标题</h1>
    </body>
    </html>
    
总结

通过将表格和标题分别保存到两个 HTML 文件,使用 Rotativa 将它们合并生成 PDF 文件,并在 PDF 文件的每一页都插入标题,我们就可以完美地解决表格跨越多页时的标题问题。