VB .NET - Usando a classe PrinterSettings
O VB .NET possui uma infinidade de classes que facilitam a vida do programador. Para obter informações das impressoras instaladas no seu computador você pode usar a classe definida em System.Drawing.Printing.PrinterSettings.
Você pode usar esta classe para determinar e efetuar as seguintes operações:
A coleção - InstalledPrinters - contém o nome de cada impressora instalada no seu computador e é usada para acessar a impressora especificada.
A seguir um exemplo de como usar a classe PrinterSettings para obter informações sobre as impressoras instaladas.
Inicie um novo projeto no VS.NET do tipo Windows Application dando ao projeto um nome sugestivo - PrinterSettings . A seguir inclua no formulário padrão os seguintes controles (conforme figura abaixo) :
O código completo do projeto é o seguinte :
Imports
System.Drawing.PrintingPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim aConfiguracoes As PrinterSettings Dim aNomeImpressora As String For Each aNomeImpressora In PrinterSettings.InstalledPrinters ListBox1.Items.Add(aNomeImpressora) Next ListBox1.SelectedIndex = 0 End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ ListBox1.SelectedIndexChanged If ListBox1.SelectedIndex <> -1 Then Dim aConfiguracoes As New PrinterSettings() Dim aResolucao As PrinterResolution Dim aTamanhoPapel As PaperSize aConfiguracoes.PrinterName = CType(ListBox1.SelectedItem, String) For Each aResolucao In aConfiguracoes.PrinterResolutions ListBox2.Items.Add(aResolucao.ToString & vbCrLf) Next For Each aTamanhoPapel In aConfiguracoes.PaperSizes ListBox3.Items.Add(aTamanhoPapel.ToString & vbCrLf) Next Label4.Text = ListBox1.SelectedItem TextBox2.Text = aConfiguracoes.DefaultPageSettings.ToString & vbCrLf End If End Sub
|
Executando o projeto teremos:
O programa funciona assim:
1- Quando a aplicação inicia o formulário -
form1.vb - do projeto é carregado e exibe todos os controles vazios.
2- Quando o usuário clicar no botão - Impressoras - Obter Informações - o código
abaixo irá ser executado:
Dim aConfiguracoes As PrinterSettings Dim aNomeImpressora As String For Each aNomeImpressora In PrinterSettings.InstalledPrinters ListBox1.Items.Add(aNomeImpressora) Next ListBox1.SelectedIndex = 0 |
Estou
definindo a variável aConfiguracoes como do
tipo PrinterSettings e a variável
aNomeImpressora como uma String.
A seguir usando a propriedade
InstalledPrinters eu percorro a coleção para cada impressora e incluo o
nome da impressora no ListBox1:
ListBox1.Items.Add(aNomeImpressora) |
3- O código no evento - SelectedIndexChanged - do Listbox será disparado cada vez que houver uma alteração na seleção de um item do ListBox. A cada mudança ocorrem as seguintes tarefas:
Defino a impressora selecionada obtendo seu nome | aConfiguracoes.PrinterName = CType(ListBox1.SelectedItem, String) |
Preencho o ListBox2 com a resolução suportada pela impressora |
For Each aResolucao In aConfiguracoes.PrinterResolutions ListBox2.Items.Add(aResolucao.ToString & vbCrLf) Next |
Preencho o ListBox3 com os tamanhos de papéis suportados pela impressora |
For Each aTamanhoPapel In aConfiguracoes.PaperSizes ListBox3.Items.Add(aTamanhoPapel.ToString & vbCrLf) Next |
Exibo o nome da impressora selecionada no Label4 | Label4.Text = ListBox1.SelectedItem |
Exibo as propriedades padrão da impressora selecionada no TextBox2 | TextBox2.Text = aConfiguracoes.DefaultPageSettings.ToString & vbCrLf |
Muito fácil obter informações sobre a impressora , não é mesmo ? Mas você pode fazer muito mais coisas do que as que eu mostrei aqui.Pode alterar o intervalo de páginas para impressão ; assim :
Dim
aImpressora As New PrinterSettings() aImpressora.PrinterName = CType("HP Deskjet 930C/932C/935C", String) aImpressora.FromPage = 5 aImpressora.ToPage = 10 |
Neste caso estou alterando o intervalo de impressão da página 5 até a 10 para a impressora HP DeskJet. |
Existem também outras propriedades públicas que você pode usar para realizar outra tarefas. Abaixo as principais:
CanDuplex | Obtêm um valor indicando se a impressora suporta a impressão Duplex. |
Copies | Obtêm ou define o número de cópias do documento a imprimir. |
DefaultPageSettings | Obtêm a configuração da página padrão para esta impressora. |
FromPage | Obtêm ou define o número da página da primeira página a ser impressa. |
InstalledPrinters | Obtêm o nome das impressoras instaladas |
IsDefaultPrinter | Obtêm um valor indicando se a propriedade PrinterName designa a impressora padrão. |
IsPlotter | Obtêm um valor indicando se a impressora é um plotter. |
IsValid | Obtêm um valor indicando se a propriedade PrinterName define uma impressora válida. |
LandscapeAngle | Obtêm o ângulo , em graus , para a rotação da orientação retrato a fim de gerar a orientação paisagem. |
MaximumCopies | Obtêm o número máximo de cópias que a impressora permite em um momento. |
MaximumPage | Obtêm ou define o valor máximo de FromPage ou ToPage . |
MinimumPage | Obtêm ou define o valor mínimo de FromPage or ToPage . |
PaperSizes | Obtêm o tamanho do papel que a impressora suporta. |
PaperSources | Obtêm a fonte do papel disponível. |
PrinterName | Obtêm ou define o nome da impressora em uso. |
PrinterResolutions | Obtêm todas as resoluções que a impressora suporta. |
PrintRange | Obtêm ou define o número de página que o usuário definiu para imprimir. |
PrintToFile | Obtêm ou define um valor indicando se a impressora vai mandar a impressão para um arquivo ou para a porta. |
SupportsColor | Obtêm um valor indicando se a impressora suporta cores. |
ToPage | Obtêm ou define o número da última página a imprimir. |
A maneira de utilizar é sempre a mesma : Você instancia a classe PrinterSettings e utiliza os seu métodos como mostrado acima.
Até a próxima ...
José Carlos Macoratti