javascript - 使用 PdfGenerator 将页码添加到 PDF

标签 javascript c# pdf-generation page-numbering

这个问题属于 NReco's PdfGenerator组件。

我使用此产品在使用 C# 的 .NET MVC 框架内将动态生成的 HTML 字符串转换为 Pdf 文档。

在寻找向 Pdf 页脚添加页码(例如,第 1 页,共 5 页)的方法时,我遇到了 thisthis所以。毫不奇怪,这两种选择似乎都提供了类似的方法来实现相同的目标。

虽然代码本身是有道理的,但我很难理解的是 - 我的文档内容(或 HTML 字符串)是在 View 中生成的。然后将 HTML 字符串传递给 Controller ​​ (.cs) 以进行实际的转换过程。由于我对 MVC 框架的了解非常有限,我认为您无法将 JavaScript 代码添加到 Controller (或者有吗?)。

所以,我不太明白如何将上述两种基于 JavaScript 的方法合并到我处理文档转换的 C# 函数中。或者这是应该在 View 中完成的事情吗?

Controller :

[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();
}

最佳答案

您不需要附加 javascript 代码(来自 wkhtmltopdf 帮助)来呈现页码,因为如果您设置 PageHeaderHtml 或 PageFooterHtml 属性,PdfGenerator 将为您完成。您只需要在要呈现页码的位置标记“page”类元素即可:

htmlToPdf.PageHeaderHtml = "<div>Page: <span class="page"></span></div>";

就是这样。

关于javascript - 使用 PdfGenerator 将页码添加到 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27988824/

相关文章:

java - 使用 iText 的 pdf 交互式表单的外观问题

javascript - 使用 Kendo UI 上传控件将请求 header 添加到 XmlHttpRequest

javascript - Bulma Navbar 汉堡仅适用于 index.html 页面

java - 使用 Selenium Htmlunit Java 最终重定向 URL

javascript - 使用 PhantomJS 在 Google Alert 中创建警报

c# - 以编程方式确定 *.ts 视频文件是否使用 aes 128 加密

c# - AutoMapper 自定义映射

linux - 如何在linux中生成文本和图像的pdf文件?

c# - 为什么 GetHashCode 在 Object 类中?

java - 无法使用 PDFBox 使用 main() 中的单独方法将页面添加到 PDF