Laden...

XPS-Drucken: XPS Datei direkt drucken statt per Process.StartInfo.Verb = "print"

Erstellt von wizer vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.844 Views
W
wizer Themenstarter:in
196 Beiträge seit 2007
vor 13 Jahren
XPS-Drucken: XPS Datei direkt drucken statt per Process.StartInfo.Verb = "print"

Hallo Community!

Ich habe das folgende Problem. Ich habe bei mir zu Hause einen "Server" PC der mit einem Canon LBP2900 Drucker verbunden ist. Dieser Drucker ist auch als Netzwerkdrucker freigegeben. Leider gibt es für den Drucker nur 32-Bit Treiber (es gibt zwar 64-Bit Treiber, diese sind jedoch sehr fehlerhaft und bringen den Spooler ständig zum Absturz). Das Problem ist jetzt, dass alle 32-Bit Maschinen im Netzwerk zwar ganz normal drucken können, ein 64-Bit Nutzer jedoch nicht, da die Treiber fehlen. Deshalb bin ich jetzt den folgenden Weg gegangen:

Ich habe einen C# Windows Form geschrieben, die als virtueller Spooler dient. Das Programm macht nichts anderes, als zu überwachen ob XPS Files im druckordner vorhanden sind. Ich habe XPS gewählt, da dadurch ein unabhängiges Format gewählt wurde und standardmäßig ein XPS Printer auf Vista und 7 installiert ist.

Wenn nun eine neue XPS File in dem Ordner liegt, soll dieses gedruckt werden. Dies habe ich bis jetzt so realisiert:

foreach (string s in Directory.GetFiles(textBox1.Text))
            {
                Process printJob = new Process();
                printJob.StartInfo.FileName = s;
                printJob.StartInfo.UseShellExecute = true;
                printJob.StartInfo.Verb = "print";
                printJob.Start();

                Thread.Sleep(5000);
                SendKeys.Send("{ENTER}");
            }

Diese Lösung ist leider nicht vorteilhaft, da dies ein sehr unsauberer Weg ist. Nun wollte ich fragen, ob es überhaupt möglich ist in einer Windows Form eine XPS Datei direkt zu drucken?

Oda liege ich möglicherweise komplett falsch und es gibt eine viel bessere Lösung für das Treiberproblem?

Ich danke für Eure Antworten!

Mfg wizer