2010-01-21 76 views
1

我已經有一個應用程序是一個xml/xslt驅動的文檔查看器。在當前狀態下,用戶將他們自己的瀏覽器指向xml文件,並且可以在瀏覽器中從菜單選擇中查看PDF文件,只要他們的計算機上安裝了Adobe Reader等PDF閱讀器插件即可。如何使用webbrowser控件將C#.NET應用程序包含PDF Viewer插件?

使用.NET web瀏覽器控件,我能夠創建一個我自己的小應用程序,使得文檔查看器(界面等)非常好,因此我可以不再需要用戶使用他們自己的瀏覽器。我想更進一步,不再需要用戶在他們的系統上安裝PDF查看器插件,並且只需將該插件包含到.exe中,或者讓它依賴於本地提供了插件的.dll文件。

我以前曾使用過便攜式應用程序(即Firefox),我知道這可以讓便攜式Firefox應用程序使用與便攜式應用程序在同一目錄結構中提供的插件DLL。

有沒有辦法通過迫使webbrowser控件(本質上是IE的一個實例)引用本地提供的插件的插件,或通過嵌入插件以某種方式嗎?

感謝您的任何意見。

+0

什麼是驅動需要刪除您的pdf插件的另一個瀏覽器的依賴?幾乎可以保證每個用戶都擁有瀏覽器和PDF閱讀器,爲什麼要編寫代碼並支持自己的? – Walter 2010-01-22 13:51:02

+0

嗨沃爾特,我不寫我自己的,我只是想確保讀者是我想要它的人,而不必依賴告訴用戶安裝正確的,如果它尚未安裝。例如,某些閱讀器版本中有些內容會打破。另外,我可能想要使用與Adobe Reader不同的東西。 – Streamline 2010-02-15 00:01:02

回答

0

聯繫插件的作者,看看你是否可以合法地重新分配插件。然後詢問插件是否支持webbrowser控件。很可能該插件是作爲ActiveX文檔服務器編寫的,該文檔服務器不是爲瀏覽器控件設計的,但如果該插件是寫入屬性的(即,不使用特定於IE的黑客行爲和未記錄的行爲),它應該可以工作。

您也可以編寫自己的Activex document server來處理PDF文件導航,但即使使用MFC的ActiveX文檔服務器支持,它也有很多工作。或者您可以編寫基於XBAP/Silverlight/Flash的查看器來顯示XML,並且只在客戶端打印/下載時才轉換爲PDF。

+0

該插件是您在IE中使用的插件。它不是一個服務器,而只是一個PDF查看器。當插件安裝在用戶的系統上時,它在使用webbrowser控件的應用程序中工作得很好。我問的問題實際上是關於如何使webbrowercontrol(或IE)從特定的目錄位置使用插件(它只是一個dll),而不是隻查看插件的系統默認位置。 在這一點上,我不確定有什麼服務器會帶來到這個表,因爲它作爲一個網頁從文件系統瀏覽選定的PDF文件都可以正常工作。 – Streamline 2010-01-21 19:23:25

+0

也許我之前忘記提到的一件事是,這個工具/應用程序用於查看本地駐留的PDF文件,而不是通過互聯網下載文件來查看。 – Streamline 2010-01-21 19:25:50

+0

ActiveX文檔服務器是一個COM組件,通常從DLL中導出。聯繫插件的作者,找出重新分配選項。沒有其他人知道該插件是否會在需要部署的藍色月亮中加載一次其他DLL。 – 2010-01-21 19:53:59

0

也許這個問題應該問的另一種方式,因爲WebBrowser控件真的是圍繞一個IE實例的包裝...

你怎麼知道Internet Explorer,以使用駐留在一個特定的目錄位置插件除了主機的默認插件位置?這樣我就可以確保正在使用的PDF閱讀器插件是我希望它使用的插件,而不是主機的插件。

任何人都知道如何做到這一點?

+0

我遇到了另一個需要這個實際的理由。如果用戶安裝了Adobe Acrobat,我發現了一個問題,因爲即使在指定使用Reader插件的Internet選項中,IE似乎想要使用Acrobat插件而不是Adobe Reader插件。有誰知道如何具體告訴IE或WebBrowser控件哪個插件用於加載PDF文件,它可以是一個指定目錄的插件嗎? – Streamline 2010-01-28 05:41:02

相關問題