我希望能够让我的应用检查是否安装了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#??
二 添加未处理的异常处理程序 还找到了一些例子,但似乎都没有工作
任何人都可以指望我找到这些选项中的任何一个(或两个)的工作示例
答案 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文件 所以希望如果其他人正在寻找与我类似的话,那么他们可以