如何为使用Rotativa生成的动态内容的PDF生成页脚



我正在生成一个pdf,我的雇主要求我在pdf中的每一页上添加一个页脚。pdf是用Rotativa生成的,它有一个html页面,可以转换成pdf

我唯一的问题是,我该怎么做。我考虑了一些想法,纯css代码,尽管有更多的选择,但没有一个真正适合我。特别是因为我可以有1页,也可以有10页,这取决于必须放在上面的信息量。

因此页脚必须对将要生成的页面数量做出响应

有人对我有什么想法吗?我真的很想解决这个问题,但我不知道怎么做。

问候洛伦佐奥托

如果我没有误解你的问题,你可以简单地使用HTML页面作为页脚来显示页面页脚,包括一些javascript来显示当前页面和总页数。实际上,我正在将这种方法用于使用Rotativa的几个web应用程序,这些应用程序基于MVC视图生成具有动态内容的PDF文件。

假设我们创建一个Footer.html(在这里使用您喜欢的名称(,这可能是PDF页脚的html文件,包括生成页码信息的javascript代码:

<!DOCTYPE html>
<html>
<head>
<script>
function subst() {
var vars = {};
var x = window.location.search.substring(1).split('&');
for (var i in x) { var z = x[i].split('=', 2); vars[z[0]] = unescape(z[1]); }
var x = ['frompage', 'topage', 'page', 'webpage', 'section', 'subsection', 'subsubsection'];
for (var i in x) {
var y = document.getElementsByClassName(x[i]);
for (var j = 0; j < y.length; ++j) y[j].textContent = vars[x[i]];
}
}
</script>
</head>
<body onload="subst()">
<div style="font-family: Helvetica; font-size:0.75rem; text-align: right; width:100%;">
<span class="page"></span> / <span class="topage"></span>
</div>
</body>
</html>

*当然,您可以根据需要更改页脚div样式,以满足您的设计需求。

另一方面,猜测页脚HTML页面(以前称为footer.HTML(位于Views文件夹内一个名为Shared的文件夹中,您可以在调用Rotativa:之前准备所需的自定义开关

string customSwitches = "--footer-html " + Server.MapPath("~/Views/Shared/Footer.html");

因此,如果你正在使用MVC操作基于名为MyPdfView.cshtml的视图生成PDF,你可以制作ViewAsPdf的uso,通过这种方式将它传递给你的自定义开关:

return new ViewAsPdf("MyPdfView")
{
FileName = "MyPdfView.pdf",
CustomSwitches = customSwitches
};

仅此而已。请告诉我这对你是否有效。

最新更新