2015-11-17 2 views
2

Я нашел Rotativa как простой способ экспорта в PDF (работает почти отлично, за исключением того, что CSS3, похоже, не поддерживается, возможно, в будущей версии) ... но мне интересно, как обращаться с опцией FileName.Rotativa PDF export - не удалось отобразить встроенную и иметь имя файла в одно и то же время

Когда я

return new Rotativa.ViewAsPdf("myViewName", "~/Views/Shared/_PDFLayout.cshtml", myModel) 
{ 
    FileName = "myCorrectlyNamed.pdf", 
    PageSize = ... // plus some more options 
}; 

тогда я буду получать myCorrectlyNamed.pdf для загрузки. Когда я опускаю опцию FileName, PDF отображается в браузере, но когда я его сохраняю, он имеет только имя файла по умолчанию document.pdf.

Как создать и отобразить PDF в браузере и иметь имя файла, отличное от document.pdf, когда оно будет сохранено оттуда?

ответ

4

Вы можете добавить заголовок Content-Disposition в Response. Используя этот заголовок, вы сможете сообщить обозревателю отображать файл inline, а также указать имя , которое должно использоваться, когда пользователь пытается сохранить файл.

Response.AppendHeader("Content-Disposition", new System.Net.Mime.ContentDisposition { Inline = true, FileName = "myCorrectlyNamed.pdf" }.ToString()); 
return new Rotativa.ViewAsPdf("myViewName", "~/Views/Shared/_PDFLayout.cshtml", myModel) 
{ 
    PageSize = ... // plus some more options 
}; 
+0

Подтверждено, это определенно сработало для меня. Я использовал RouteAsPdf, но результат тот же. Ключевой линией является строка Response.AppendHeader. Ранее я указывал имя файла в вызове RouteAsPdf, но, увидев это, я удалил его и поместил в строку AppendHeader, и он отлично работал. – tjans