2015-11-17 21 views
2

我发现Rotativa是一种导出为PDF的简单方法(几乎完美的工作除了CSS3似乎不受支持,可能在未来的版本中) ...但我不知道如何处理FileName选项。Rotativa PDF导出 - 无法同时显示内容并同时显示文件名

当我

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保存的文件名不是document.pdf

回答

4

您可以将Content-Disposition标题添加到Response。使用此标题,您将能够告诉浏览器显示文件内联并且还指定名称应该使用当用户尝试保存该文件时。

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