IE9 32bit vs 64bit PDF奇怪的文件打开行为

时间:2015-01-07 10:43:51

标签: c# asp.net pdf internet-explorer-9

我正在使用MemoryStreamResponse.BinaryWrite(pdfResponse)创建的PDF文件发送回浏览器。这很好用。除了我注意到的一个小细微差别。如果我在32位IE9中运行我的应用程序,PDF将在浏览器窗口中打开。但是,如果我使用IE9 64bit来查看应用程序,它会在Adobe Reader中加载(就像我想要的那样)。完整的回复如下:

byte[] pdfResponse = pdfStream.ToArray();
Response.Clear();
Response.ClearHeaders();
Response.AddHeader("Content-Type", "application/pdf");
Response.BinaryWrite(pdfResponse);
Response.Flush();
Response.End();

两个问题:

  1. 有没有办法强制Adobe Reader在Adobe Reader中加载这两个版本? (我不需要考虑其他浏览器,因为这只适用于IE9内联网应用程序)
  2. 作为一个兴趣点,为什么这两个版本会有所不同?

2 个答案:

答案 0 :(得分:2)

这与服务器端代码无关,也与浏览器的配置有关(实际上它是用户的偏好)。

没有x64 Acrobat AX控件。

您最好的选择是提供Content-Disposition header强行下载。然后,用户可以决定打开或保存下载(将在已注册的PDF应用程序中打开)。

Response.AddHeader("Content-Disposition", "attachment; filename=mypdf.pdf");

(另外,允许网站在我的浏览器中随意打开Acrobat插件是我很久以前关闭的一种行为......两个字:攻击矢量)

答案 1 :(得分:0)

我刚发现的内容:

<强> &GT;重置“在浏览器中显示PDF”

  

在Reader或Acrobat中,右键单击文档窗口,然后选择   页面显示首选项。       从左侧列表中选择Internet。       取消选择“在浏览器中显示PDF”,然后单击“确定”。       选择编辑&gt;偏好&gt;在Internet上,选择“在浏览器中显示PDF”,然后单击“确定”。

     

&GT;尝试再次从网站打开PDF。

<强> &GT;在32位版本的Internet Explorer或Safari中查看PDF

  

Acrobat和Reader是Windows上的32位应用程序。如果你试着   在64位版本的Internet Explorer中打开PDF,PDF将打开   独立的Acrobat或Reader,而不是Internet Explorer。

     

注意:只有Reader 10.1或Acrobat 10.1及更高版本支持Internet   资源管理器9。

     

要确保您使用的是32位版本的Internet Explorer,   请按照以下步骤操作:

     

在Internet Explorer中,选择“帮助”&gt;关于Internet Explorer。 (在   某些版本的Internet Explorer,请选择中的问号   右上角选择关于Internet Explorer)。

     

如果您看到&#34; 64位版本&#34;在版本旁边,然后切换到   32位版本的Internet Explorer。

     

要切换到32位Internet Explorer,请先退出64位   IE浏览器。然后双击32位的程序图标   版本:

     

C:\ Program Files(x86)\ Internet Explorer \ iexplore.exe

也许这有帮助