无法在Internet Explorer中打开动态PDF文件

时间:2011-03-29 08:16:41

标签: pdf asp-classic

我上传&在SQL中保存PDF。然后人们可以在Web浏览器(IE)中打开该PDF。今天我更新了Acrobat Reader,我无法在网络浏览器中打开相同的PDF。我可以将它保存到桌面然后打开它。对话框中没有[打开]按钮,表示文件可能已损坏

姓名:admin.pdf

类型:Adobe Acrobat文档,37,8 KB

来自:domain.com

*

动态生成的PDF链接如下所示: http://domain.com/admin.asp?cmd=Download_PDF&id=20112

我在Adobe和& amp ;;微软网站。我无法直接在IE8中打开PDF文件。

我的前ASP代码是:

    Response.ContentType = rsFile("filetype")
    Response.BinaryWrite rsFile("filedata")

然后我只是将其更改为PDF作为可下载文件,现在我可以 - 至少 - 下载&在外部Acrobat Reader中打开它(对话框显示[打开] [下载] [取消]按钮):

 Response.Buffer = TRUE
    'Response.ContentType = "application/pdf"
    Response.ContentType = rsFile("filetype")
    Response.AddHeader "Content-Disposition", "attachment; filename=" & filename & ".pdf"       
    Response.BinaryWrite rsFile("filedata")

2 个答案:

答案 0 :(得分:4)

我今天偶然发现了同样的问题,并挖出了一个解决方案。

我们还有一个提供存储在SQL数据库中的pdf的站点。当aspx页面尝试提供pdf时,它会显示与您描述的完全相同的对话框。它只影响IE8(这里没有人有我可以测试的任何其他版本的IE);最新版本的Chrome,Firefox和Safari都在浏览器中加载了pdf而没有发生任何事故。

所以在我找到你的问题后,我又挖了一些,发现了以下内容:

http://forums.adobe.com/thread/792591

从adobe reader 9.4.2开始,引入了一个与字符集相关的错误,这样如果Content-Type有一个charset值,adobe最终会找到一个不存在的注册表项。

我做了jspraul在回复17中提出的建议,并补充道:

Response.Charset = null;

和你一样,我只是将我的Content-Type设置为application / pdf,但由于我的Response.Charset默认值为UTF-8,因此adobe正在寻找与UTF-8相关的注册表项,并且未能找到它。希望adobe会在某些时候修补此问题,但这应该可以解决你的问题。

答案 1 :(得分:1)

您在PDF中未在浏览器中打开的原因是因为Adobe Reader的新安装未注册为IE插件。也许需要首先删除旧的插件需求。

如果特定版本的Adobe Reader无法打开PDF,则可能是PDF已损坏。确保您的ASP代码紧密包装,并且您不会错误地在浏览器中写入空格或换行符。记得最后调用Response.Flush。

如果添加附件标题,则会显示“文件保存”对话框,并且PDF插件不会在浏览器中捕获PDF。

您的浏览器也可能正在从缓存中加载较旧的PDF损坏副本。清空IE缓存(临时Internet文件)。