none
com / klassen Fehler RRS feed

  • Frage

  • Hallo Experten,

    ich bekomme folgende Fehlermeldung:

    System.Runtime.InteropServics.comException (0x...): Die Com-Klassenfactory für die Komponete mit CLSID{...} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80040154 Klasse nicht registriert.

    Hier der Code, der den Fehler auslöst:

    Imports PDFCreator
    Imports PDFShellLib
    
    Public Sub xy
    ...
            pErr = New PDFCreator.clsPDFCreatorError
            _PDFCreator = New PDFCreator.clsPDFCreator
    ...
    end sub

    Das seltsame ist, dass der Fehler nur auf dem Zielrechner ( auf dem das Programm installiert ist) auftritt. Auf meinem Entwicklungsrechner tritt der Fehler nicht auf. Auf den Zielrechner ist der PDFCreator vorhanden.

    Ich mach da jetzt schon 2 Tage rum ... für jeden Idee dankbar ... mfg eem monarch

    Donnerstag, 5. März 2015 13:39

Antworten

  • Wenn Du mal in meinen letzten Screenshot nachsiehst, dann läuft COM über eine TLB (Type Library). Das hat kann 2 Gründe haben

    - Um Rückwärtskompatibilität zu gewährleisten. Sie mal im Ordner "C:\Program Files (x86)\Common Files\System\ado" nach, bei mir liegen da zu ADO 7 TLB, aber nur eine ADO DLL.

    - Für die COM Schnittstelle eines .NET Assemblies, und im PDFCreator Ordner liegen doch .NET Assemblies rum, warum verwendest Du nicht die?


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 6. März 2015 10:25

Alle Antworten

  • Hallo,

    Ist den auf dem Zielrechner die gleiche Version vom PDF-Creator wie auf Deinem Rechner installiert? Eine andere Version kann andere CLSID's haben.

    Hast Du in der Registry geprüft, ob die CLSID vorhanden ist?


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Donnerstag, 5. März 2015 14:11
  • Hallo Olaf,

    werde ich prüfen und mich wieder melden. Aber, mal ne frage nehmen wir mal an ich hätte die Version 5 und der Zielrechner auch. Wenn jetzt auf den Zielrechner ein Update durchgeführt wird auf Version 6, dann kann es sein, dass das ganze nicht mehr funzt ?!?! Was könnte man denn dagegen tun ???

    mfg eem monarch

    Donnerstag, 5. März 2015 14:42
  • Hi,

    in der Regel achten die Entwickler solcher Komponenten darauf, dass genau das eben nicht passiert. Wenn die CLSIDs geändert werden, hat das in der Regel einen (mehr oder weniger guten) Grund.

    In der Regel werden die Sachen aber auch über die ProgId angesprochen und die ändert sich eigentlich noch seltener.

    Wenn ich mir aber http://www.pdfforge.org/pdfcreator/manual/pdfcreator anschaue, scheint genau das beim PDFCreator der Fall zu sein.

    Aber entweder bin ich doof oder blind (oder beides), ich kann da zum COM Objekt nichts finden, was den Namen Doku auch nur im Ansatz verdienen würde. Daher weiß ich nicht, ob das, was Du da machen willst, überhaupt (noch) geht.

    Welche Version hast Du denn bei dir? Da die neuesten Versionen anscheinend nur noch auf deren Homepage und nicht mehr auf der Sourceforge Seite vorhanden sind, würde ich das mal prüfen.

    Die letzte Version auf Sourceforge ist wohl 1.7.2, aktuell ist aber 2.0, siehe dazu:

      http://www.pdfforge.org/pdfcreator/download


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community



    Donnerstag, 5. März 2015 15:11
    Moderator
  • Zufällig haben wir den seit neuesten auch und siehe da, es gibt eine COM Schnittstelle:

    und wenn ich in der Registry nachsehe, dann heisst die PDFCreatorBeta;da würde ich erst mal die Finger von weg lassen.

    Was man machen kann, falls sich wirklich die CLSID ändert (und nicht nur nicht richtig registriert ist)?
    Ganz einfach, ein langes Gesicht. Danach musst Du eine Rechner mit Entwicklungsumgebung + PDFCreator Version aufsetzen, im Projekt die Verweise aktualisieren und dann neu kompilieren.

    Deswegen nennen wir das auch DLL-Hell.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Donnerstag, 5. März 2015 15:37
  • Hallo Olaf, Stefan,

    Glückwunsch, ihr habt es geschafft ich hab Margenschmerzen ! Aber, der Reihe nach:

    -Mein Version ist 1.6.0 und ich habe auch eine COM-Beschreibung (soll ich nun updaten oder nicht !?!?!) siehe hier : com-beschreibung

    - Und auf 7 Rechner die Enterprice Edition zu installieren und jeweils das Programm dort kompilieren kann ja nicht die lösung sein.

    Das Problem ist halt, das ich aus VB heraus verschiedene Reports (Report Builder 3.0) als PDF erstelle und dann mit diversen Code zu einer PDF zusammen setzte und via Mail versende.

    Was mach ich denn nun ...

    mfg eem monarch



    Donnerstag, 5. März 2015 16:15
  • Hi,

    nichts gegen PDFCreator aber die API scheint mir weder durchdacht noch sinnvoll aufgebaut zu sein.

    Ich würde daher derzeit von der Verwendung der PDFCreator COM Komponente abraten.

    Es gibt andere Tools, die mit PDF Dateien umgehen können. Wenn es nur um das Zusammensetzen mehrerer PDF Dateien zu einer PDF Datei geht, würde ich mal PDFSharp oder iTextSharp (da allerdings eher die älteren Versionen, da die seit einiger Zeit ein IMHO "komisches" Lizenzmodell haben) anschauen.

      http://weblogs.sqlteam.com/mladenp/archive/2014/01/10/simple-merging-of-pdf-documents-with-itextsharp-5-4-5.aspx

      http://www.pdfsharp.net/PDFsharpFeatures.ashx

    Die beiden Tools können natürlich auch noch mehr, für meinen Geschmack ist die API bei beiden aber ziemlich umständlich zu nutzen.

    Wenn Du erheblich mehr machen willst (PDF Dateien komplett per Code oder aus Vorlagen mit eigenen Erweiterungen erstellen, bestehende PDFs manipulieren, andere Dateiformate in PDF konvertieren, Inhalte extrahieren, Seiten extrahieren, Stamps einfügen, usw.) wäre Aspose.Pdf einen Blick wert. Günstig ist das Produkt nicht aber dafür sehr gut und die API verdient ihren Namen auch.

      http://www.aspose.com/products/aspose.pdf


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 5. März 2015 16:37
    Moderator
  • Wenn Du mal in meinen letzten Screenshot nachsiehst, dann läuft COM über eine TLB (Type Library). Das hat kann 2 Gründe haben

    - Um Rückwärtskompatibilität zu gewährleisten. Sie mal im Ordner "C:\Program Files (x86)\Common Files\System\ado" nach, bei mir liegen da zu ADO 7 TLB, aber nur eine ADO DLL.

    - Für die COM Schnittstelle eines .NET Assemblies, und im PDFCreator Ordner liegen doch .NET Assemblies rum, warum verwendest Du nicht die?


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 6. März 2015 10:25