【问题标题】:Rotativa Header sometimes not displayingRotativa Header 有时不显示
【发布时间】:2016-12-07 22:26:06
【问题描述】:

我遇到了 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>

【问题讨论】:

    标签: c# pdf pdf-generation wkhtmltopdf rotativa


    【解决方案1】:

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

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

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

    2. 正如this post 中所说,如果您的头文件包含任何样式或 javascript,有时问题可以通过将它们放在 inside 头文件中,而不是将它们作为 external 来解决。 js/.css 文件。

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

    4. 确保将&lt;!DOCTYPE html&gt; 标记放在每个文件的最顶部,包括带有内容的文件,在本例中是您的 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 + "\""
        };
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2012-12-19
          • 1970-01-01
          • 1970-01-01
          • 2017-11-30
          • 2014-03-03
          • 1970-01-01
          • 2015-11-18
          • 2015-08-15
          • 1970-01-01
          相关资源
          最近更新 更多