Перед использованием проверьте, установлен ли Adobe 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: После поиска и облажания я нашел 2 возможных способа сделать это, но оба я не могу найти, как это сделать в VB.net

Первый взгляд на AxAcroPDFLib.AxAcroPDF в доступных пространствах имен нашел пример C #, но я не знаю, как изменить его на Vb.net C # - Как проверить, существует ли пространство имен, класс или метод в C #??

Второй обработчик добавления необработанных исключений также нашел несколько примеров, но ни один из них, похоже, не работает

Любой шанс, что кто-нибудь может направить меня к рабочему примеру для одного (или обоих) из этих вариантов


person Neon    schedule 29.08.2016    source источник
comment
Даже если у них нет Adobe Reader, что обычно маловероятно, у них, скорее всего, есть веб-браузер, который может отображать pdf. Вы думали о том, чтобы пойти по этому пути, my free (limited) reader control их много, зачем изобретать велосипед? Мне также любопытно, как вы создали свой собственный элемент управления для просмотра PDF-файлов ...   -  person zaggler    schedule 29.08.2016
comment
Я думал об использовании веб-браузера для открытия PDF-файла, однако это не соответствует моим потребностям, также я не создавал свой собственный, я использую spire.pdf, с ограничением в 10 страниц, а некоторые из PDF-файлов имеют больше 10 страниц, я не особо ищу альтернативные способы сделать это, но если это возможно. в худшем случае я могу переустановить Adobe Reader с моей программой   -  person Neon    schedule 29.08.2016


Ответы (1)


Удалось найти рабочее решение, не работает, как я изначально думал, но работает отлично

я использовал следующий код

    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. тогда они могут

person Neon    schedule 01.09.2016