Если я правильно понял ваш вопрос, вы можете просто использовать HTML-страницу в качестве нижнего колонтитула, чтобы отобразить нижний колонтитул страницы, используя некоторый javascript для отображения текущей страницы и общего количества страниц. На самом деле я использую этот подход для нескольких веб-приложений, использующих Rotativa, которые генерируют PDF-файлы на основе представлений MVC с динамическим содержимым.
Предположим, мы создали файл Footer.html (используйте имя, которое вы предпочитаете здесь), это может быть файл HTML для нижнего колонтитула PDF, включая код 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) находится в папке с именем Shared внутри папки Views. , вы можете подготовить необходимые пользовательские переключатели перед вызовом Rotativa:
string customSwitches = "--footer-html " + Server.MapPath("~/Views/Shared/Footer.html");
Итак, если вы используете действие MVC для создания PDF-файла на основе представления с именем MyPdfView.cshtml, вы можете использовать ViewAsPdf, передав ему свои пользовательские переключатели следующим образом:
return new ViewAsPdf("MyPdfView")
{
FileName = "MyPdfView.pdf",
CustomSwitches = customSwitches
};
И это все. Пожалуйста, дайте мне знать, если это сработало для вас.
person
Dave Miller
schedule
19.10.2020