Ghostscript dll in Projekt einbetten

  • VB.NET
  • .NET 4.5

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von slice.

    Ghostscript dll in Projekt einbetten

    Hallo zusammen :thumbup: ,

    ich habe in meinem Projekt eine PDF-Vorschau , dazu verwende ich Ghostscript und lasse mir zuerst die PDF in ein PNG konvertieren und zeige dieses anschließend mit der PictureBox an.
    Das funktioniert auch einwandfrei jedoch habe ich Probleme Ghostscript richtig in mein Projekt einzubinden.
    Obwohl ich das NuGet-Paket "Ghostscript.NET" installiert habe musste ich noch zusätzlich den Ghostscript "gs923w64.exe" Installer auf meinem PC installieren, ich denke wegen der "gsdll64.dll", dass Problem besteht darin das ich dieses auf Jeden PC installieren muss auf dem mein Projekt laufen soll.

    Wie kann ich diese "gsdll64.dll" in mein Projekt einbinden, ohne das auf jedem PC noch zusätzlich zum Projekt Ghostscript installiert werden muss?
    Oder kann ich die Ghostscript Installation in die Installation von meinem Projekt einfügen, obwohl ich das für keine schöne Variante halte.

    Ich danke euch schon mal für eure Vorschläge! :thumbsup:
    @crash Ist diese "gsdll64.dll" eine .NET-Assembly?
    Wenn ja, kannst Du sie als Verweis Deinem Projekt hinzufügen: Projekt => Eigenschaften => Verweise => neuen Verweis hinzufügen.
    Du musst dann diese DLL mit Deinem Projekt verteilen.
    Ob das allerdings genügt, musst Du an einem Rechner ausprobieren, auf dem Ghostscript nicht installiert ist.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Hallo RodFromGermany,
    leider ist es keine .NET-Assembly dll, :/ wenn ich versuche diese unter Verweise hinzuzufügen kommt eine Fehlermeldung.

    Fehlermeldung:
    Es konnte kein Verweis auf "...\gsdll64.dll" hinzugefügt werden. Stellen Sie sicher, dass auf die Datei zugegriffen werden kann und dass sie eine gültige Assembly oder COM-Komponente ist.
    @RodFromGermany Ne ist keine.

    Zur Erklärung:
    "Ghostscript.NET" aus NuGet ist eine Wrapper Library für die "Ghostscript Library", heißt dein Code ruft den aus "Ghostscript.NET" auf und der wiederum den aus "Ghostscript".
    Du musst auch beachten, auf welcher Architektur dein Projekt läuft, hast du ein 32bit Windows und lieferst die 64bit Version von Ghostscript aus, dürfte das ebenfalls zu Problemen führen.
    Und nicht zu vergessen, beachte die Lizenz von Ghostscript, wenn du das mit verteilen willst.
    @slice Danke.
    @crash Also folgendes:
    Füge die "Ghostscript.NET"-DLL (wie sie halt heißt) wie oben beschrieben Deinem Projekt hinzu.
    Lege die "gsdll64.dll" in dasselbe Verzeichnis.
    Dann musst Du beide DLLs verteilen.
    ====
    Überzeuge Dich, dass Dein Projekt korrekt auf x64 oder x86 eingestellt ist, vermeide AnyCPU, das knallt.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    @crash Mit verteilen meine ich, dass, wenn Du das Programm auf einen anderen Rechner packst, Du beide DLLs dazu packen musst.
    Lizenzen Sollten Dich natürlich dahingehend interessieren, dass Du wissen musst, wie weit Du diese DLLs mitgeben kannst.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Ist vielleicht etwas 0815, aber ich glaube der Webbrowser (muss nur importiert werden) enthält eine gute Funktion um z.B. PDF's anzuzeigen. Dazu einfach als Webbrowser Url den Pfad der Datei eingeben (C:/.../.../beispiel.pdf).

    Ist halt eine ganz andere Variante als die dll



    Edit:
    Ich kann gerade nicht auslesen ob du mit Visual Basic arbeitest aber ich glaube schon. Das Beispiel war halt auf VB bezogen


    LG Louis

    ╔══╦═╦╦╦═╦══╦══╦╗╔╦═╦╦═╦══╗
    ║║║║╩╠..╣╦╬╗╚╬╗╔╣╚╝║╠║║║╠╗╚╣
    ╚╩╩╩╩╩╩╩═╩══╝╚╝╚══╩═╩╩═╩══╝
    @RodFromGermany irgendwie mach ich etwas falsch. Ich kopiere die "gsdll64.dll" nach "…\bin\x64\debug" dort liegt auch die "Ghostscript.NET"-DLL" aber wenn ich das Projekt veröffentliche, wird diese nicht mit verteilt ?( .

    @MaxeStudios Ja ich arbeite mit Visual Basic.
    Mit dem Webbrowser hatte ich es zuerst versucht aber wenn die Datei geöffnet wird, möchte er diese immer erst runterladen da ich keine AcrobatReader installiert habe (und auch nicht möchte).
    Aber danke für die Idee.
    @crash Ist diese / sind diese DLL(s) Member des Projekts?
    Nein?
    Hinzufügen -> vorhandene Datei -> DLL(s) auswählen
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Ein Versuch ist es Wert.
    github.com/jhabjan/Ghostscript…tscriptVersionInfo.cs#L67

    Ändere einmal die Instanziierung des GhostscriptVersionInfo-Objektes von

    VB.NET-Quellcode

    1. Private _gsVersion As GhostscriptVersionInfo = GhostscriptVersionInfo.GetLastInstalledVersion()

    zu

    VB.NET-Quellcode

    1. Private _gsVersion As New GhostscriptVersionInfo(customDllPath)

    Wobei customDllPath wohl der Pfad zur DLL sein soll.

    crash schrieb:

    das diese nicht gefunden wird
    Welche DLL wird vermisst?
    Kann es sein, dass da noch mehr DLLs dazugehören?
    Öffne mal die gsdll64.dll im Dependency Viewer und sieh Dir an, was die alles noch haben will.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!