1

我正在使用 c# 为 IE 创建一个按钮,该按钮执行某些操作,这些操作都依赖于作为 PDF 文档的文档。如果文档类型不是 PDF,但不确定 IE 如何将文档移交给 adobe 和阅读器负责,我正在尝试设置保护以防止发生任何操作。我同时使用 SHDocWv 已经查看了 WebBrowserClass 对象,但不确定如何解决这个问题。有什么建议么?

4

3 回答 3

1

做这个AFAIK有点问题。

IWebBrowser2::Type属性的值取决于您安装的处理 PDF 的插件,因为某些插件为 PDF 文件(如 Adob​​e)创建 HTML 包装器,因此您将“HTML 文档”作为类型,而某些插件不不要这样做(比如 Foxit),所以你不能只转发这个。

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

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

于 2009-05-21T11:24:22.600 回答
0

检查文档的 mime 类型或查看 webbrowser 的 window.location.href... 如果正在显示 pdf,您将能够找到它...

于 2009-05-05T03:29:19.890 回答
0

另一个好方法是执行以下操作..

1] 将 Document 对象转换为 IPersist,然后使用 .GetClassID(..) 提取 CLSID。2] pInvoke ProgIDFromCLSID 以提取 progId 3] 将 progID 与已知的 COM 对象/应用程序进行匹配。

于 2009-08-12T05:41:55.560 回答