3

.aspx 页面中有一个 .pdf 文件,如下所示:<embed src="http://.../ShowPdf.aspx?id=1" type="application/pdf">. Chrome 仅显示“正在加载”图像并挂起而不显示 pdf(chrome pdf 查看器和 adobe 插件都不起作用)。其他浏览器打开pdf。有任何想法吗?

4

3 回答 3

3

我也遇到了这个问题,经过多次研究,我终于解决了。

我发现HTTP响应标头应具有以下实体标头:

content-length: file size

如果不指定此标头,Web 服务器将放置默认值:

content-length: chunked

我不知道为什么谷歌浏览器会出现这个问题,因为正如你所说,在 IE 或 Firefox 等其他浏览器中,它们会正确呈现/打开 PDF 文件。

以下是我用来解决此问题的代码。它适用于我的情况,现在谷歌浏览器正在显示我的网络应用程序的 PDF 文件!

    System.IO.FileInfo fileInfo;
    fileInfo = My.Computer.FileSystem.GetFileInfo(fullPathToFile);
    Response.AddHeader("Content-Length", fileInfo.Length.ToString());

我希望我对你有所帮助。

以下是我发现有用的一些参考资料:
Chrome 和 Firefox 的 PDF 处理程序问题
HTTP 标头中的“Content-Length”字段是什么?

于 2012-11-12T13:58:57.220 回答
1

如果您在 Firefox 中显示 PDF 时也遇到问题,我发现:

“您需要指定内容类型,以便浏览器知道它正在下载/显示内联的文件......就像这样:”

     Response.ContentType = "application/pdf"
     Response.AddHeader("Content-Disposition", "inline;filename=YourFileName.pdf")

它对我有用,我也希望对你有帮助并帮助你。

来源:http ://forums.asp.net/t/1784151.aspx

于 2014-01-17T22:29:05.010 回答
1

非常感谢,我也遇到了同样的问题,已经解决了。我使用的是报表查看器,但我需要自动以 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(); 
于 2014-01-07T22:23:27.200 回答