VB 2005 - O roteiro básico para impressão


Imprimir no Visual Basic nunca foi uma tarefa fácil de efetuar. A Microsoft nunca fez um trabalho decente no que se refere a impressão no Visual Basic.

Se você fizer um esforço vai lembrar que na versão anterior ao VB.NET o Visual Basic fornecia o objeto Printer que esta controla toda a saída para impressora ativa e retornava a informações sobre o dispositivo de impressão.

Imprimir algo usando o objeto Printer era muito fácil, bastava teclar : Printer.Print "Macoratti" e o texto Macoratti seria impresso.

Mas como fazer a mesma coisa no VB 2005 ?

Se você for comparar com o velho e bom Visual Basic 6, o processo de imprimir mudou com o advento do VB.NET.

A plataforma .NET alterou este processo para ser orientado a eventos. Desta forma imprimir no VB.NET exige alguns passos a mais.

Vejamos a seqüência que deve ser seguida:

1- Primeiro, você deve instanciar um objeto PrintDocument

2- A seguir você tem que criar uma instância de um objeto PrintDialog e definir a referência para o objeto PrintDocument:

Dim doc As PrintDocument = New PrintDocument
Dim printer As PrintDialog = New PrintDialog -

printer.Document = doc

3- Em seguida você deve mostrar a caixa de diálogo onde o usuário pode selecionar a impressora e suas propriedades: printer.ShowDialog()

4- Agora você precisa subscrever o evento PrintDocument.PringPage o qual será disparado para cada nova página:

AddHandler doc.PrintPage, AddressOf PrintPageHandler

5- E , finalmente chamar o método Print

Eu disse finalmente ?

Não, o trabalho ainda não terminou, você precisa implementar o tratamento de evento para o evento PrintDocument.PrintPage onde nos desejamos imprimir o texto.

Private Sub PrintPageHandler(ByVal sender As Object, ByVal e As PrintPageEventArgs)

Dim g As Graphics = e.Graphics
Dim Fonte As New Font("Verdana", 22, System.Drawing.GraphicsUnit.Point)
g.DrawString("Macoratti ",Fonte,Brushes.Black, 20, 20)

End Sub

A seguir um exemplo completo onde estamos imprimindo texto e imagem. Abra o VB 2005 e crie um novo projeto; a seguir inclua um botão de comando no formulário padrão e inclua o seguinte código no formulário:

Public Class Form1

Private WithEvents docExemplo As Printing.PrintDocument
Private numeroPagina As Integer

Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprimir.Click
   docExemplo = New Printing.PrintDocument
   docExemplo.Print()
End Sub

Private Sub docExemplo_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles docExemplo.BeginPrint
  ' -----Inicia a contagem de página
   numeroPagina = 0
End Sub

Private Sub docExemplo_PrintPage(ByVal sender As Object, ByVal e As Printing.PrintPageEventArgs) Handles docExemplo.PrintPage
' ----- trata a numeração da pagina atual
numeroPagina += 1

If (numeroPagina >= 2) Then
     e.HasMorePages = False
Else
     e.HasMorePages = True
End If

' ----- vamos usar a unidade de medida - Milimetros
e.Graphics.PageUnit = GraphicsUnit.Millimeter

' ----- Imprimindo texto e dois retângulos
e.Graphics.DrawString("Pagina: " & numeroPagina & ".", New Font("Ariel", 48, FontStyle.Regular), Brushes.Black, 2, 2)
e.Graphics.DrawRectangle(New Pen(Color.Blue, 0.5), 30.0!, 30.0!, 30.0!, 10.5!)
e.Graphics.DrawRectangle(New Pen(Color.Red, 0.7), 32.25!, 32.25!, 30.0!, 12.5!)
End Sub
End Class

No artigo - Criando um editor de textos no VB .NET você tem um exemplo completo para imprimir textos.

Até a próxima dica VB.NET ...


José Carlos Macoratti