Rotativa генерирует пустой PDF на сервере

Мы используем Rotativa в проекте.Net MVC 5. он работает как очарование локально и терпит неудачу (генерирует пустой PDF) одинаково при развертывании на сервере. Однако, если я захожу на сервер и получаю доступ к сайту как localhost, он генерирует PDF просто отлично.

Таким образом, это выглядело как проблема с правами, с которой работает пул приложений. Поэтому для целей тестирования я перешел на запуск пула приложений для запуска в "Локальной системе". Все та же проблема.

Мы также попробовали:

  1. "ViewasPDF"
  2. Настройки приложения, которые выглядят так: <add key="WkhtmltopdfPath" value="<path to the folder>"/>

Ниже приведен код:

return new ActionAsPdf("ActionMethod",new { id = id, partSelected =        part, selectedTab = selectedTab, isDownload = true })
{
    FileName = fileName,
    PageMargins = { Left = 0, Right = 0 },
    CustomSwitches = "--disable-external-links --disable-internal-links --disable-smart-shrinking --viewport-size 1600x900 --load-error-handling ignore",
    PageOrientation = Rotativa.Options.Orientation.Portrait,
    PageSize = Rotativa.Options.Size.A4,
    PageWidth = 210,
    PageHeight = 297
};

2 ответа

Во-первых, вы отключили отображение ошибки с помощью пользовательского переключателя - load-error-processing ignore. Это может помочь не отключить его временно для целей отладки.

Во-вторых, слепое предположение от меня состоит в том, что у вас могут быть некоторые изображения, которые требуют локального пути как src на pdf? Если это так, вам понадобится @Server.MapPath для каждого из них.

Например:

<img src="@Server.MapPath("your image path")"/>
 var iResult = new Rotativa.ActionAsPdf("PrintForm", new { Id = Id }) { FileName = iFilename, SaveOnServerPath = ViewBag.FileName };
 iResult.UserName = System.Configuration.ConfigurationManager.AppSettings["ADUserID"].ToString();
 iResult.Password = System.Configuration.ConfigurationManager.AppSettings["ADPassword"].ToString();
 return iResult;

Вот пример кода, где aduser - это имя пользователя и пароль, для этого создайте общую учетную запись пользователя.

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