2015-11-17 39 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