Benutzer mit den meisten Antworten
com / klassen Fehler

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
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]- Als Antwort markiert Monarch-Falter Mittwoch, 11. März 2015 10:07
Alle Antworten
-
-
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
-
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
- Bearbeitet Stefan FalzModerator Donnerstag, 5. März 2015 15:44
-
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] -
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
- Bearbeitet Monarch-Falter Donnerstag, 5. März 2015 16:37
-
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://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 -
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]- Als Antwort markiert Monarch-Falter Mittwoch, 11. März 2015 10:07