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.Printing
 
  Private 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)
e seleciono o primeiro item da caixa de listagem :         ListBox1.SelectedIndex = 0

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