Rotativa标头有时不显示

时间:2016-08-02 13:59:40

标签: c# pdf pdf-generation wkhtmltopdf rotativa

我遇到了Rotativa的问题。我打印表格,我想在每个打印页面上有页眉和页脚。问题是有时它的工作,有时它没有。即使pdf不包含标题,它仍然具有与标题的pdf相同的大小。有解决方案吗:/这是我如何生成pdf

string footer = this.Url.Action("PDFGeneratorFooter", "Home", null, this.Request.Url.Scheme);
            string header = this.Url.Action("PDFGeneratorHeader", "Home", new { number = number }, this.Request.Url.Scheme);

            var pdfFile = new Rotativa.ViewAsPdf("OffersToPdf", movm)
            {
                PageSize = Rotativa.Options.Size.A4,
                FileName = "firstPdf.pdf",
                CustomSwitches = " --footer-html \"" + footer + "\" " + "--header-html \"" + header + "\""
            };

            byte[] applicationPDFData = pdfFile.BuildPdf(ControllerContext);

            path = Path.Combine(path, pdfFile.FileName);
            var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write);
            fileStream.Write(applicationPDFData, 0, applicationPDFData.Length);
            fileStream.Close();

这是我的标题视图

<body style="margin:0 !important; padding:0 !important;">
    @{
        Layout = null;
    }
    <div class="col-xs-12" style="background-color: black;">
        <img src="~/Content/Images/logo.png">
    </div>
</body>

3 个答案:

答案 0 :(得分:0)

我认为你仍然不需要这个,但无论如何......由于你没有任何布局,标题没有html格式。你需要设置DOCTYPE()。更好的方法是将标准的.html文件作为标题。我给你这个链接我已经找到了一个例子: Add footer and header to pdf in rotativa

答案 1 :(得分:0)

在使用.cshtml文件的页脚旁边的标题时,我也遇到了问题,在只能通过html更改两者之前,我只能使用标题或页脚。

在这种情况下,请使用两个具有.html扩展名的文件。

答案 2 :(得分:0)

我也有同样的问题。不能将页眉/页脚文件设置为纯.html,因为您希望能够将模型传递给视图。

您可以做一些对我有用的事情:

  1. 使用Rotativa版本1.6.4,而不是最新版本。

  2. this post中所述,如果您的头文件包含任何样式或javascript,有时可以通过将其放入头文件而不是将其作为头来解决问题。外部.js / .css文件。

  3. 如果标头中包含任何javascript,请增加CustomSwitches选项-javascript-delay 的值,以使javascript有时间正确加载。例如--javascript-delay 400(默认值为200ms)。

  4. 确保将<!DOCTYPE html>标记放在每个文件的最顶部,包括带有内容的文件,在这种情况下,就是您的OffersToPdf文件。

还可以使用Rotativa PageMargins 选项,以便在PDF上有足够的空间供页眉和页脚容纳。

var pdfFile = new Rotativa.ViewAsPdf("OffersToPdf", movm)
    {
        PageSize = Rotativa.Options.Size.A4,
        FileName = "firstPdf.pdf",
        PageMargins = new Rotativa.Options.Margins(25, 5, 35, 5)
        CustomSwitches = " --footer-html \"" + footer + "\" " + "--header-html \"" + header + "\""
    };