Hallo Gemeinde,
folgendes Problem stellt sich mir in den Weg:
Drucken eines PDFs auf einen Drucker, der evtl. nicht der Windows-Standard-Drucker ist.
Bisher eingeschlagener Weg:
- Prüfen, ob der Windows-Standard-Drucker mein gewünschter Drucker ist
* wenn nicht Standard-Drucker ändern
- Drucken des PDFs durch Aufruf von System.Diagnostics.Process
(Druck erfolgt mit Adobe Acrobat; dass ist sicher gestellt)
das sieht dann so aus:
Dim PDF_Prozess As New System.Diagnostics.Process
PDF_Prozess.StartInfo.FileName = Dateipfad
PDF_Prozess.StartInfo.Verb = "print"
PDF_Prozess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
' Druck starten
PDF_Prozess.Start()
' max. 5 Sekunden warten, bis die Adobe Anwendung wieder im Leerlauf ist
PDF_Prozess.WaitForInputIdle(5000)
' automatisches Schließen der Adobe Anwendung
PDF_Prozess.CloseMainWindow()
PDF_Prozess.Close()
- zurücksetzen des Druckers auf den vorherigen Standard (vorausgesetzt oben wurde gewechselt)
Klappt in der Theorie ganz gut, in der Praxis weniger, denn der vorherige Standard-Drucker wird zurückgesetzt, bevor Adobe den Druckauftrag versendet hat.
Hat jemand von Euch eine gute Idee?
Und bitte nicht einen Timer mit 5 Sekunden Wartezeit vorschlagen, dass ist mir zu unsicher.
Ich danke für schon mal im voraus für Eure Mühen,
dotNet Padawan
folgendes Problem stellt sich mir in den Weg:
Drucken eines PDFs auf einen Drucker, der evtl. nicht der Windows-Standard-Drucker ist.
Bisher eingeschlagener Weg:
- Prüfen, ob der Windows-Standard-Drucker mein gewünschter Drucker ist
* wenn nicht Standard-Drucker ändern
- Drucken des PDFs durch Aufruf von System.Diagnostics.Process
(Druck erfolgt mit Adobe Acrobat; dass ist sicher gestellt)
das sieht dann so aus:
Dim PDF_Prozess As New System.Diagnostics.Process
PDF_Prozess.StartInfo.FileName = Dateipfad
PDF_Prozess.StartInfo.Verb = "print"
PDF_Prozess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
' Druck starten
PDF_Prozess.Start()
' max. 5 Sekunden warten, bis die Adobe Anwendung wieder im Leerlauf ist
PDF_Prozess.WaitForInputIdle(5000)
' automatisches Schließen der Adobe Anwendung
PDF_Prozess.CloseMainWindow()
PDF_Prozess.Close()
- zurücksetzen des Druckers auf den vorherigen Standard (vorausgesetzt oben wurde gewechselt)
Klappt in der Theorie ganz gut, in der Praxis weniger, denn der vorherige Standard-Drucker wird zurückgesetzt, bevor Adobe den Druckauftrag versendet hat.
Hat jemand von Euch eine gute Idee?
Und bitte nicht einen Timer mit 5 Sekunden Wartezeit vorschlagen, dass ist mir zu unsicher.
Ich danke für schon mal im voraus für Eure Mühen,
dotNet Padawan