none
Imprimindo em uma Impressora Especifica C# RRS feed

  • Discussão Geral

  • Fala galera,  

    Estou com uma dúvida, gostaria de saber se alguém poderia me ajudar, a imprimir um relatório em uma impressora especifica !

    Ex: Possuo 2 impressoras , uma chamada Printer_OP_PB e outra Printer_OP_Color ,  tenho o sistema de cadastro de OP "Ordem de produção", e em alguns departamentos tem a necessidade de sair colorido, e em outros saírem preto e branco, e observando a dificuldade dos usuários e o desperdício de papel pretendo deixar isso automático no sistema , andei pensando em alguma coisa parecido com isso.

     

    Se o departamento "X" precisa imprimir uma  OP Preto e Branco, o sistema ja teria que enviar para a impressora " Printer_OP_PB".

    Se o departamento "Y" precisa imprimir uma  OP Colorido, o sistema ja teria que enviar para a impressora " Printer_OP_COLOR".

    Obrigado!


    • Tipo Alterado Marcos SJ quarta-feira, 9 de dezembro de 2015 19:09 Todas as threads de "How to" serão modificadas para discussão geral
    quarta-feira, 9 de dezembro de 2015 19:04

Todas as Respostas

  • Lucas,

    eu uso assim:

    PrintDocument pd = new PrintDocument();
    pd.PrinterSettings.PrinterName = "Nome_da_Impressora";


    Natan

    quinta-feira, 10 de dezembro de 2015 13:26
  • Amigo,

    Utilizando o código abaixo é possível escolher qual a impressora vai ser a DEFAULT durante a impressão:

    using System;
    using System.Drawing.Printing;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
    
            private void listAllPrinters()
            {
                foreach (var item in PrinterSettings.InstalledPrinters)
                {    
                    this.listBox1.Items.Add(item.ToString());
                }
            }
    
            private void listBox1_SelectedValueChanged(object sender, EventArgs e)
            {
                string pname = this.listBox1.SelectedItem.ToString();
                myPrinters.SetDefaultPrinter(pname);
            }
    
    
            public Form1()
            {
                InitializeComponent();
                listAllPrinters();
            }
        }
    
        public static class myPrinters
        {
            [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
            public static extern bool SetDefaultPrinter(string Name);
    
        }
    }

    No código acima eu listo as impressoras e a partir da seleção do usuário marco ela com DEFAULT e depois mando a impressão. No seu caso o ideal chamar o método "myPrinters.SetDefaultPrinter(pname)" e já marcar a impressora que deve receber a impressão.

    Espero ter ajudado e boa sorte.


    Não esqueça de marcar como útil uma resposta que te ajude.
    "A diversão é a alma do negócio"

    quinta-feira, 10 de dezembro de 2015 13:31
  • Se estiver funcionando você pode usar dessa forma também, não vejo problema.

    No meu código você vai ter acesso a todas as impressoras instaladas, evita erros de digitação ou instalação, então pensei em criar algo relacionado ao AD para pegar o departamento da pessoa e a partir dessa informação selecionar a impressora. A ideia de mandar a impressora como "default" é evitar que a pessoa troque a impressora quando estiver com o programa aberto...nada impede ela de fazer isso, mas ai sua aplicação sempre vai manter a impressora correta como "default" no sistema.

    Espero ter ajudado e boa sorte!


    Não esqueça de marcar como útil uma resposta que te ajude.
    "A diversão é a alma do negócio"

    quinta-feira, 10 de dezembro de 2015 15:30