在使用之前检查Adobe Reader是否已安装

时间:2016-08-29 04:51:54

标签: vb.net pdf adobe controls reader

我希望能够让我的应用检查是否安装了Adobe Reader。 如果是,我希望我的程序使用它来显示PDF,如果不是,我想使用我的免费(有限)阅读器控件来显示PDF。

任何建议

编辑: 我的问题似乎没那么广泛 所以基本上我正在尝试以下

Try
   Dim AcroDisplay As New AxAcroPDFLib.AxAcroPDF

   AcroDisplay.Left = 50
   AcroDisplay.Top = 50
   AcroDisplay.Width = 200
   AcroDisplay.Height = 500
   me.Controls.Add(AcroDisplay)
   MsgBox("Acro Added")
Catch ex As Exception
   MsgBox("Acro Not installed")
   ''Load Alternate PDF viewer (Spire.pdf Free)
End Try

然而,当没有安装Acrobat而不是去catch语句时,它只显示错误“无法加载程序集”然后退出子

我想要的是,如果没有安装acrobat控件,它将不会显示和错误,而只是加载备用pdf查看器

有没有办法在尝试加载前检查AxAcroPDFLib.AxAcroPDF?

希望这会让事情更加清晰

编辑2: 在搜索并拧紧后,我找到了两种可能的方法,我可以做到这一点 但是我无法在VB.net中找到如何做到这一点

首先 在可用的命名空间中查找AxAcroPDFLib.AxAcroPDF 找到C#示例,但我不知道如何将其更改为Vb.net C# - How to check if namespace, class or method exists in C#?

二 添加未处理的异常处理程序 还找到了一些例子,但似乎都没有工作

任何人都可以指望我找到这些选项中的任何一个(或两个)的工作示例

1 个答案:

答案 0 :(得分:0)

Manged找到一个有效的解决方案,但是我最初的想法并没有起作用,但它的工作正常

我使用了以下代码

    Dim AdobeSoftwares As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("ADOBE")
    If AdobeSoftwares Is Nothing Then
        'MessageBox.Show("No Adobe Software")
        Dim PdfDisplay As New PdfiumViewer.PdfViewer 
        PDFControl = "Pdfium"
    Else
        If Not Array.IndexOf(AdobeSoftwares.GetSubKeyNames, "Acrobat Reader") = -1 Then
            'MessageBox.Show("Adobe Reader Installed")
            Dim PdfDisplay As New AxAcroPDFLib.AxAcroPDF
            PDFControl = "Acrobat"
        Else
            'MessageBox.Show("Adobe Reader Not Installed")
            Dim PdfDisplay As New PdfiumViewer.PdfViewer
            PDFControl = "Pdfium"
        End If
    End If

然后在我的显示代码中,我只是看看正在使用的“PDFControl”并运行相关代码以显示在该显示中

所以现在如果安装了adobe reader,我将使用它的控件,如果不是,我将使用免费(但功能较少)的控件来显示PDF文件 所以希望如果其他人正在寻找与我类似的话,那么他们可以