Rotativa Header иногда не отображается
У меня проблема с Ротативой. Я печатаю таблицы и хочу иметь верхний и нижний колонтитулы на каждой напечатанной странице. Проблема в том, что иногда это работает, иногда нет. Даже если 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>
2 ответа
У меня тоже была такая же проблема. Задание файлов верхнего / нижнего колонтитула как простого.html НЕ является вариантом, поскольку вы хотите иметь возможность передавать свою модель в представления.
Вот некоторые вещи, которые вы можете сделать для меня:
Используйте Rotativa версии 1.6.4 вместо последней.
Как сказано в этом посте, если ваш заголовочный файл содержит какие-либо стили или javascript, иногда проблема решается путем помещения их в заголовочный файл вместо использования их в качестве внешних файлов.js /.css.
Если в вашем заголовке есть какой-либо javascript, увеличьте значение параметраCustomSwitches --javascript-delay, чтобы дать времени javascript для правильной загрузки. Ex.
--javascript-delay 400
(по умолчанию 200 мс).Не забудьте поставить
<!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 + "\""
};
У меня также были проблемы с использованием заголовка рядом с нижним колонтитулом с файлами.cshtml, я мог использовать только верхний или нижний колонтитул, пока я не изменил оба в HTML.
В этом случае используйте два файла с расширением.html, которые работают.
Я не думаю, что вам все еще нужно это, но в любом случае... Так как у вас нет никакой разметки, заголовок не имеет формата HTML. И вам нужно установить DOCTYPE (). Лучший способ сделать это - указать в качестве заголовка обычный файл.html. Я даю вам эту ссылку, которую я нашел в качестве примера: добавьте нижний колонтитул и заголовок в pdf в rotativa