Этот вопрос относится к компоненту NReco's PdfGenerator.Добавление номеров страниц в PDF-файлы с использованием PdfGenerator
Я использую этот продукт для преобразования динамически сгенерированной строки HTML в документ Pdf в рамках .NET MVC с использованием C#.
При поиске способов добавления номеров страниц (например, 1 из 5) в нижний колонтитул Pdf я наткнулся на this и this на SO. И неудивительно, что оба варианта, похоже, предлагают аналогичный подход для достижения той же цели.
Хотя сам код имеет смысл, то, что я с трудом понимаю, - это - содержимое моего документа (или строка HTML) создается внутри представления. Строка HTML затем передается контроллеру (.cs) для фактического процесса преобразования. Имея очень ограниченные знания в области MVC, я думаю, что вы не можете добавить код JavaScript в контроллер (или есть?).
Итак, я не совсем понимаю, как эти два метода JavaScript могут быть включены в мою функцию C#, которая обрабатывает преобразование документа. Или это то, что должно быть сделано внутри представления?
Контроллер:
[HttpPost]
public ActionResult Html2Pdf(FormCollection form) {
var docTitle = form["doctitle"].ToString();
var headerHtml =
"<div style='width:100%; margin-top:1em; display:block;'>" +
"<img src='" + System.Web.HttpContext.Current.Server.MapPath("~") + "/media/images/document_banner.png' />" +
"</div>" +
"<div style='width:100%; bottom:110px; left:0; position:relative; display:block;'>" +
"<span style='color:#fff; font-size:2.5em; font-family:georgia; margin-left:1em;'>" + docTitle + "</span>" +
"</div>";
var footerHtml =
"<div style='width:100%; text-align:center; border-top:1px solid #abc; margin-top:2em;'>Page 0 of 0</div>;
var htmlToPdf = new HtmlToPdfConverter();
// various parameters get set here
htmlToPdf.PageHeaderHtml = headerHtml;
htmlToPdf.PageFooterHtml = footerHtml;
....
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=MyTestDocument.pdf");
htmlToPdf.GeneratedPdf(form["htmlcontent"].ToString(), null, Response.OutputStream); // form["htmlcontent"] holds the document body
Response.End();
Return new EmptyResult();
}