IE不能直接顯示PDF的原因分析和解決方法

>>>>>問題<<<<<
因為有系統用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://www.pswp.cn/news/280673.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280673.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280673.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 程序圖標設置/winform 圖標

一、目的、實際情況 1.編寫一個winform 程序&#xff0c;發現有一個圖標非常有意義。區分其他程序&#xff0c;以及感覺在做產品而不是寫代碼。 2.添加圖標圖片發現&#xff0c;需要用ico格式。在線轉換&#xff08;某度搜索&#xff09;還是不靠譜。要微信登陸&#xff0c;登…

數字化轉型,究竟在“轉”什么?

這是頭哥侃碼的第265篇原創「頭哥嘮B嘮」這個欄目已經持續了幾個月了&#xff0c;沒想到還在繼續進行&#xff0c;并收獲了很多朋友們的喜愛。非常感謝大家的支持&#xff01;在上次的直播中&#xff0c;我找來了我的老熟人們。一個是右軍老師&#xff0c;之前 APISIX 的很多內…

C++ Primer 第Ⅲ部分筆記——類設計者的工具

1.對象移動 1.1右值引用 右值引用區別于普通引用&#xff0c;用兩個&表示 返回左值引用的函數&#xff0c;連同賦值、下標、解引用和前置遞增遞減運算符返回左值 返回非引用的函數&#xff0c;連同算術、關系、位以及后置遞增遞減運算符都生成右值 我們不能將左值引用綁定到…

Crash 的文明世界

題目描述 給一棵樹&#xff0c;求以每個點為根時下列式子的值。 題解 當k1時這就是一個經典的換根dp問題。 所以這道題還是要用換根dp解決。 部分分做法&#xff1a; 考慮轉移時是這樣的一個形式(圖是抄的)。 用二項式定理展開就可以nk2做了。 觀察到結果是一個xk的形式。 然后…

wampServer配置WWW根目錄遇到的坑

直接在官網下載之后開始安裝&#xff0c;一切正常 打開使用&#xff0c;一切正常 設置WWW目錄。坑了一波 按照的都是百度上的教程&#xff0c;設置httpd.conf 這里配置之后網頁訪問127.0.0.1 還是localhost都還是原始的www目錄 后來 我發現了這里 是配置虛擬URL的地方。以上是正…

windows安裝程序創建_如何在Windows上創建已安裝程序的列表

windows安裝程序創建Reinstalling Windows is a good way to fix serious problems with your computer, or just to get a fresh slate. But before you reinstall Windows, you should make a list of programs you currently have installed on your PC so you know what yo…

實現一個更新所有 dotnet tool 的 dotnet tool

實現一個更新所有 dotnet tool 的 dotnet toolIntrodotnet tool 是從 .NET Core 2.1 開始支持的命令行工具&#xff0c;在使用 dotnet tool 比較多了的時候&#xff0c;想要更新所有的 dotnet tool 就比較麻煩&#xff0c;而目前 .NET SDK 還不支持&#xff0c;也有一些人希望能…

C# 普通權限運行程序\非管理員運行\降低權限運行

一、目的與實際 1.VS設置管理員權限運行程序后&#xff0c;發現調用powershell命令或程序需要普通權限即可&#xff0c;Administrator權限反而錯。 2.網上搜索關鍵字&#xff0c;大部分都是怎么使用管理員權限運行。 3.bing搜索意外發現有相關資料&#xff0c;記錄分享。 二…

am335x PDK3.0 設置為單網口配置記錄

原來的配置是雙網口的&#xff0c;現在要配置為單網口。一直以為這個配置是在 make menuconfig 里面&#xff0c; 沒想到是在設備樹里面。修改設備樹// vim arch/arm/boot/dts/am335x-sbc7109.dts722 &mac {723 pinctrl-names "default", "sleep"…

[AHOI2009]飛行棋 BZOJ1800

題目描述 給出圓周上的若干個點&#xff0c;已知點與點之間的弧長&#xff0c;其值均為正整數&#xff0c;并依圓周順序排列。 請找出這些點中有沒有可以圍成矩形的&#xff0c;并希望在最短時間內找出所有不重復矩形。 輸入輸出格式 輸入格式&#xff1a;第一行為正整數N&…

