Domanda

Sono sempre uno strano deroga al seguente codice:

 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();

L'ultima riga sta gettando un Win32Exception con dettaglio "l'handle non valido", in base alla documentazione MSDN l'unica eccezione che dovrebbe essere gettata è la stampante non trovato. L'eccezione sembra essere quello di essere una sorta di driver di eccezione / non quadro.

Quando seleziono la mia stampante (Lexmark T640, messa a punto per stampare direttamente alla porta della stampante) le stampe di codice bene, ma la selezione di una delle altre due stampanti Ho a disposizione (un altro T640, o un colore Dell) il codice non riesce . Le altre due stampanti sono settati per stampare attraverso il nostro server di stampa centrale, ma io non credo che questo dovrebbe fare alcuna differenza. Qualcuno può darmi tutti gli indicatori?

Edit: appena provato con printDialog.PrintQueue.Fullname ed il comportamento non è diverso. Sostituendo in un nome di stampante spazzatura genera InvalidPrinterException come previsto, suggerendo che ha trovato la stampante, ma sembra non riuscire.

È stato utile?

Soluzione 2

Per @ beneficio di Matt. Non sono riuscito a capire che cosa il problema è stato, alla fine, potrebbe essere qualcosa a che fare con la configurazione della nostra rete, ma questo è fuori delle mie mani.

Invece ho usato un metodo diverso, ho usato CommonDialogClass.ShowPhotoPrintingWizard () che fa parte del Interop.WIA come sotto.

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

Questa consegna il processo per la procedura guidata di stampa fotografica e non ho avuto problemi da allora.

Altri suggerimenti

Prova a impostare la stampante di destinazione come stampante predefinita (se non lo è già) e vedere se succede ancora

ho ottenuto questa eccezione solo per la stampa più documenti. Le mie soluzioni è stato quello di aggiungere

printDocument.Dispose(); dopo printDocument.Print();.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top