我正在使用MemoryStream
将Response.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();
两个问题:
答案 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
也许这有帮助