我遇到了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>
答案 0 :(得分:0)
我认为你仍然不需要这个,但无论如何......由于你没有任何布局,标题没有html格式。你需要设置DOCTYPE()。更好的方法是将标准的.html文件作为标题。我给你这个链接我已经找到了一个例子: Add footer and header to pdf in rotativa
答案 1 :(得分:0)
在使用.cshtml文件的页脚旁边的标题时,我也遇到了问题,在只能通过html更改两者之前,我只能使用标题或页脚。
在这种情况下,请使用两个具有.html扩展名的文件。
答案 2 :(得分:0)
我也有同样的问题。不能将页眉/页脚文件设置为纯.html,因为您希望能够将模型传递给视图。
您可以做一些对我有用的事情:
使用Rotativa版本1.6.4,而不是最新版本。
如this post中所述,如果您的头文件包含任何样式或javascript,有时可以通过将其放入头文件而不是将其作为头来解决问题。外部.js / .css文件。
如果标头中包含任何javascript,请增加CustomSwitches选项-javascript-delay 的值,以使javascript有时间正确加载。例如--javascript-delay 400
(默认值为200ms)。
确保将<!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 + "\""
};