webapi+Quartz.NET解決若干定時程序同時運行的問題

項目現狀&#xff1a; 有若干定時程序需要自啟動運行&#xff0c;為了簡便程序部署等問題&#xff0c;采取這種辦法把定時程序集中管理到webapi中跟隨api發布 代碼架構介紹&#xff1a; 新建一個類庫&#xff0c;類庫引用Quartz&#xff08;Quartz.2.3.2&#xff09;&#xff0…

mac恢復iphone_免費下載:舊Mac和iPhone壁紙的令人震驚的完整檔案

mac恢復iphoneLove or hate Apple, you’ve got to admit: their background images are consistently stunning. Now you can download all of them. 愛或恨蘋果&#xff0c;您必須承認&#xff1a;它們的背景圖像始終令人贊嘆。 現在&#xff0c;您可以下載所有這些文件。 A …

Django01-1: request 方法

#POST request.method #返回全大寫字符穿&#xff0c;<class str> POST/GETrequest.POST #用戶提交數據&#xff0c;不包含文件 #<QueryDict>request.POST.get(hobby) #拿列表最后一個 request.POST.getList(hobby) #拿多個&#xff0c;列表全部#GET 獲取url &a…

Magicodes.IE 2.7.1發布

2.7.12022.12.01Magicodes.IE.EPPlus默認添加SkiaSharp.NativeAssets.Linux.NoDependencies包&#xff0c;以便于在Linux環境下使用導入驗證支持將錯誤數據通過Stream的方式返回&#xff0c;感謝sampsonye &#xff08;見pr#466&#xff09;2.7.02022.11.07添加SkiaSharp移除Si…

Oracle監聽的靜態注冊和動態注冊

靜態注冊&#xff1a;通過解析listene.ora文件 動態注冊&#xff1a;由PMON進程動態注冊至監聽中 在沒有listener.ora配置文件的情況下&#xff0c;如果啟動監聽&#xff0c;則監聽為動態注冊。用圖形化netca創建的監聽&#xff0c;默認也為動態注冊 1.靜態注冊 listener.ora文…

AKOJ-1695-找素數

題意&#xff1a; 給定區間L&#xff0c;R。 計算區間中素數個數。 2 < L,R < 2147483647, R-L < 1000000。 思路&#xff1a; 素數區間篩 先篩(2-sqrt(r))。 再用(2-sqrt(r))中的素數篩(l-r)。 代碼: 1.自己寫的區間篩&#xff0c;將篩2-sqrt&#xff08;r) 分開了。…

Spring 環境與profile(一)——超簡用例

什么是profile,為什么需要profile? 在開發時&#xff0c;不同環境&#xff08;開發、聯調、預發、正式等&#xff09;所需的配置不同導致&#xff0c;如果每改變一個環境就更改配置不但麻煩&#xff08;修改代碼、重新構建&#xff09;而且容易出錯。Spring提供了解決方案。 方…

Django04-1: ORM增刪改查

ORM 增刪改查 一、字段增加 #終端輸入 1.model里添加字段&#xff0c; 2.執行遷移命令。 3.終端里輸入默認值&#xff0c;繼續執行遷移命令。 #允許為空 再nulltrue&#xff0c;終端不需要輸入默認值 #設置默認值 defalult‘xxxx‘ 二、字段修改 1.直接修改代碼&…

Comcast以純文本泄露客戶Wi-Fi登錄信息,立即更改密碼

A Comcast Xfinity website was leaking Wi-Fi names and passwords, meaning now is a good time to change your Wi-Fi passcode. Comcast Xfinity網站泄漏了Wi-Fi名稱和密碼&#xff0c;這意味著現在是更改Wi-Fi密碼的好時機。 The site, intended to help new customers se…

SpringBoot詳解(一)-快速入門

SpringBoot詳解系列文章&#xff1a;SpringBoot詳解&#xff08;一&#xff09;-快速入門SpringBoot詳解&#xff08;二&#xff09;-Spring Boot的核心SpringBoot詳解&#xff08;三&#xff09;-Spring Boot的web開發SpringBoot詳解&#xff08;四&#xff09;-優雅地處理日志…