📅  最后修改于: 2023-12-03 15:04:55.867000             🧑  作者: Mango
Rotativa 是一个在 ASP.NET Core 中将 HTML 转换为 PDF 的工具。许多情况下,我们需要将网页中的表格转换为 PDF 文件,但是当表格跨越多页时,会出现标题只在第一页出现的问题。本文将介绍如何使用 Rotativa 在表格跨越多页时正确显示标题。
在转换跨越多页的表格时,标题只会出现在第一页,其他页则没有标题。
为了解决这个问题,我们需要将标题单独保存到一个 HTML 文件,并且在表格每一次跨页时插入标题文件。下面是具体的实现步骤:
创建一个包含表格和标题的 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>
使用 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),
};
配置 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",
},
},
},
};
提供标题文件的 HTML。
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<h1>表格标题</h1>
</body>
</html>
通过将表格和标题分别保存到两个 HTML 文件,使用 Rotativa 将它们合并生成 PDF 文件,并在 PDF 文件的每一页都插入标题,我们就可以完美地解决表格跨越多页时的标题问题。