Entwickler-Ecke

Sonstiges (Delphi) - Adobe Reader und AufrufParams


Doc_Foo - Mo 24.10.05 16:36
Titel: Adobe Reader und AufrufParams
Hallo Delphi-Community,

ich habe mir jetzt schon die Augen wund gesucht -->
ich brauche einfach nur AufrufParameter für die AcroRD32.exe
Irgendwie sind die ein militärisches Geheimnis oder gar nicht existent... :-)

Ich will mit shellExecute und dem Reader etwas drucken und am liebsten danach den Reader schließen.

Bin fuer jeden Tip dankbar!


gruß

Doc Foo


Doc_Foo - Mo 24.10.05 17:01
Titel: Adobe Reader Params
hallo nochaml,

es gibt schonmal:

AcroRd32.exe filename - Executes the Reader and displays a file..
AcroRd32.exe /p filename - Executes the Reader and prints a file..
AcroRd32.exe /t path printername drivername portname - Initiates Acrobat
Reader,,


ABER: weiss jemand, wie ich den Druck komplett anstoßen kann
und danch den Reader schließen ?


gruß

Doc Foo


Stefan.Buchholtz - Mo 24.10.05 17:12
Titel: Re: Adobe Reader und AufrufParams
user profile iconDoc_Foo hat folgendes geschrieben:
Hallo Delphi-Community,

ich habe mir jetzt schon die Augen wund gesucht -->
ich brauche einfach nur AufrufParameter für die AcroRD32.exe
Irgendwie sind die ein militärisches Geheimnis oder gar nicht existent... :-)

Ich will mit shellExecute und dem Reader etwas drucken und am liebsten danach den Reader schließen.

Bin fuer jeden Tip dankbar!


gruß

Doc Foo


Damit habe ich mich auch schon rumgeschlagen. Es funktioniert halbwegs mit


Quelltext
1:
/p /h <Dateiname>                    


Nach meiner Erfahrung geht es mit CreateProcess zuverlässiger als mit ShellExecute. Massendruck - also viele Dokumente halbwegs schnell zu drucken - kannst du damit vergessen. Daran habe ich mir auch schon die Zähne ausgebissen - wenn der Reader gerade beschäftigt ist, geht ab und zu ein Druckauftrag verloren. Leider kann man nicht vorhersagen, wann der Reader fertig ist, weil zusätzlich gestartete Instanzen des Readers ihre Druckaufträge immer an die zuerst gestartete Instanz weiterreichen und sich dann sofort wieder beenden. Die erste Reader-Instanz beendet sich dagegen nie von selbst - man kann daher auch nicht zuverlässig ermitteln, ob er mit dem Druck fertig ist und ihn dann beenden.

Für einzelne Dokumente ist das zu verschmerzen - wenn der Druck nicht rauskommt, kann der User ja nochmal Drucken. Für Massendruckaufträge leider völlig unbrauchbar. Wir haben es aufgegeben und den PDF-Drucker von [url]http://www.pdf-tools.com[/url] gekauft. Der funktioniert gut und ist sogar schneller als der Adobe Reader. Kostet aber ordentlich Geld.
Wenn es auf Performance nicht so ankommt und eine freie Software akzeptabel ist, kann man auch GhostScript verwenden. Das funktioniert auch sehr gut und ist kostenlos, steht aber unter der GPL (gibt aber auch kommerzielle Lizenzen) und ist langsamer.

Stefan


Doc_Foo - Di 25.10.05 09:41
Titel: Adobe Reader drucken
Super!
danke erstmal. ich werds probieren.

das mit MassenDruck ist ja bedauerlich...


gruß

Doc Foo


Stefan.Buchholtz - Di 25.10.05 10:45

Noch was zu GhostScript: Ich will das Programm nicht in ein schlechtes Licht rücken, das ist wirklich gut und in der Performance für einen Einzelplatz-PC auch absolut ok. Bei unserer Anwendung mussten die Druckjobs allerdings von einem zentralen Server aus gedruckt werden, auf dem etliche User gleichzeitig arbeiten, und da war GhostScript nicht effizient genug. Wenn das bei dir nicht zutrifft, würde ich mir das Programm mal ansehen ([url]http://www.ghostscript.com[/url])

Stefan


Doc_Foo - Di 25.10.05 17:27
Titel: PDF drucken -ein weites Feld
JO! dank Dir für die Infos.

eigentlich nutzen wir ja PDF-IN-the-Box von
http://www.synactis.com - is ganz o.k.

aber bei deren .print wird halt auch der Adobe Reader geöffnet
und nicht wieder geschlssen.

gruß
Doc Foo


MSCH - Di 25.10.05 18:13

*brrrr*
aso, nimm die Acrobat OCX importier sie in Delphi. Die findest du bei installiertem Acrobat-Reader unter

C:\Programme\Adobe\Acrobat 5.0\Reader\ActiveX

Dann findest du alles in der TLB was du brauchst.
Schiebe die neue Komponente auf dein Formular.
z.b. heisst sie dann:
Pdf: TPdf;
im Code

PDF.LoadFile('pdfdatei.pdf') zum Anzeigen oder
pdf.Print; zum drucken.

is'n zweizeiler.

grez
msch


Doc_Foo - Mi 26.10.05 09:41
Titel: Acrobat print OCX
Hallo,

beendet er sich selbst wenn ich diese Methode
anwende ?

gruß
Doc Foo


Stefan.Buchholtz - Mi 26.10.05 09:55

Ja, dann beendet er sich von selbst, wenn dein Programm beendet wird. Nachteil ist, dass du die PDF-Datei dann auch anzeigen musst, sonst druckt er nicht. Wenn die Acrobat OCX-Komponente oder das Formular, auf dem sie liegt, nicht sichtbar ist, geht es nicht.

Stefan