客户有一份 pdf 通讯,重量为 1.63 MB,所以不是很大。
我们发送了一封电子邮件,其中包含指向 pdf 的链接。否则,用户会在该站点的主页上找到一个链接。没关系。
问题是当用户请求 PDF 时,浏览器有时会进入深度卡住。即,您需要使用任务管理器来终止浏览器实例。
你可以在这里测试pdf:
Newsletter
让它变得困难的是它并不总是失败。以下是我所处的位置以及我尝试过的内容的摘要。
浏览器
最有可能因 pdf 而失败的浏览器是 Google Chrome。但是,IE 有时也会死机。
错误
谷歌浏览器有时会返回以下错误(经过漫长的等待):
“处理页面时出错。发生文件 I/O 错误。文件
连接超时。”
IE 只是没有呜咽地冻死。
杂技版
该文件最初是由设计工作室在 Adobe 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/