写道
>>>>>問題<<<<<
因為有系統用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,應該就可以解決這個問題了。

转载于:https://www.cnblogs.com/pigga/p/10098266.html

pdf在浏览器的显示问题相关推荐

  1. 用 texstudio, 外部 pdf 浏览器查看可以正常显示中文, 但是内置的 pdf 浏览器不能显示中文?

    文章目录 第一种方法 下面是总结一下: 关于 `poppler` 的依赖: 具体的步骤 第二种方法 第一种方法 这个问题见知乎的帖子: 用texstudio,外部pdf浏览器查看可以正常显示中文,但是 ...

  2. 微信或手机浏览器在线显示pdf文件

    问题及解决 在之前的文章中提到了如何在手机上显示office文件,这里提一下pdf文件如何在手机上展示.问题发生情况是,公司企业号会从OA系统定时获取信息,并且解析内网文章中的图片.文件,展示在微信中 ...

  3. Mac 下texstudio内置pdf浏览器不显示中文

    机器: MacOS Monterey Texstudio版本:2.12.16 问题:加载ctex宏包后,内建pdf阅读器不显示中文,外部pdf浏览器可以正常显示中文. 解决方式主要参考:知乎 记录一下 ...

  4. 解决部分浏览器不能显示itext生成的PDF文件文本域内容问题

    解决部分浏览器不能显示itext生成的PDF文件文本域内容问题 参考文章: (1)解决部分浏览器不能显示itext生成的PDF文件文本域内容问题 (2)https://www.cnblogs.com/ ...

  5. php 集成 pdf.js,JavaScript_js插件方式打开pdf文件(浏览器pdf插件分享),两种方案:一种直接链接,把p - phpStudy...

    js插件方式打开pdf文件(浏览器pdf插件分享) 两种方案:一种直接链接,把pdf文件当作img文件,类似这种形式,这样链接: 另一种:使用js插件哈. 其中实现阅读pdf文件的js插件很多,比如: ...

  6. 修改360浏览器 标题栏 显示的文字

    作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com 修改360浏览器 标题栏 显示的文字 === ...

  7. 使用 x3dom 框架及 WebGL 在浏览器上显示 3 维模型

    如果需要在浏览器上显示 3D 画面的话, 现在一般会使用 ​WebGL, 典型的例如 three.js(​http://mrdoob.github.com/three.js/), 但是 WebGL 对 ...

  8. new Date(2019-05-10 08:00:00) 格式在IE内核或者低版本浏览器中显示NaN或者Invalid Date的问题...

    js new Date("2019-05-10 08:00:00") 格式在IE内核或者低版本浏览器中显示NaN或者Invalid Date的问题. 在高级浏览器上new Date ...

  9. php xml 格式化,PHP实现浏览器格式化显示XML的方法示例

    本文实例讲述了PHP实现浏览器格式化显示XML的方法.分享给大家供大家参考,具体如下: 在头部加上 header("Content-type: application/xml"); ...

最新文章

  1. Java基础第十三天总结
  2. jsp中jsp中群发邮件群发邮件
  3. c# mysql 文件存储_c# 如何实现保存文件到数据库
  4. RMAN CONFIGURE
  5. 重磅!ICDAR 2019-LSVT街景文字识别国际竞赛!奖金丰厚
  6. leetcode 429 层序遍历n叉树(C语言)
  7. 前端中LED字体的实现
  8. 职称计算机考试f11,2016全国职称计算机考试PowerPoint单选试题3
  9. php opendir(),php之opendir()函数的用法
  10. 微信小程序上传图片到服务器总是失败_微信小程序上传图片到服务器实例
  11. c语言 最大子段和,C语言程序设计100例之(13):最大子段和
  12. 删除oracle安装目录,Oracle 卸载
  13. javaweb_表单设计
  14. Matlab读取处理Excel数据并拟合正态分布曲线
  15. 金属酞菁催化剂可促进氧还原反应
  16. 《孙子兵法战略运筹之谋攻篇》
  17. k8s学习-深入理解Pod对象
  18. 服务器cpu哪个型号主频最高,史上最高主频 默认4.4GHz至强CPU发布
  19. 拍乐云创始人CEO赵加雨:深耕18载,打造全景式音视频服务
  20. matlab surf 坐标设置,matlab中3D曲面函数surf的坐标问题

热门文章

  1. winform app.cpnfig 文件的引用
  2. Spring Cloud Dalston.SR5 BUG一记
  3. iOS开发之登录注册系统
  4. android studio导入jar包
  5. win10 如何配置 java jdk1.8环境变量(2017.8.17 )jdk1.8.0_144
  6. 推荐10款非常有用的 Ajax 插件
  7. spring实例化bean的方式
  8. CentOS 7 更换 yum 源
  9. ArcGIS案例学习笔记-找出最近距离的垂线
  10. 李彦宏:AI在我有生之年不会毁灭人类