2016-11-10 108 views
1

我使用iTextsharp創建PDF,然後在web瀏覽器控件中顯示PDF預覽。從預覽中,用戶可以使用默認值保存或打印Adobe Reader的按鈕強制網頁瀏覽器僅在Adobe Acrobat Reader上顯示PDF文件

使用Adobe Reader作爲默認PDF查看器的Windows x64位一切正常。

在Windows x64位上使用相同的程序,但使用Foxit Reader作爲默認PDF在完整的應用程序窗口中打開福昕閱讀器上的文件,位於我的程序外部。

我需要管理它。

我的代碼是這樣

Dim PathToPDF As String 
PathToPDF = DirectoryOfMyApp & "\ReportPreview.pdf" 
ReportPreviewWebBrowser.Navigate(PathToPDF) 

凡DirectoryOfMyApp只得到C:或d:硬盤的盤符。

我看這個鏈接 How to start an Adobe Reader or Acrobat from VB.NET?

但像

ReportPreviewWebBrowser.Navigate("acrobat", PathToPDF) 

didn't工作線,我認爲WebBrowser控件鴕鳥政策有選擇的PDF查看器

選項https://msdn.microsoft.com/es-es/library/system.windows.forms.webbrowser(v=vs.110).aspx

有沒有辦法設置網頁瀏覽器使用Ado僅限Acrobat Reader或強制任何其他PDF查看器在Web瀏覽器控件內顯示PDF?

+2

'有沒有辦法將瀏覽器設置爲僅使用Adobe Acrobat Reader或強制任何其他PDF瀏覽器在Web瀏覽器控件中顯示PDF?'簡單的回答***沒有***。 – Codexer

+0

是這樣的嗎? 「但是如果你只需要在你的程序中顯示PDF文件,Adobe提供了一個可以添加到VB.NET工具箱的ActiveX COM控件,它可以免費完成這項工作,它可能是用來顯示PDF文件的工具無論如何:免費的Adobe Acrobat PDF閱讀器。「 – fedeteka

回答

2

我同意Zaggler對他的評論。您正在對最終用戶計算機上安裝的軟件的某個特定點進行假設。除非你打算讓應用程序的PDF閱讀器成爲依賴安裝的一部分或者熟悉.NET,否則你不能保證他們有這個程序可以使用。你也不能保證它的安裝位置。

但是,對於基於Windows的進程,您可以在VB.NET中進行廉價的黑客攻擊。您可以使用OLE的System.Diagnostics.Process()

Sub Main() 
    Dim nProcess = New System.Diagnostics.Process() 
    nProcess.Start($"D:\PdfFile.pdf") 
End Sub 

在這個例子中,我做了一個快速的文件位置,你可以嘗試以確保它不會改變或者是在你的應用程序的運行過程的有效位置夾。在開發過程中,這實際上是低端技術,但它基本上是這樣說的:「讓我在這個位置運行一個進程,任何進程,我不在乎它是什麼,使用Windows默認值來確定如何處理它「。

因此,當我在Windows 10 Dev框中運行此功能時,它會加載邊緣以顯示它,在家中它會啓動Adobe Viewer。它只是在操作系統選擇使用該文件擴展名的情況下打開文件。對於強化代碼來說不夠迷人或者非常好,但是當你想要快速發生的時候它就可以工作。

+0

我還發現了另一個工作解決方案:福昕閱讀器必須安裝Web瀏覽器插件選項。在這種情況下,PDF將顯示在網頁瀏覽器控件內部,如我所願。謝謝。 – fedeteka

+1

只要小心,因爲你仍然強迫依賴。如果該依賴關係不存在,則不起作用。第三方依賴關係跟蹤和安裝在許多開發者的世界中是一場噩夢。 – djangojazz

+0

感謝您的警告 – fedeteka

0

不,你不能這樣做。

甚至不能保證安裝Adobe Reader。

閱讀器可能不存在於機器上。它不是內置於Windows,並不是每個人都使用它。即使是這樣,FoxIt也不是唯一的選擇。最大的一點是Chrome包含它自己的PDF閱讀器。

相關問題