`
月亮不懂夜的黑
  • 浏览: 155993 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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,應該就可以解決這個問題了。

 

分享到:
评论

相关推荐

    java读取PDF显示于浏览器

    Java读取PDF并显示在浏览器是一项常见的技术需求,特别是在Web应用中,用户可能需要预览或下载PDF文档。为了实现这一功能,我们需要了解几个关键知识点: 1. **PDF阅读器集成**:描述中提到的前提是本地电脑需要...

    云外归鸟的PDF文档浏览器1.0#0版(第三方)

    5、 易语言PDF文档浏览器支持显示第一页、最后一页、下一页、前一页、指定页显示。6、 易语言PDF文档浏览器支持单页、连续页等方式的浏览。7、 易语言PDF文档浏览器支持查看浏览PDF历史中的上一视图、下一视图。8、 ...

    浏览器显示预览pdf文件

    标题“浏览器显示预览pdf文件”直指一个关键问题:在安卓设备上,用户可能遇到浏览器无法直接预览PDF文件,而是选择下载的情况。这个问题主要涉及到PDF的在线处理、浏览器兼容性和安全设置等多个方面。 首先,PDF...

    PDF浏览器(PDFReader绿色)

    PDF浏览器,全称为Portable Document Format Reader,是一种专门用于查看、阅读和打印PDF文件的应用软件。PDF格式是由Adobe公司开发的,旨在确保文档在各种操作系统和设备间保持一致的显示效果。PDFReader是一款绿色...

    PDF浏览器 简单 实用

    在选择PDF浏览器时,用户还应考虑软件的兼容性,确保它能良好地运行在自己的操作系统上,如Windows、Mac或Linux。同时,性能稳定性、更新频率以及用户支持也是评估软件质量的重要指标。 总的来说,一个优秀的PDF...

    PDF文件浏览器

    在PDF文件浏览器中,这个库可能被用来渲染PDF页面,显示图像和图形,以及处理用户界面的视觉效果。 "fxdecod1.dll"可能是一个解码库,用于解码PDF文件中的加密或压缩数据,比如图像和其他嵌入的媒体。PDF文件通常...

    Java Servlet实现在浏览器中打开pdf文件

    本篇文章将探讨如何使用Java Servlet实现在浏览器中打开PDF文件。首先,我们需要理解Servlet的工作原理和PDF文件的处理方式。 Servlet是Java编程语言中的一个接口,它定义了Web服务器与Java代码之间的交互方式。当...

    PDF浏览器 PDF浏览器

    PDF浏览器使得用户能够在任何设备上查看文档,保持原有的排版和格式不受影响。 PDF浏览器的核心功能包括: 1. **打开和阅读PDF**:支持快速加载PDF文件,提供多种阅读模式,如全屏、连续浏览、双页显示等,以适应...

    PDF浏览器PDF阅读器

    在Android平台上,开发一个PDF浏览器或阅读器通常涉及以下几个关键知识点: 1. **PDF库的使用**:Android系统本身并不内置PDF解析和显示的API,因此需要依赖第三方库。AndroidPdfViewer是一个常见的开源库,用于在...

    pdf 在浏览器页面查看

    在IE浏览器中,由于其默认行为是下载而不是显示PDF文件,我们需要采取一些策略来改变这一行为。一种方法是使用第三方库,如Adobe的PDF Reader插件或JavaScript库,如PDFObject,它可以嵌入PDF到HTML页面中。另一种...

    云外归鸟的PDF文档浏览器支持库

    1. **PDF渲染引擎**:这是PDF浏览器的核心,用于将PDF文件的内容转化为可显示的图像。它需要处理字体嵌入、图像、图形、超链接等元素,确保在各种设备和操作系统上都能正确显示。 2. **API接口**:开发者通过这些...

    浏览器查看PDF文件(JS)

    在现代Web开发中,提供在浏览器中查看PDF文件的功能已经成为一项基本需求。"浏览器查看PDF文件(JS)"这个主题,就是关于如何使用JavaScript技术,特别是jQuery库,在网页中实现这一功能的探讨。JavaScript作为浏览器...

    PDF浏览器(阅读工具).zip

    本文将详细探讨PDF浏览器的主要功能、特点、常见问题以及如何选择合适的阅读工具。 1. PDF浏览器的主要功能: - 打开和浏览:PDF浏览器可以打开并显示PDF文件的内容,包括文字、图片、图表、超链接等。 - 搜索:...

    c# 生成PDF 输出到浏览器

    5. **处理编码问题**:在生成PDF时,需要注意字符编码,确保特殊字符能正确显示。例如,使用Unicode编码,并在PDF文档设置正确的字符集。 6. **错误处理与安全**:确保在生成过程中捕获并处理可能出现的异常,如...

    安卓AndroidPdfViewer pdf浏览器

    在安卓平台上,开发一款PDF浏览器应用,通常会涉及到多个技术层面和组件的集成。这里以“安卓AndroidPdfViewer pdf浏览器”为例,我们将深入探讨如何利用AndroidPdfViewer库来实现一个功能丰富的PDF阅读器。 ...

    PDF浏览器(PDF浏览器)

    1. **快速打开与浏览**:PDF浏览器能够迅速加载PDF文件,即使文件较大,也能保证快速显示,让用户能够即时查看文档内容。 2. **搜索功能**:内置的全文搜索功能可以帮助用户快速在长篇文档中找到特定信息,提高工作...

    pdf浏览器 打开浏览pdf文件

    总的来说,"Foxit Reader"作为一款优秀的PDF浏览器,不仅满足了用户基本的PDF阅读需求,还在便携性、易用性和功能性上提供了良好的体验。无论是个人用户还是企业用户,都可以依赖它高效地处理PDF文件。

    table转换为pdf文件并显示在浏览器上的实例

    接着,要实现PDF在浏览器上的直接显示,这通常涉及到浏览器的PDF插件支持。如描述中提到,需要用户安装Adobe Reader 9或更高版本,因为早期的浏览器可能不支持内置的PDF查看器,或者内置的查看器功能有限。Adobe ...

    预览pdf浏览器插件,兼容ie浏览器

    这款插件的出现,解决了用户在在线查看PDF文件时遇到的浏览器兼容性问题,使得在不同浏览器环境下都能流畅阅读PDF文档。 PDF.js的核心功能在于将PDF文件解析为一系列的二维图形、文本和图像,然后利用HTML5的Canvas...

Global site tag (gtag.js) - Google Analytics