这个问题与NReco 的 PdfGenerator组件有关。
我使用该产品在使用 C# 的 .NET MVC 框架内将动态生成的 HTML 字符串转换为 Pdf 文档。
在寻找将页码(例如,5 个中的 1 个)添加到 Pdf 的页脚的方法时,我在 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();
}