.aspxページには、次のような.pdfファイルが含まれています<embed src="http://.../ShowPdf.aspx?id=1" type="application/pdf">
。Chromeは「読み込み中」の画像を表示するだけで、PDFを表示せずにハングします(Chrome pdfビューアとadobeプラグインはどちらも機能しません)。他のブラウザはPDFを開きます。何か案は?
3 に答える
私もこの問題を抱えていましたが、いくつかの調査を経てようやく解決しました。
私が見つけたのは、HTTP
応答ヘッダーには次のエンティティヘッダーが必要であるということです。
content-length: file size
このヘッダーを指定しない場合、Webサーバーはデフォルトを設定します。
content-length: chunked
あなたが言ったように、IEやFirefoxのような他のブラウザでは、PDFファイルを正しくレンダリング/開くので、GoogleChromeにこの問題がある理由はわかりません。
以下は、この問題を解決するために使用したコードです。私の場合はうまくいきましたが、今ではGoogleChromeが私のWebアプリケーションのPDFファイルを表示しています。
System.IO.FileInfo fileInfo;
fileInfo = My.Computer.FileSystem.GetFileInfo(fullPathToFile);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
私があなたを助けたことを願っています。
Chromeと
FirefoxでのPDFハンドラーの問題
HTTPヘッダーの「Content-Length」フィールドとは何ですか?
どうもありがとうございました、私は同じ問題を抱えていました、そしてそれは解決策でした。レポートビューアを使用していましたが、PDFで自動的に表示する必要があり、正常に機能していましたが、Chromeを使用した場合も同じ問題が発生し、ファイルを保存するときに拡張子.ASPXで保存されました。 .pdfではありません。
私は自分のコードをソリューションと共有します:
string deviceInfo = "";
string[] streams = null;
string mimeType = null;
string encoding = null;
string fileNameExtension = null;
Warning[] war = null;
Byte[] bytes = this.ReportViewer.LocalReport.Render("PDF", deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out war);
System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
Response.Clear();
Response.ContentType = "Application/pdf";
Response.AddHeader("Content-Length", bytes.Length.ToString());
Response.AddHeader("Content-disposition", "inline; filename= NombreReporte");
Response.BinaryWrite(ms.ToArray());
Response.Flush();
Response.End();
FirefoxでPDFを表示する際にも問題が発生する場合は、次のことがわかりました。
「コンテンツタイプを指定して、ブラウザがダウンロード/インライン表示しているファイルを認識できるようにする必要があります。次のようになります。」
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "inline;filename=YourFileName.pdf")
それは私のために働きました、私もあなたのためにそしてあなたを助けることを望みます。
ソース: http: //forums.asp.net/t/1784151.aspx