Pergunta

Estou recebendo uma estranha exceção do seguinte código:

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

A última linha está jogando um Win32Exception com o detalhe "O identificador é inválido", de acordo com a documentação da MSDN a única exceção que deve ser jogado é a impressora não foi encontrado. A exceção parece ser a de haver algum tipo de motorista exceção de estrutura / não.

Quando seleciono minha impressora (Lexmark T640, configuração para imprimir diretamente para a porta da impressora) a impressão de código bom, mas selecionar qualquer uma das outras duas impressoras que têm acesso a (outra T640, ou uma cor dell) o código de falha . As outras duas impressoras são configurados para imprimir através do nosso servidor de impressão central, mas eu não acho que isso deve fazer qualquer diferença. Alguém pode me dar qualquer ponteiros?

Edit: Só tentei com printDialog.PrintQueue.Fullname eo comportamento não é diferente. Substituindo em um nome de impressora lixo lança uma InvalidPrinterException como esperado, sugerindo que encontrou a impressora, mas parece falhar.

Foi útil?

Solução 2

Por @ benefício de Matt. Eu não consegui descobrir qual era o problema no final, poderia muito bem ser algo a ver com a configuração da nossa rede, mas que está fora das minhas mãos.

Em vez I utilizado um método diferente, eu usei CommonDialogClass.ShowPhotoPrintingWizard () que é parte de Interop.WIA como abaixo.

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

Este mãos sobre o processo para o assistente de impressão de fotos e eu não tive quaisquer problemas desde então.

Outras dicas

Tente configurar a impressora de destino como a impressora padrão (se já não estiver) e ver se ele ainda acontece

Eu tenho essa exceção somente para imprimir vários documentos. Meus soluções foi adicionar

printDocument.Dispose(); após printDocument.Print();.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top