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 НЕ является вариантом, поскольку вы хотите иметь возможность передавать свою модель в представления.

Вот некоторые вещи, которые вы можете сделать для меня:

  1. Используйте Rotativa версии 1.6.4 вместо последней.

  2. Как сказано в этом посте, если ваш заголовочный файл содержит какие-либо стили или javascript, иногда проблема решается путем помещения их в заголовочный файл вместо использования их в качестве внешних файлов.js /.css.

  3. Если в вашем заголовке есть какой-либо javascript, увеличьте значение параметраCustomSwitches --javascript-delay, чтобы дать времени javascript для правильной загрузки. Ex. --javascript-delay 400(по умолчанию 200 мс).

  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 + "\""
    };

У меня также были проблемы с использованием заголовка рядом с нижним колонтитулом с файлами.cshtml, я мог использовать только верхний или нижний колонтитул, пока я не изменил оба в HTML.

В этом случае используйте два файла с расширением.html, которые работают.

Я не думаю, что вам все еще нужно это, но в любом случае... Так как у вас нет никакой разметки, заголовок не имеет формата HTML. И вам нужно установить DOCTYPE (). Лучший способ сделать это - указать в качестве заголовка обычный файл.html. Я даю вам эту ссылку, которую я нашел в качестве примера: добавьте нижний колонтитул и заголовок в pdf в rotativa

Другие вопросы по тегам