Inquiridor
Imprimindo em uma Impressora Especifica C#

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
Todas as Respostas
-
-
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" -
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"