Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Acrobat Reader COM / OLE API (https://www.delphipraxis.net/111508-acrobat-reader-com-ole-api.html)

ulrich.b 4. Apr 2008 14:07


Acrobat Reader COM / OLE API
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe versucht, die Acrobat Reader COM API anzusprechen, und bin klaglos gescheitert.

Wenn man in C# eine Instanz von "AcroApp" zu erstellen bekommt man eine COMException:
"Retrieving the COM class factory for component with CLSID {85DE1C45-2C66-101B-B02E-04021C009402} failed due to the following error: 80040154"

Das ganze hab ich versucht mit einer Acrobat Reader 8.1.2 Installation (auf 2 versch. Systemen)

Sogar das in der SDK mitgelieferte Beispiel (BasicIacCS.cs) bricht an genau dieser stelle ab:


Code:
      private void StartAcrobatIac()
      {
         //IAC objects
         CAcroPDDoc pdDoc;
         CAcroAVDoc avDoc;

         //constant, hard coding for a pdf to open, it can be changed when needed.
         const string szPdfPathConst = "C:\\sample.pdf";

         //variables
         string szStr;
         string szName;
         int iNum = 0;

         mApp = new AcroAppClass(); //// <==== Exception !!!!

         //Show Acrobat
         mApp.Show();

         //set AVDoc object
         avDoc = new AcroAVDocClass();

         //open the PDF
         if (avDoc.Open (szPdfPathConst, ""))
Hat jemand von euch schon mit der Reader COM API gearbeitet??

EDIT: Ich hab noch das gesamte Sample (direkt aus dem SDK) hinzugefügt, ... falls es jemand selbst ausprobieren will

Bernhard Geyer 4. Apr 2008 14:27

Re: Acrobat Reader COM / OLE API
 
[quote="ulrich.b"]Ich habe versucht, die Acrobat Reader COM API anzusprechen, und bin klaglos gescheitert.

Code:
   CAcroPDDoc pdDoc;
   CAcroAVDoc avDoc;
Diese Klassen/Interfaces gibt es nur im Adobe Acrobat, nicht im Reader!

ulrich.b 4. Apr 2008 21:42

Re: Acrobat Reader COM / OLE API
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Bernhard Geyer
Diese Klassen/Interfaces gibt es nur im Adobe Acrobat, nicht im Reader!

... versteh ich aber nicht ganz, ... denn installiert werden sie (man kann sie auch als Referenz in VS hinzufügen, bzw. mit dem OLE Viewer anzeigen (siehe Anhang)).

... aber egal, ....

wie kann ich trotzdem mit der Reader ActiveX API eine PDF öffnen und

1) ohne jeglicher GUI drucken
und
2) das Druck-Fenster anzeigen und danach, wenn auf OK gedrückt, drucken

Bernhard Geyer 5. Apr 2008 07:58

Re: Acrobat Reader COM / OLE API
 
Zitat:

Zitat von ulrich.b
... versteh ich aber nicht ganz, ... denn installiert werden sie (man kann sie auch als Referenz in VS hinzufügen, bzw. mit dem OLE Viewer anzeigen (siehe Anhang)).

Ist Adobe. Da werden manche komische Sachen gemacht. Entweder ein Packaging-Fehler oder "as Designed" Fehler da mit sicherheit 95% des Viewers-Code mit dem Acrobat gemeinsam verwendet werden

Zitat:

Zitat von ulrich.b
wie kann ich trotzdem mit der Reader ActiveX API eine PDF öffnen und

1) ohne jeglicher GUI drucken
und
2) das Druck-Fenster anzeigen und danach, wenn auf OK gedrückt, drucken

Lade die PDF-Datei über den TWebBrowser und nimm dessen Print-Methode ExecWB(OLECMDID_PRINT, ...) des ControlInterface.

ulrich.b 9. Apr 2008 09:24

Re: Acrobat Reader COM / OLE API
 
Zitat:

Zitat von Bernhard Geyer
Lade die PDF-Datei über den TWebBrowser und nimm dessen Print-Methode ExecWB(OLECMDID_PRINT, ...) des ControlInterface.


OK. Bevor ich jetzt herumprobier, möcht ich noch folg. fragen:

Kann man das ganze (TWebbrowser und PDF laden) auch ohne sichtbares Fenster machen?
Wenn ja, .... kann man drucken, ohne das druckfenster anzuzeigen, aber nicht auf den Default-Drucker, sonderen den gewünschten Drucker als String mitgeben?

Wenn nein, .... kann man das ganze eigentlich über die "AcroRd32.exe"-Commandline steuern?

Bernhard Geyer 9. Apr 2008 10:46

Re: Acrobat Reader COM / OLE API
 
AFAIK nein. Adobe-SW ist hier ziemlich biestig.

Für PDF's gibt es aber Alternativviewer. der FoxIt-Reader bietet eine sehr hohe Kompatiblität und hat eine Programmierschnittstelle. Kostet jedoch ein paar € wenn du es mit deiner SW als DLL mitliefern willst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz