![]() |
|
![]() |
Neste artigo vou mostrar como podemos usar os recursos do System.Drawing.Printing para imprimir arquivos textos em muitas páginas. |
Usar os recursos do GDI + é a maneira de desenhar formas, fontes, imagens ou geralmente qualquer coisa gráfica no Visual Basic .NET quer na tela quer em uma impressora.
Os namespaces em GDI + são:
System.Drawing - Este é o principal namespace GDI+, ele define objetos para a renderização base(fontes, canetas, escovas básicas, etc.) e o objeto mais importante: Graphics;
System.Drawing.Drawing2D - Permite usar objetos para gráficos bidimensionais vetoriais. Alguns deles são escovas de inclinação, canetas e transformações geométricas;
System.Drawing.Imaging - Se você quer mudar imagens gráficas, ou seja, alterar a paleta, o metadados do extrato de imagem, manipular metafiles, e assim por diante, este é o namespace que você precisa;
System.Drawing.Printing - Para renderizar imagens para a página da impressa, interagir com a própria impressora, e formatar a aparência geral de um trabalho de impressão, use este namespace;
O lugar para começar com GDI + é o objeto
Graphics. Embora as coisas que você desenha apareçam em seu monitor ou em
uma impressora, o objeto Graphics é a "tela" onde você desenha.
Mas o objeto Graphics é também uma das primeiras fontes de confusão ao
usar GDI+. O objeto Graphics está sempre associado a um contexto de
dispositivo particular.
Neste artigo vamos usar os recursos do System.Drawing.Printing para imprimir múltiplas páginas de um arquivo texto.
Recursos Usados
Visual Studio Community 2015 (é grátis)
Criando o projeto no VS 2015 Community
Abra o VS 2015 Community clique em New Project;
Selecione a linguagem VB .NET e o template Windows Forms Application informando o nome VBNET_Impressao;
No formulário form1.vb inclua os seguintes controles:
Disponha os controle conforme o leiaute da figura abaixo:
![]() |
Agora vamos implementar o código para ler um arquivo texto, exibir o seu conteúdo na caixa de texto e imprimir o arquivo.
Namespaces usados no formulário:
Imports
System.Drawing.PrintingNo início do formulário vamos definir as variáveis objeto para visualizar, para imprimir e para receber o texto da impressão:
'define os objetos para visualizar a impressão(printPreview) e para imprimir o documento (pd)No evento Click do botão de comando Localizar temos o código que usa o controle OpenFileDialog (ofd1) para selecionar o arquivo texto:
Private Sub btnLocalizar_Click(sender As Object, e As EventArgs) Handles btnLocalizar.Click
If ofd1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
If File.Exists(ofd1.FileName) Then
txtArquivo.Text = ofd1.FileName
LerArquivoTexto()
End If
End If
End Sub
|
O código do método LerArquivoTexto() é mostrado abaixo:
Private Sub LerArquivoTexto()
'verifica se o arquivo existe
If IO.File.Exists(txtArquivo.Text) Then
'abre o arquivo e exibe na caixa de texto
Dim objStreamReader As StreamReader = File.OpenText(txtArquivo.Text)
Dim contents As String = objStreamReader.ReadToEnd()
txtTexto.Text = contents
objStreamReader.Close()
Else
MessageBox.Show("Arquivo não existe")
End If
End Sub
|
No evento Click do botão de comando Imprimir temos o código que abre a janela para visualizar a impressão e chama o evento PrintPage():
Private Sub btnImprimir_Click(sender As Object, e As EventArgs) Handles btnImprimir.Click
If Not String.IsNullOrWhiteSpace(txtArquivo.Text) Then
' exibe o nome do documento
pd.DocumentName = txtArquivo.Text
' associa o método PrintPage com o tratamento de evento
AddHandler pd.PrintPage, AddressOf pd_PrintPage
' abre o documento
Using fs As FileStream = New FileStream(pd.DocumentName, FileMode.Open)
' Le o conteúdo do documento em um stream
Using sr As StreamReader = New StreamReader(fs)
strImpressao = sr.ReadToEnd()
End Using
End Using
' Atribui a instância de printdocumento a printpreview
printPreview.Document = pd
'exibe a caixa de diálogo
printPreview.ShowDialog()
Else
MessageBox.Show("Selecine um arquivo para imprimir")
End If
End Sub
|
Finalmente o código associado ao evento PrintPage() que efetivamente imprime os dados:
Private Sub pd_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Dim contaCaractere As Integer = 0 Dim contaLinha As Integer = 0
' 'strImpressao' - Faz a medida da string
' Determina os limite da página e desenha a string com base nisso ' Remove parte da string que foi impressa ' verifica se existem paginas a imprimir |
Executando o projeto iremos obter:
![]() |
Pegue o projeto completo aqui : VBNET_Impressao.zip
Jesus Cristo é o mesmo, ontem, e hoje, e
eternamente.
Hebreus 13:8
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: