wkhtmltopdf使用ASP.NET MVC自定义页眉和页脚

时间:2013-11-20 02:39:07

标签: c# asp.net asp.net-mvc pdf-generation wkhtmltopdf

任何人都可以使用wkhtmltopdf自定义页眉和页脚与他们的ASP.NET MVC?我需要你的帮助。我看到wkhtmltopdf已更新并支持页眉和页脚的一些新functionality(自v0.10.0起)。我需要的是接近--header-html <url>但不完全正确。

我需要将局部视图渲染为标题。 --header-html <url>需要链接到html,然后是该html文件中的一些脚本。如何用部分视图替换它?由于我的部分视图没有直接链接,我似乎无法弄清楚我的选择是什么。我可以渲染局部视图并将html代码分配给字符串但是我将如何使用它?

感谢任何其他想法。

1 个答案:

答案 0 :(得分:0)

有多种方法可以从局部视图捕获HTML(尝试搜索MVC响应捕获)。

然后将HTML写入磁盘上的临时位置,并将参数中的临时HTML文件的位置传递给wkhtmltopdf:

try { 
    ...
    var headerDocumentLocation = saveLocation + documentName + "-h.html"

    using (var sw = new StreamWriter(new FileStream(headerDocumentLocation , FileMode.Create, FileAccess.Write))) {
        sw.Write(headerHtml);
    }
    ...
    Process p = new Process();
        p.StartInfo = new ProcessStartInfo {
            Arguments = "--header-html " + headerDocumentLocation + <other args>,
            FileName = <location of wkhtmltopdf>,
            WindowStyle = ProcessWindowStyle.Hidden
         };
        p.Start();
        p.WaitForExit();
    ...
} finally { 
    if (File.Exists(headerDocumentLocation)) {
        File.Delete(headerDocumentLocation);
    }
}

这对我来说非常有效。