PDF 浏览器请求进入深度卡住

标签 pdf browser download

客户有一份 pdf 通讯,重量为 1.63 MB,所以不是很大。

我们发送了一封电子邮件,其中包含指向 pdf 的链接。否则,用户会在该站点的主页上找到一个链接。没关系。

问题是当用户请求 PDF 时,浏览器有时会进入深度卡住。即,您需要使用任务管理器来终止浏览器实例。

你可以在这里测试pdf:
Newsletter

让它变得困难的是它并不总是失败。以下是我所处的位置以及我尝试过的内容的摘要。

浏览器

最有可能因 pdf 而失败的浏览器是 Google Chrome。但是,IE 有时也会死机。

错误

谷歌浏览器有时会返回以下错误(经过漫长的等待):

“处理页面时出错。发生文件 I/O 错误。文件
连接超时。”

IE 只是没有呜咽地冻死。

杂技版

该文件最初是由设计工作室在 Adob​​e InDesign CS3 中创建的。我们只得到pdf。我曾尝试使用 Acrobat 7 重新保存文件,以防出现兼容性问题。这似乎在一台机器上解决了问题,但在其他机器上却没有...

谷歌结果

谷歌搜索显示 Chrome 和 PDF 存在一些问题。我还没有找到任何解决方案。这仍然不能解释为什么 IE 有时会失败。

其他措施

我在测试之间清除每个浏览器的缓存。所以它不能只是一个错误的下载。

使用 ACROBAT PRO 打开文件

以这种方式打开文件没有问题。

网络服务器

Web 服务器人员已经测试了该文件并且没有出现任何问题。他们在日志中找不到任何问题,这表明文件已下载,并且问题发生在浏览器中。

帮助!

时事通讯本应在两天前发布,但我们在试图解决此问题的同时保留它。坏消息是我已经没有想法了。

编辑:

解决方法:

我跟进了pestaa的建议(见下面的答案),它提供了一种有效的解决方法。不是最适合用户类型(脑炎的医疗慈善机构,这会使患者脑部受伤),但它有效。即,附加以下 http header :

Content-Disposition: attachment

为此,我创建了一个页面,其中包含一个带有以下代码的按钮:
protected void downloadButton_Click(object sender, EventArgs e)
    {
        string fileName = "newsletter49.pdf";

        string filePath = Server.MapPath("~/images/ipdf/mailings/" + fileName);
        Response.Clear();

        Response.AppendHeader("content-disposition", "attachment; filename=" +       fileName);
        Response.ContentType = "application/octet-stream";
        Response.WriteFile(filePath);
        Response.Flush();
        Response.End();
    }

页面的 html(包括 W3C 标准要求的用于下载 Acrobat Reader 的按钮):
<h2>
        Our Autumn/Winter 2010 Newsletter is now available</h2>
    <p>
        Please click on the button below:</p>
    <asp:Button ID="downloadButton" runat="server" OnClick="downloadButton_Click" Text="Download Newsletter" />
    <div style="margin-top: 10px; border: 1px solid #ccc; background: #ebebeb; padding: 6px;">
        <p>
            If you do not have Adobe Acrobat Reader, you will not be able to read the Newsletter.
            To get Acrobat Reader, click the button below and download it from Adobe's website:</p>
        <a title="This link opens in a new window to allow you to download Adobe Reader!"
            href="http://get.adobe.com/uk/reader" target="_blank">
            <img alt="Get Adobe Reader for viewing PDF files" src="../Images/SharedImages/get_adobe_reader.gif"
                style="border: none;" /></a>
    </div>

我在等着看是否有人能弄清楚 pdf 可能有什么问题。否则,pestaa 会得到 cookies 。

编辑2:

我已经接受pestaa 的建议是唯一可靠的类(class)。不理想,因为这是一个可以产生脑损伤的综合症的医疗慈善机构,所以下载然后打开 pdf 的额外步骤是繁重的。但是如果浏览器在它们上面崩溃就不好。

如果有人听说此问题已得到修复,请发表评论。

最佳答案

这可能不是您要查找的内容,但如果下载 PDF 就足够了或没问题,这是您在发送内容时需要附加的 HTTP header :

Content-Disposition: attachment

这会强制浏览器弹出打开/保存对话框,并可能解决有问题的 IE 情况。

关于PDF 浏览器请求进入深度卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4156115/

相关文章:

swift 警告 : Cannot find preview item for proxy

html - html5 <audio>标签在移动浏览器中的功能受阻

未找到证书路径的 Android DownloadManager 信任 anchor

java - 为 Android 编写一个网络浏览器

css - 浏览器最小化时圆形 div 重新定位

javascript - 在浏览器中通过 Javascript 在 iOS 上保存 Zip 文件

C# WebBrowser 控件拦截从 PHP 脚本在新窗口中下载

java - 有没有办法在 jpanel 中渲染 pdf 文件?

javascript - 使用 Ajax 下载并打开 PDF 文件

pdf - 是否可以超链接到外部 pdf 选择?