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