Adobe PDF ActiveX DLL lässt sich nicht in VB.NET-Projekt laden

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Adobe PDF ActiveX DLL lässt sich nicht in VB.NET-Projekt laden

    Hallo
    Ich kann die Adobe-Reader ActiveX nicht in mein VB.NET Projekt laden. Im Anhang die Fehlermeldung.
    Die neuste Version des Adobe-Readers ist installiert, daran kann es also kaum liegen.
    Hat jemand eine Idee?
    Herzlichen Dank
    Bilder
    • Clipboard.jpg

      217,91 kB, 1.541×885, 527 mal angesehen
    @icewather Schalt mal um von AnyCPU auf x86 oder x64, eines von beiden sollte laufen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Leider kann ich Adobe Reader weder mit x86 noch mit x64 einbinden - es kommt der gleiche Fehler.
    Wenn ich auf x64 gehe, läuft meine Applikation nicht mehr. Da kommen dann andere Fehler

    Die adoberfp.dll ist Version 11.0.20.17 vom 28.03.2017
    Ich habe auch eine ältere Version getestet aus dem Jahr 2012 - geht auch nicht.

    Hat jemand eine weiterführende Idee? Danke
    Guten Tag @icewather

    Wahrscheinlich handelt es sich bei der adobertp.dll nicht um eine .Net-Assembly. D.h. es müsste abgekärt werde, ob überhaupt auf so eine Dll zugegriffen werden kann. Eventuell mit DllImport. Es gibt dazu sicher Infos im I-Netz.

    Freundliche Grüsse

    exc-jdbi
    @icewather Ich kann diesen EWffekt nachvollziehen.
    Die DLL adoberfp.dll ist keine COM-Komponente, Du kannst sie auf diesem Weg nicht einbinden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke für die freundliche Nachfrage. Folgendes möchte ich machen:

    Ich habe eine Dateiliste mit verschiedenen Dateitypen in einem ListView. Wenn eine Bilddatei angeklickt wird, öffnet sich das Bild in einer PictureBox. Wenn ein PDF angeklickt wird, möchte ich gerne innerhalb des VB.NET Programms den AdobeReader-Viewer in einem kleinen Fenster öffnen - der Benutzer erhält so einen kleinen Einblick in sein PDF. - Vielleicht ist das auch nicht möglich. Wäre einfach schön :)
    Du könntest das PDF im Webbrowser-Control anzeigen oder eine der vielen Fremdcomponenten benutzen.
    Davon gibt es recht teure, professionelle Lösungen, aber auch ein paar kostenlose Varianten.
    Eine davon kann sogar kostenlos und kommerziell benutzt werden, ist aber in der Free-Version auf das Anzeigen von 10 PDF-Seiten beschränkt.
    Vielleicht reicht das ja?
    Hier ein Link: Free Spire.PDFViewer for .NET
    @simpelSoft Jou.
    @icewather Zeige die PDF einfach im WebBrowser-Control an.

    VB.NET-Quellcode

    1. WebBrowser1.Navigate("C:\Temp\MyPDF.pdf")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @icewather so könnte das auch funktionieren

    Ich hab jetzt eine Listbox dafür genommen. Einfach Doppelklick auf die gewünschte Datei in der Listbox.
    Es soll lediglich zeigen wie es geht. Verbesserungen vom Syntax und Optimierungen musstest du machen.



    Freundliche Grüsse

    exc-jdbi
    Dateien
    • LoadPdf.zip

      (104 kB, 179 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „exc-jdbi“ ()

    So, nun bin ich endlich dazu gekommen, die Sache anzupacken. Die Browser-Lösung ist cool. Vor allem auch, weil der User im Fenster gleich alles mit dem PDF machen kann, was das WebBrowser-Control zur Verfügung stellt (zb ausdrucken usw.).

    Nun bin ich auf den Geschmack gekommen :) und dachte mir: Dann zeige ich gleich möglichst viele Files im Preview-Modus im WebBrowser-Control. Doch das scheint nicht so einfach. Bilddaten sind die meisten problemlos. Doch Office-Dateien kann der Webbrowser nicht direkt öffnen, d.h. er fragt, ob in Word ect. geöffnet werden soll. -

    Die Office-Dateien ab 2007 sind doch im XML-Formt geschrieben und sollten doch browsertauglich sein!? Vermutlich werden die Dateien gezippt, um Platz zu sparen. Gibt es eine Möglichkeit, xlsx und docx innerhalb VB.NET zu öffnen und in einer Windows-Form darzustellen? Ich habe im Web nur aufwendige Lösungen gefunden. zb wird im Hintergrund Word geöffnet, das Dokument geladen, neu als HTML-Datei gespeichert und dann im Webbrowser dargestellt. Aber das geht "ewig" und macht für ein rasches Preview auch nicht wirklich Sinn. Gibt es weitere Möglichkeiten ohne Word oder Excel zu starten?

    Danke für einen weiteren Tipp - falls irgendjemand eine Idee hat.

    ------------------------

    Bin noch auf eine Spur gestossen: support.microsoft.com/de-ch/he…asic-to-open-an-office-do
    Ich berichte später, ob das funktioniert hat :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „icewather“ ()

    Ok, ich bin mit den Office-Dateien vorerst gestrandet!
    Das habe ich nicht zum Laufen gebracht:
    Bin noch auf eine Spur gestossen: support.microsoft.com/de-ch/he…asic-to-open-an-office-doIch berichte später, ob das funktioniert hat


    PDFs im Webbrowser
    Dann ein weiteres Problem: Wenn ich PDFs im Webbrowser anzeige, kriege ich diese nicht mehr aus dem Webbrowser hinaus. Konkret: Ich kann den Webbrowser nicht "löschen", nicht zurücksetzen, nicht "grau" machen. PDFs werden einfach weiter angezeigt. Die einzige Möglichkeit, die es gibt, ist ein "leeres, graues PDF" zu laden. Aber das ist doch dumm!
    Diese Codes nützen nichts:

    Quellcode

    1. WebBrowser.Dispose()
    2. WebBrowser.Navigate("About:Blank")
    3. WebBrowser.Refresh()


    Deshalb kann ich die im Webbrowser angezeigte PDF auch nicht löschen. Es kommt die Fehlermeldung, dass ein anderer Prozess die Datei geöffnet hat.

    Quellcode

    1. File.Delete(vDatei)


    Ich habe intensiv im Internet gesucht, aber echt nichts gefunden. Hat jemand aus diesem Forum einen Tipp?
    Bei mir tuts das hier um die Datei wieder freigänglich zu machen:

    VB.NET-Quellcode

    1. WebBrowser1.Navigate("")

    Man muss jedoch kurz warten, bis er fertig navigiert hat, da die Datei scheinbar nicht sofort frei gegeben wird.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    icewather schrieb:

    Diese Codes nützen nichts:

    VB.NET-Quellcode

    1. WebBrowser.Dispose()
    2. WebBrowser.Navigate("About:Blank")
    3. WebBrowser.Refresh()
    Ein disposester Webbrowser kann nicht navigieren, Du musst ihn erst neu instanziieren: WebBrowser = New WebBrowser()
    Probier mal nur dies:

    VB.NET-Quellcode

    1. WebBrowser.Navigate("About:Blank")

    Allerdings kann ich mir nicht vorstellen, das das nicht reicht. Hast Du ggf. zwei WebBrowser-Instanzen zu laufen und Du bist ggf. auf der falschen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Leider geht einfach nichts davon. Immer noch die gleiche Fehlermeldung, dass die Datei nicht gelöscht werden kann, weil sie von einem anderen Prozess verwendet wird. Interessant ist auch, dass das PDF im Webbrowser auch nach webbrowser = new webbrowser() immer noch im Webbrowser dargestellt wird, so als hätte ich keine neue Navigation oder was auch immer gemacht.
    Mein Code:

    Quellcode

    1. Private Sub ResFileDel(vDelAll As Boolean)
    2. If LöschWarnung("diese Datei") = False Then Exit Sub
    3. Dim vDatei As String = liResDateiPfad.SelectedItems(0).SubItems(1).Text & liResDateiPfad.SelectedItems(0).Text
    4. Dim vDateiIdTemp As Long = liResDateiPfad.SelectedItems(0).SubItems(2).Text
    5. dbDao = dbEn.OpenDatabase(vdbPath, Nothing, False)
    6. If vDelAll = True Then
    7. If File.Exists(vDatei) Then
    8. Try
    9. File.Delete(vDatei)
    10. Catch ex As System.IO.IOException
    11. If (Path.GetExtension(vDatei) = ".jpg") Or (Path.GetExtension(vDatei) = ".png") Or (Path.GetExtension(vDatei) = ".gif") Or (Path.GetExtension(vDatei) = ".jpeg") Or (Path.GetExtension(vDatei) = ".bmp") Then
    12. picPersBox.ImageLocation = Nothing
    13. picPersBox.Image = Nothing
    14. picPersBox.Image = Image.FromFile(Nothing)
    15. File.Delete(vDatei)
    16. ElseIf (Path.GetExtension(vDatei) = ".pdf") Then
    17. WebBrowser.Navigate("About:Blank")
    18. WebBrowser.Dispose()
    19. WebBrowser = New WebBrowser()
    20. WebBrowser.Refresh()
    21. Threading.Thread.Sleep(3000)
    22. File.Delete(vDatei)
    23. WebBrowser.Visible = False
    24. 'asdfasdf
    25. End If
    26. End Try
    27. Else
    28. If MsgBox("Die Datei: " & vDatei & zs & "kann nicht gefunden werden. Soll der Eintrag aus der Datenbank gelöscht werden?", MsgBoxStyle.Question, "Fehlende Datei") = MsgBoxResult.No Then Exit Sub
    29. End If
    30. End If
    31. dbDao.Execute("DELETE FROM File WHERE FileId = " & vDateiIdTemp)
    32. dbDao.Close()
    33. ModuleDataBinding.LiResDateiPfad_fill()
    34. End Sub

    icewather schrieb:

    Interessant ist auch, dass das PDF im Webbrowser auch nach webbrowser = new webbrowser() immer noch im Webbrowser dargestellt wird

    RodFromGermany schrieb:

    Hast Du ggf. zwei WebBrowser-Instanzen zu laufen und Du bist ggf. auf der falschen?
    Finde in Deinem Projekt New WebBrowser und ordne die Instanzen zu.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wie heißt dein Webbrowser Steuerelement das auf der Form liegt?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    ich habe das Steuerelement einfach Webbrowser benannt, wie oben sichtbar. Nun jedoch als weitere Fehlerquelle umbenannt in ResWebBrowser - aber der Fehler bleibt.

    Zu RodFromGermany: Ich verstehe nicht:
    ​Finde in Deinem Projekt New WebBrowser und ordne die Instanzen zu.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „icewather“ ()