2009-05-05 42 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對象/應用程序進行匹配。

相關問題