VB.NET: Mengatur Font Printing untuk PrintDocument

Halo semuanya!!!

Lanjut dari artikel ini ya:
https://rani-irsan.blogspot.com/2019/10/vbnet-mengenal-komponen-printdocument.html

Disitu kan cuman perkenalan aja, jadi pakai font dapat comot dari Form biar cepet.
Nah sebenernya bagaimana cara mengatur font yang kita tentukan sendiri jenis, ukuran, dll.
Yaitu mendeklarasikan object font dan mengatur atribut font dengan contoh sebagai berikut:



Detail format nya ada di gambar ya, klo ada pertanyaan langsung di komen aja.
Pertama Rani mau kasih lihat bagian format font style-nya untuk Regular, Bold (cetak tebal) dan Italic (cetak miring).

Dim fnt14Regular As Font New Font("Arial", 14, FontStyle.Regular, GraphicsUnit.Point)
Dim fnt14Bold As Font New Font("Arial", 14, FontStyle.Bold, GraphicsUnit.Point)
Dim fnt14Italic As Font New Font ("Arial", 14, FontStyle.Italic, GraphicsUnit.Point)

Klo yang ini untuk kombinasi Bold dan Italic. Jadi Cetak tebal sekaligus miring.
Dim fnt14ItalicBold As Font New Font("Arial", 14, _ 
                                       FontStyle.Italic FontStyle.Bold, GraphicsUnit.Point)

Jadi pas bagian font style nya digabung pakai tanda tambah gitu.
Lalu kita pakai object-object font ini untuk print beberapa string supaya terlihat perbedaan nya.

Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) _
        Handles PrintDocument1.PrintPage

     e.Graphics.DrawString("Beautiful Day.", fnt14Regular, Brushes.Black, 100, 100)
     e.Graphics.DrawString("Beautiful Day.", fnt14Bold, Brushes.Black, 100, 125)
     e.Graphics.DrawString("Beautiful Day.", fnt14Italic, Brushes.Black, 100, 150)
     e.Graphics.DrawString("Beautiful Day.", fnt14ItalicBold, Brushes.Black, 100, 175)

End Sub

Coba lihat bagian x,y. Kita akan mencetak string-string ini berurutan ke bawah. Karena itu bagian y kita tambah 25 point untuk setiap barisnya? Dari mana Nilai 25? Saya kira2 aja hahaha...
Ukuran font 14 jadi dari y sebelumnya 14 point ditambah keperluan jarak yang memadai saya tambahkan 11 point lagi jadi 25. (Nanti ada trik khusus untuk ini)

Yang belum paham buat apa itu e.Graphics.DrawString yang ada di PrintDocument1_PrintPage baca artikel sebelumnya yah.

UI nya juga kita samaain aja sama artikel sebelumnya.


Jangan lupa tambahkan event button1_click untuk mentrigger proses printing.

Private Sub Button1_Click(sender As Object, e As EventArgs) _
    Handles Button1.Click
    PrintDocument1.Print()
End Sub

Kode lengkapnya sebagai berikut:

Public Class Form1

    Dim fnt14Regular As Font = New Font("Arial", 14, FontStyle.Regular, GraphicsUnit.Point)
    Dim fnt14Bold As Font New Font("Arial", 14, FontStyle.Bold, GraphicsUnit.Point)
    Dim fnt14Italic As Font New Font ("Arial", 14, FontStyle.Italic, GraphicsUnit.Point)
    Dim fnt14ItalicBold As Font New Font("Arial", 14, FontStyle.Italic + _
                                           FontStyle.Bold, GraphicsUnit.Point)

    Private Sub Button1_Click(sender As Object, e As EventArgs) _
        Handles Button1.Click
        PrintDocument1.Print()
    End Sub

    Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) _
        Handles PrintDocument1.PrintPage

        e.Graphics.DrawString("Beautiful Day.", fnt14Regular, Brushes.Black, 100, 100)
        e.Graphics.DrawString("Beautiful Day.", fnt14Bold, Brushes.Black, 100, 125)
        e.Graphics.DrawString("Beautiful Day.", fnt14Italic, Brushes.Black, 100, 150)
        e.Graphics.DrawString("Beautiful Day.", fnt14ItalicBold, Brushes.Black, 100, 175)

    End Sub

End Class

Kita coba run.

Kemudian klik Button 1. Dan proses printing ajan tereksekusi.
Untuk simulasi printing Rani pakai pdf printer, dan hasilnya sebagai berikut.



Lanjut yah, buat lihat perbedaan jenis font dan ukuran font. Buat UI kita masih pakai form yang sama tapi kita ubah code nya sebagai berikut.

Public Class Form1

 Dim fnt11Arial As Font = New Font("Arial", 11, FontStyle.Regular, GraphicsUnit.Point)
 Dim fnt14Arial As Font New Font("Arial", 14, FontStyle.Regular, GraphicsUnit.Point)

 Dim fnt11Times As Font = New Font("Times New Roman", 11, FontStyle.Regular, GraphicsUnit.Point)
 Dim fnt14Time As Font = New Font("Times New Roman", 14, FontStyle.Regular, GraphicsUnit.Point)

 Private Sub Button1_Click(sender As Object, e As EventArgs) _
    Handles Button1.Click
    PrintDocument1.Print()
 End Sub

 Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) _
     Handles PrintDocument1.PrintPage

     e.Graphics.DrawString("Text with Arial size 11 Font.", fnt11Arial, Brushes.Black, 100, 100)
     e.Graphics.DrawString("Text with Arial size 14 Font.", fnt14Arial, Brushes.Black, 100, 123)

     e.Graphics.DrawString("Text with Times size 11 Font.", fnt11Times, Brushes.Black, 100, 150)
     e.Graphics.DrawString("Text with Times size 14 Font.", fnt14Time, Brushes.Black, 100, 173)

 End Sub

End Class


Klo coba run dan print hasilnya seperti ini:


Sampai sini apa bisa diikuti? Klo ada pertanyaan langsung di komen di bawah ya...!

Post a Comment

2 Comments

Andre said…
mba rani mau nanya, kalo datanya diambil dari textbox dan datagridview gimana yak mba?
Makasih
rani said…
data apanya? yang di print nya?
yang tinggal ambil aja nilai string nya. Klo textbox ya txtName.Text semacam itu
grid ya ambil dari cell value nya.