博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IE不能直接顯示PDF的原因分析和解決方法
阅读量:5949 次
发布时间:2019-06-19

本文共 7214 字,大约阅读时间需要 24 分钟。

>>>>>問題<<<<<

因為有系統用iframe顯示PDF,但PDF有時卻并不能順利地在流覽器中顯示,而是跳出下載對話框,要求下載,給user帶來很多困擾,
也給我們系統維護人員帶來了麻煩,用了兩天,查找IE打開PDF的一些規則,和大家分享一下

>>>>>分析<<<<<
一.測試環境
win7 32bit
IE9
foxit reader(version 3.2.1.0401,直接將以前安裝好的目錄Foxit Software打包,然後解壓在電腦上直接執行)
adobe reader x(version 10.0.0,安裝包文件名:AdbeRdr1000_zh_TW.exe)

二.原理說明

以下註冊表鍵值,決定IE是否直接打開PDF
HKEY_CLASSES_ROOT\MIME\DataBase\Content Type\application/pdf\CLSID
1.如果CLSID中是個錯的值,即在HKCR\CLSID中不存在(如隨便一個xxxxx),
如果pdf的預設打開程式是foxit reader,那會根據foxit reader的設定,在流覽器中還是在外面開啟
如果pdf的預設打開程式是adobe reader x,則不論設定如何,都會彈出下載對話框,在流覽器外面開啟

2.如果CLSID值存在于HKCR\CLSID中,但是不是正確的foxit reader和adobe reader x的CLSID值

(測試過這兩個CLSID:{0000002F-0000-0000-C000-000000000046}:clsid中的第一個,{22D6F312-B0F6-11D0-94AB-0080C74C7E95}:Windows Media Player)
則會彈出下載對話框,當用戶選擇【打開】時,
不管pdf的默認程序是foxit reader,還是adobe reader x,都會在流覽器外面打開,而不管其是否有設定在流覽器中顯示PDF

三.adobe reader x在流覽器中打開PDF的設定

adobe reader x的CLSID:
{CA8A9780-280D-11CF-A24D-444553540000}

以下鍵值不存在則會在流覽器中顯示(默認),存在則不會在流覽器中顯示,

HKCU\Software\Adobe\Acrobat Reader\10.0\Originals\bBrowserIntegration

PS:adobe reader x在流覽器有時PDF顯示不出來,這時可以通過【說明】/【修復adobe reader安裝】后, 重新開啟流覽器或重啟系統試一下。

{CA8A9780-280D-11CF-A24D-444553540000}內容

---------------------------------------------------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}]

@="Adobe PDF Reader"
"AppID"="{BBAA0E44-3862-490C-8E63-AC2D2D6EF733}"

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\Control]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\DocObject]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\EnableFullPage]

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\EnableFullPage\.fdf]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\EnableFullPage\.pdf]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\EnableFullPage\.xdp]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\EnableFullPage\.xfd]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\EnableFullPage\.xfdf]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\Implemented Categories]

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\InprocServer32]

"ThreadingModel"="Apartment"
@="C:\\Program Files\\Common Files\\Adobe\\Acrobat\\ActiveX\\AcroPDF.dll"

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\MiscStatus]

@="0"

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\MiscStatus\1]

@="131473"

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\ProgID]

@="AcroPDF.PDF.1"

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\Programmable]

@=""

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\ToolboxBitmap32]

@="C:\\PROGRA~1\\COMMON~1\\Adobe\\Acrobat\\ActiveX\\AcroPDF.dll, 102"

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\TypeLib]

@="{05BFD3F1-6319-4F30-B752-C7A22889BCC4}"

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\Version]

@="1.0"

[HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000}\VersionIndependentProgID]

@="AcroPDF.PDF"
---------------------------------------------------------------------------------------------

關鍵是ProgID @="AcroPDF.PDF.1"

---------------------------------------------------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AcroPDF.PDF.1]

@="Adobe PDF Reader"
"EditFlags"=hex:00,00,01,00

