2011-03-29 120 views
2

我上传&在SQL中保存PDF。然后人们可以在网页浏览器(IE)中打开该PDF。今天我更新了Acrobat Reader,并且无法在网络浏览器中打开相同的PDF。我可以将它保存到桌面上然后打开它。有一个在对话框中没有【打开】按钮,它说,文件可能已损坏无法在Internet Explorer中打开动态PDF文件

名称:admin.pdf

类型:使用Adobe Acrobat文档,37.8 KB

来源:domain.com

*

动态生成的PDF”链接是象下面这样: http://domain.com/admin.asp?cmd=Download_PDF&id=20112

我所做的每解决方案都在Adobe的网站上。我无法直接在IE8中打开PDF文件。

我的前ASP代码为:

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

然后,我只是改变了它,使PDF作为可下载的文件,现在我可以-AT最不下载&外部的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") 
+0

[在HTTP请求上创建的PDF不会在Internet Explorer中打开]的可能重复(http://stackoverflow.com/questions/12625108/pdf-created-on-http-request-wont-open-in-internet -explorer) – Dijkgraaf 2014-11-12 22:43:40

+0

以上管理的重复问题的解决方案通过将缓存控制设置为max-age = 1而不是无缓存来实际解决了问题 – Dijkgraaf 2014-11-12 22:53:00

回答

1

为什么你的PDF没有在浏览器中打开是因为的Adobe Reader的新的安装不注册为IE插件的原因。也许旧的插件需要先被移除。

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

如果您添加附件标题,则会显示文件保存对话框,PDF插件将不会捕获浏览器中的PDF。

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

+0

2个不同的计算机无法打开嵌入的pdf文件。我们都试过重新安装/修复/卸载/重新启动/等。我们可以保存相同的PDF文件然后打开它,所以文件损坏并不重要。 有些人警告我说他无法打开pdf文件作为嵌入。我第一次可以。然后我的Acrobat Reader已经更新。我的下一次尝试失败了。 在Acrobat Reader和IE8设置中,一切似乎都可以打开PDF作为嵌入。 任何人都可以验证并提供打开PDF的链接,以便检查我的浏览器和阅读器吗? – 2011-03-29 13:30:09

+0

现在我确认了Chrome可以打开与嵌入相同的PDF。我不知道它是Acrobat Reader插件还是Chrome的内部PDF阅读器。 HTML源代码说,Chrome生成一个HTML页面并嵌入PDF ... – 2011-03-29 13:46:54

4

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

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

所以之后我发现你的问题,我周围挖一些,并发现:

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

使用Adobe Reader 9.4.2开始,错误被引入有关的字符集,使得如果Content-Type具有字符集值,则adobe将最终查找不存在的注册表项。

我做了什么jspraul响应17建议,并补充说:

Response.Charset = null;

和你一样,我只是把我的内容类型应用程序/ PDF格式,而是因为我Response.Charset的有一个值UTF-8默认情况下,Adobe正在查找与UTF-8相关的注册表项并且无法找到它。希望adobe能够在某些时候修补这个问题,但是这应该能够在此期间解决您的问题。

相关问题