VB - Imprimindo imagens e texto


Nesta dica vou mostrar como imprimir imagens e texto usando o objeto Printer do VB. Lá vai...

A imagem abaixo mostra o formulário do projeto usado como exemplo :

- O projeto mostra 3 opções de impressão :

- Imprimir uma imagem inserida em um controle PictureBox nos tamanhos:

  • Normal
  • Dobro do tamanho
  • Metade do tamanho

- Na segunda opção você informe o nome de um arquivo texto e o VB imprime.

- Na terceira você informa um texto e escolhe a posição onde deseja imprimir.

Vamos ao código :

1- Imprimir a imagem e como chamar a impressão escolhendo o tamanho a imprimir:

Public Sub PrintImage(p As IPictureDisp, Optional ByVal x, Optional ByVal y, Optional ByVal resize)

On Error GoTo trata_erro

If IsMissing(x) Then x = Printer.CurrentX
If IsMissing(y) Then y = Printer.CurrentY
If IsMissing(resize) Then resize = 1
Printer.PaintPicture p, x, y, p.Width * resize, p.Height * resize
Printer.EndDoc
Exit Sub

trata_erro:
MsgBox Err.Number & " - " & Err.Description, vbCritical, "Imprimindo imagens"
End Sub

Private Sub Command2_Click()

If Option1.Value = True Then
'imprime o tamanho real
PrintImage Picture1.Picture
ElseIf Option2.Value = True Then
'Imprime metade do tamanho
PrintImage Picture1.Picture, , , 0.5
ElseIf Option3.Value = True Then
'imprime o dobro do tamanho
PrintImage Picture1.Picture, , , 0.5
End If

End Sub

2- Imprimir um arquivo texto e como fazer a chamada a função:

Public Sub PrintTXTFile(FileName As String)
Dim x As Integer
Dim s As String

x = FreeFile
On Error GoTo HandleError
Open FileName For Input As x
Do While Not EOF(x)
Line Input #x, s
Printer.Print s
Loop
Printer.EndDoc
Close #x
Exit Sub
HandleError:
MsgBox "Error :" & Err.Description, vbCritical, "Imprimindo arquivo..."
End Sub

Private Sub Command1_Click()
If Dir(Text1.Text) <> "" Then
PrintTXTFile Text1.Text
Else
MsgBox " O arquivo " & Text1.Text & " Não existe...", vbCritical, "Arquivo não existe"
End If
End Sub

3- Imprimir o texto em um posição fixa escolhida e sua utilização:

Public Sub PrintTextXY(s As String, Optional x, Optional y)
If Not IsMissing(x) Then Printer.CurrentX = Val(x)
If Not IsMissing(y) Then Printer.CurrentY = Val(y)
Printer.Print s
Printer.EndDoc
End Sub

Private Sub Command3_Click()
If txtTexto.Text <> "" And Val(txtX.Text) > 0 And Val(txtY.Text) > 0 Then
Call PrintTextXY(txtTexto.Text, txtX.Text, txtY.Text)
Else
MsgBox " Verifique um dos parâmetros informados !!", vbCritical, "Imprime texto "
End If
End Sub

Até a próxima dica VB .NET


José Carlos Macoratti