Rotativa генерирует пустой PDF на сервере
Мы используем Rotativa в проекте.Net MVC 5. он работает как очарование локально и терпит неудачу (генерирует пустой PDF) одинаково при развертывании на сервере. Однако, если я захожу на сервер и получаю доступ к сайту как localhost, он генерирует PDF просто отлично.
Таким образом, это выглядело как проблема с правами, с которой работает пул приложений. Поэтому для целей тестирования я перешел на запуск пула приложений для запуска в "Локальной системе". Все та же проблема.
Мы также попробовали:
- "ViewasPDF"
- Настройки приложения, которые выглядят так:
<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 - это имя пользователя и пароль, для этого создайте общую учетную запись пользователя.