2009-05-05 40 views
1

我正在使用c#为IE创建一个按钮,并且此按钮执行某些操作,这些操作都依赖于文档是PDF文档。如果文档类型不是PDF,但不确定IE如何将文档移交给Adobe和读者负责,我正在设置警卫以防止发生任何行为。我正在使用两个SHDocWv都看过WebBrowserClass对象,并不知​​道如何解决这个问题。有什么建议么?该文件的如何找出在IE浏览器中显示什么样的文档

回答

1

这是一个有点问题做这个AFAIK。

的IWebBrowser2价值::类型财产要看是什么插件你已经安装了处理PDF文件,因为某些插件PDF文件(如Adobe)创建HTML包装等你拿“HTML文档”类型有些插件不能做到这一点(比如Foxit),所以你不能仅仅依靠这个插件。

所以,如果你有PDF和HTML包装器,您可以使用的IHTMLDocument2 :: mime类型找出该文件的确切类型(JPEG/GIF/PNG /等浏览器的文件都被包裹在HTML)。但据我所知它也不可靠,例如在我的机器上,它返回HTML文档的“Firefox文档”,因为.html文件与Firefox相关联:但我没有测试是否出现这种情况。

另一种选择是使用GetUrlCacheEntryInfoEx API调用来获得本地浏览器缓存文件存储的文档,然后将其读(只有文件的开头,我想只有前256个字节是很重要的),并调用FindMimeFromData您刚刚阅读的数据,它会返回MIME类型。

0

检查MIME类型或web浏览器看到的window.location.href ...如果显示PDF格式,你就可以找到它......

+0

无法检查URL,因为有些网站在地址中返回没有“pdf”的查询字符串。你能告诉我如何访问MIME类型和从哪个类/对象? – Grant 2009-05-05 03:43:39

0

另一种好方法是做以下..

1]铸造文档对象的IPersist然后提取使用.GetClassID(..)的CLSID。 2] pInvoke ProgIDFromCLSID提取progId 3]将progID与已知的COM对象/应用程序进行匹配。

相关问题