2012-12-19 12 views
5

私はPDFを返すFileResultアクションを持っています。このPDFをオブジェクトタグに埋め込みたいと思います。以下のようにオブジェクトタグのデータ属性にアクションを挿入すると、ChromeでPDFが取得または表示されません。 (PDFはアドビシステムズ社のプラグインとFirefoxで示されている - 私はIEを気にしないでください。)クロムのオブジェクトタグのデータ属性に、PDFファイルを提供するASP.NET MVCアクションを設定する

<object data="@Url.Action("GetPDF", "PDFCreation", new {id= Model.DocumentId})" type="application/pdf"></object> 

は、それはすべてがそうでなければ動作します - オブジェクトタグは、ファイルシステム上のPDFへの直接リンクで動作します(例: 、data = "〜/ Content/test.pdf")、上記のアクションは、場所バーにハードペーストされた場合、PDFをダウンロードします。

どのような考えですか?ありがとうございました!

+1

私はプラグインの問題だと思います。IE9で試しても何も起こりません。それはクロムでそれを行う場合、それは読み込まれていないPDFプラグインについて不平を言う。私がfirefoxで試してみると、すべて正常に動作します。 – Slicksim

+0

あなたは正しいです - Firefoxでは(Adobeプラグインを使用して)動作しますが、Chromeでは動作しません(もちろん、IEはこのすべてで失われた原因です、私はちょうどそこにpdf.js iframeを使用しています)。 – Gabe

答えて

1

試す価値があるかもしれません:Returning a file to View/Download in ASP.NET MVC

コンテンツの配置ヘッダーを追加し、コンテンツの配置の「インライン」値をtrueに設定する必要がありました。

var doc = ... 
var contentDisposition = new ContentDisposition 
{ 
    FileName = doc.FileName, 
    Inline = true 
}; 

Response.AppendHeader("Content-Disposition", contentDisposition.ToString()); 

return File(doc.Path, MediaTypeNames.Application.Pdf); 
+0

あなたの助けを借りてくれてありがとうSlicksim!非常に高く評価。 – Gabe

+1

おかげさまで、なぜpdfがChromeに読み込まれないのかをしばらく探していたのですが、IEの場合はそのバールを修正しました。 – bigcakes

3

私はIEがFileContentResultを使用してバックスローされたPDFファイルを表示するために得ることができたし、次のオブジェクトタグ

<object> 
    <embed src="@Url.Action("GetPDF", "PDFCreation", new {id= Model.DocumentId})" type="application/pdf"></embed> 
</object> 

がこの回答を経由して、それを修正

+0

Chromeではまだ動作しません。 (私はIE9がオブジェクトタグを無視し、オブジェクトタグの内側にあるものに落ちると信じています) – Gabe

関連する問題