VB.NET: Print Gambar dengan PrintDocument

Di artikel saya mengenai print langsung ke printer (buat aplikasi POS/kasir), muncul pertanyaan klo print gambar gimana.

Di artikel itu sebenernya direct print nya masih yang simple print plain teks saja tanpa format detail.
Klo ada waktu Insya Allah Rani tambahkan buat direct printing dengan format dan gambar.
Untuk mencetak gambar, mungkin artikel ini bisa membantu memahami lebih awal bagaimana cara print image.

Dan buat kalian yang masih belum kenal apa itu PrintDocument, baca juga artikel ini ya!



Formula Dasar:

Bagaimana cara kerja nya? Berikut ini beberapa contoh untuk menjelaskannya. Contoh program pertama image / gambar akan diambil dari file yang disimpan di c:\logo.png.

Mari kita buat UI nya terlebih dahulun. Rani tambahkan sebuah  button dan PrintDocument ke dalam form seperti berikut:


Code:
Imports System.Drawing.Printing
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgsHandles Button1.Click
        PrintDocument1.Print()
    End Sub

    Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) _
                Handles PrintDocument1.PrintPage
        Dim newImage As Image Image.FromFile("c:\logo.png")
        e.Graphics.DrawImage(newImage, 50, 50)
    End Sub
End Class

Coba Run dan klik tombol untuk mulai mencetak.


Hasilnya: (saya pakai pdf printer)


Kalau gambar diambil dari PictureBox gimana caranya? Ok kita coba tambahkan sebuah PictureBox  dan set image property-nya.


Kemudian kode yang perlu diubah hanya image object nya saja yang mengambil dari property picturebox, seperti berikut:

Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) _
            Handles PrintDocument1.PrintPage
    e.Graphics.DrawImage(PictureBox1.Image, 50, 50)
End Sub

Hasilnya sama, karena saya menggunakan gambar yang sama:



Secara default sintaks akan mencetak ukuran gambar sebenarnya, tapi kita juga bisa mengaturnya secara manual dengan sintaks di bawah ini.

Kita coba mengatur lebar (width) = 100 dan tinggi (height) = 50.

Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) _
            Handles PrintDocument1.PrintPage
    e.Graphics.DrawImage(PictureBox1.Image, 50, 50, 100, 50)
End Sub

Hasil print akan seperti gambar di bawah.



Lebih lengkap bahasan tentang printing dengan PrintDocument ada di artikel di bawah ini ya.




Post a Comment

0 Comments