Frage

Ich erhalte eine seltsame Ausnahme von dem folgenden Code:

 var printDialog = new PrintDialog();
        printDialog.ShowDialog();

        var printDocument = new PrintDocument { DefaultPageSettings = { Landscape = true, PrinterSettings = new PrinterSettings { PrinterName = printDialog.PrintQueue.Name } } };

        var updateResult = new UpdateResult<Image>(UpdateType.Print) { Success = true };
        foreach (string location in fileLocation)
        {
            try
            {
                _printImage = Image.FromFile(location);
                printDocument.PrintPage += PrintRequest;
            }
            catch (Exception exception)
            {
               //various error handling code here
            }
        }
        printDocument.Print();

Die letzte Zeile wirft einen Win32Exception mit dem Detail „Das Handle ist ungültig“, nach der MSDN-Dokumentation der einzige Ausnahme, die ausgelöst werden soll Drucker sind nicht gefunden. Die Ausnahme scheint eine Art von Fahrer / non-Framework-Ausnahme sein wird.

Wenn ich meinen Drucker auswählen (Lexmark T640, Setup direkt an den Druckerport drucken) der Code druckt in Ordnung, aber die Auswahl entweder von den beiden anderen Druckern Ich habe Zugang zu (einen anderen T640 oder eine Dell Farbe) der Code schlägt fehl . Die anderen beiden Drucker sind Setup durch unsere zentralen Druckserver zu drucken, aber ich glaube nicht, dies keinen Unterschied machen sollte. Kann jemand mir irgendwelche Hinweise?

Edit: Gerade versucht es mit printDialog.PrintQueue.Fullname und das Verhalten ist nicht anders. Setzt man in einem Mülldruckernamen wirft einen InvalidPrinterException wie erwartet, was darauf hindeutet, den Drucker gefunden hat, scheint aber zum Scheitern verurteilt.

War es hilfreich?

Lösung 2

Für @ Matts profitieren. Ich habe es nicht geschafft, herauszufinden, was das Problem am Ende war, könnte gut sein, etwas mit der Konfiguration unseres Netzwerks zu tun, aber das ist mir aus den Händen.

Stattdessen I eine andere Methode verwendet, verwendet CommonDialogClass.ShowPhotoPrintingWizard I (), den Teil von Interop.WIA als unten.

http: // msdn.microsoft.com/en-us/library/windows/desktop/ms630492%28v=vs.85%29.aspx

Diese Hände über den Prozess der Fotodruck-Assistent und ich habe keine Probleme hatte, da.

Andere Tipps

Versuchen Sie, den Zieldrucker als Standarddrucker einstellen (falls nicht bereits geschehen ist) und sehen, ob es immer noch geschieht

Ich habe nur diese Ausnahme, wenn mehrere Dokumente zu drucken. Meine Lösungen waren hinzufügen

printDocument.Dispose(); nach printDocument.Print();.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top