[HKEY_CLASSES_ROOT\AcroPDF.PDF.1\CLSID]

@="{CA8A9780-280D-11CF-A24D-444553540000}"

[HKEY_CLASSES_ROOT\AcroPDF.PDF.1\DocObject]

@=""
---------------------------------------------------------------------------------------------

四.foxit reader在流覽器中打開PDF的設定
foxit reader的CLSID:
{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}

下面這些鍵值存在,則會在流覽器中打開,反之則會在流覽器外打開

---------------------------------------------------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}]

@="PDF Document"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\AuxUserType]

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\AuxUserType\2]

@="PDF"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\AuxUserType\3]

@="Foxit Reader"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\DefaultExtension]

@=".pdf, PDF Files(*.pdf)"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\DefaultIcon]

@="C:\\Users\\C036503220A\\Downloads\\foxit\\Foxit Software\\Foxit Reader\\Foxit Reader.exe,1"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\DocObject]

@="0"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\InprocHandler]

@="ole2.dll"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\InprocHandler32]

@="ole32.dll"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\Insertable]

@=""

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\LocalServer]

@="C:\\Users\\C036503220A\\Downloads\\foxit\\Foxit Software\\Foxit Reader\\Foxit Reader.exe"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\LocalServer32]

@="C:\\Users\\C036503220A\\Downloads\\foxit\\Foxit Software\\Foxit Reader\\Foxit Reader.exe"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\MiscStatus]

@="32"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\Printable]

@=""

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\ProgID]

@="FoxitReader.Document"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\Verb]

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\Verb\0]

@="&Edit,0,2"

[HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}\Verb\1]

@="&Open,0,2"
---------------------------------------------------------------------------------------------

至于

HKCU\Software\Foxit Software\Foxit Reader\MainFrame\DisplayInBrowser
值為1,則foxit reader設定對話框中的【是否在流覽器中顯示】checkbox會勾上,
值為0,則不勾上
這個設定不影響foxit reader如何在IE中打開PDF

五.其它
HKEY_CLASSES_ROOT\.pdf鍵,雖然在IE處理PDF時不起直接作用,但最好還是設定正確
adobe reader x的設定
---------------------------------------------------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.pdf]

"Content Type"="application/pdf"
@="AcroExch.Document"
---------------------------------------------------------------------------------------------

foxit reader的設定

---------------------------------------------------------------------------------------------
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.pdf]
@="FoxitReader.Document"
"Content Type"="application/pdf"
---------------------------------------------------------------------------------------------

>>>>>結論<<<<<
IE中一直彈出下載對話框,即使在adobe或foxit中已經有設定相關選項,但還是不能在流覽器中直接顯示。
最直接的原因,可能就是HKEY_CLASSES_ROOT\MIME\DataBase\Content Type\application/pdf\CLSID設定錯誤
將這個值設定為adobe或foxit正確的clsid,應該就可以解決這個問題了。

转载地址:http://dssxx.baihongyu.com/

你可能感兴趣的文章
mysql连接报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket
查看>>
我的欧拉工程之路_11
查看>>
js获取URL传参
查看>>
在接受人民币付款后 中国区App Store下载量出现井喷
查看>>
Linux 版lcx
查看>>
java.util.HashMap解读
查看>>
标准滚动条算法
查看>>
字符串练习题
查看>>
Linux的基本指令--服务器
查看>>
在LNMP环境下安装测试HTTPS及其问题
查看>>
二分图最大匹配
查看>>
合并石子,石子合并(环状区间DP)
查看>>
Apache用户认证、域名跳转、Apache访问日志
查看>>
构造函数与拷贝构造函数
查看>>
VM 9 安装64位系统,出现的问题
查看>>
New 的含义和List<T>的数据结构
查看>>
其实我们很幸运
查看>>
FLEX 24节气算法
查看>>
学习笔记之PHP 基础
查看>>
终于有人把云计算、大数据和人工智能讲明白了!
查看>>