Tampilkan postingan dengan label VB.NET Printing. Tampilkan semua postingan
Tampilkan postingan dengan label VB.NET Printing. Tampilkan semua postingan

Minggu, 04 Oktober 2020

Vb.Net: Print Pribadi Ke Printer

Ngeprint langsung dari VB.NET ke printer tanpa crystal report, SQL reporting, ataupun aplikasi reporting lainya gimana ya? Klo di VB6 yang tinggal pake sintaks: Printer.Print(text) Ternyata direct print di VB.NET ga semudah itu ͼ(ݓ_ݓ)ͽ But thanks to cicatrix for the class which he built . http://www.vbforums.com/showthread.php?608727-Printer-class-for-VB-NET Kita jadi bisa kirim teks polos langsung ke printer. Saya pun meninggalkan jejak di blog ini saat mencobanya. Pertama tambahkan file class. Beri nama Class Printer. Kemudian tulis code berikut (Rani sesuaikan code nya, karena ingin jenis font tertentu) Public Class Printer     Private Shared Lines As New Queue(Of String)     Private Shared _myfont As Font     Private Shared prn As Printing.PrintDocument     Shared Sub New()         _myfont = New Font( "Courier New" , _                   8, FontStyle.Regular, GraphicsUnit.Point)         prn = New Printing.PrintDocument         AddHandler prn.PrintPage, AddressOf PrintPageHandler     End Sub     Public Shared Sub Print( ByVal text As String )         Dim linesarray() = text.Split( New String () _             Environment.NewLine, StringSplitOptions.None)         For Each line As String In linesarray             Lines.Enqueue(line)         Next         prn.Print()     End Sub     Private Shared Sub PrintPageHandler( ByVal sender As Object, _         ByVal e As Printing.PrintPageEventArgs)         Dim sf As New StringFormat()         Dim vpos As Single = e.PageSettings.HardMarginY         Do While Lines.Count > 0             Dim line As String = Lines.Dequeue             Dim sz As SizeF = e.Graphics.MeasureString( _                 line, _myfont, e.PageSettings.Bounds.Size, sf)             Dim rct As New RectangleF( _                 e.PageSettings.HardMarginX, vpos, _                 e.PageBounds.Width - e.PageSettings.HardMarginX * 2, _                 e.PageBounds.Height - e.PageSettings.HardMarginY * 2)             e.Graphics.DrawString(line, _myfont, Brushes.Black, rct)             vpos += sz.Height             If vpos > e.PageSettings.Bounds.Height - _                 e.PageSettings.HardMarginY * 2 Then                 e.HasMorePages = True                 Exit Sub             End If         Loop     End Sub End Class Kemudian kita membuat UI untuk proses print. Sederhana aja cuman form sama Button. Code: Public Class frmDirectPrint     Private Sub Button1_Click( ByVal sender As System.Object, _         ByVal e As System.EventArgs) Handles Button1.Click         Dim strPrint As String         strPrint = "Toko Jualan Saya" & vbCrLf         strPrint = strPrint & "------------------------------" & vbCrLf         strPrint = strPrint & "No   : TN1254389" & vbCrLf         strPrint = strPrint & "Kasir: Lana" & vbCrLf         strPrint = strPrint & " " & vbCrLf         strPrint = strPrint & "Nama   Qty. Harga SubTotal" & vbCrLf         strPrint = strPrint & "------------------------------" & vbCrLf         strPrint = strPrint & "Ciki     2   5000    10000" & vbCrLf         strPrint = strPrint & "Akua     3   1000     3000" & vbCrLf         strPrint = strPrint & "------------------------------" & vbCrLf         strPrint = strPrint & "Total                13000" & vbCrLf         Printer.Print(strPrint)     End Sub End Class Proses ini akan mencetak teks menggunakan printer default. PC Rani menggunakan DoPDF sebagai printer default, jadi ketika running jadinya mirip ini: Update!!! Rani membuatjuga class agar printing eksklusif mampu buat cetak gambar, mengatur font, dan membuat tabel lebih rapi. Semoga bisa membantu temen-temen yang perlu pola code untuk cetak struk transaksi Point of Sales (POS) a.k.a software kasir. Cek di link di bawah ya! https://rani-irsan.blogspot.com/2019/12/vbnet-mencetak-dengan-pos-printer.html
Sumber http://rani-irsan.blogspot.com

Jumat, 18 September 2020

Vb.Net: Print Pribadi Ke Printer


Ngeprint langsung dari VB.NET ke printer tanpa crystal report, SQL reporting, ataupun aplikasi reporting lainya gimana ya?
Klo di VB6 yang tinggal pake sintaks:
Printer.Print(text)

Ternyata direct print di VB.NET ga semudah itu ͼ(ݓ_ݓ)ͽ
But thanks to cicatrix for the class which he built.
http://www.vbforums.com/showthread.php?608727-Printer-class-for-VB-NET

Kita jadi bisa kirim teks polos eksklusif ke printer. Saya pun meninggalkan jejak di blog ini ketika mencobanya.
Pertama tambahkan file class.
Beri nama Class Printer.

Kemudian tulis code berikut (Rani sesuaikan code nya, karena ingin jenis font tertentu)
Public Class Printer
    Private Shared Lines As New Queue(Of String)
    Private Shared _myfont As Font
    Private Shared prn As Printing.PrintDocument

    Shared Sub New()
        _myfont = New Font("Courier New", _
                  8, FontStyle.Regular, GraphicsUnit.Point)
        prn =
New Printing.PrintDocument
        AddHandler prn.PrintPage, AddressOf PrintPageHandler
    End Sub

    Public Shared Sub Print(ByVal text As String)
        Dim linesarray() = text.Split(New String() _
            Environment.NewLine, StringSplitOptions.None)

        For Each line As String In linesarray
            Lines.Enqueue(line)
        Next
        prn.Print()
    End Sub

    Private Shared Sub PrintPageHandler(ByVal sender As Object, _
        ByVal e As Printing.PrintPageEventArgs)

       
Dim sf As New StringFormat()
       
Dim vpos As Single = e.PageSettings.HardMarginY

        Do While Lines.Count > 0
            Dim line As String = Lines.Dequeue
            Dim sz As SizeF = e.Graphics.MeasureString( _
                line, _myfont, e.PageSettings.Bounds.Size, sf)

           
Dim rct As New RectangleF( _
                e.PageSettings.HardMarginX, vpos, _
                e.PageBounds.Width - e.PageSettings.HardMarginX * 2, _
                e.PageBounds.Height - e.PageSettings.HardMarginY * 2)

            e.Graphics.DrawString(line, _myfont, Brushes.Black, rct)
            vpos += sz.Height
            If vpos > e.PageSettings.Bounds.Height - _
                e.PageSettings.HardMarginY * 2 Then
                e.HasMorePages = True
                Exit Sub
            End If
        Loop
    End Sub
End Class

Kemudian kita membuat UI untuk proses print. Sederhana aja cuman form sama Button.
Code:
Public Class frmDirectPrint

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
        Dim strPrint As String
        strPrint = "Toko Jualan Saya" & vbCrLf
        strPrint = strPrint & "------------------------------" & vbCrLf
        strPrint = strPrint & "No   : TN1254389" & vbCrLf
        strPrint = strPrint & "Kasir: Lana" & vbCrLf
        strPrint = strPrint & " " & vbCrLf
        strPrint = strPrint & "Nama   Qty. Harga SubTotal" & vbCrLf
        strPrint = strPrint &
"------------------------------" & vbCrLf
        strPrint = strPrint & "Ciki     2   5000    10000" & vbCrLf
        strPrint = strPrint & "Akua     3   1000     3000" & vbCrLf
        strPrint = strPrint &
"------------------------------" & vbCrLf
        strPrint = strPrint & "Total                13000" & vbCrLf

        Printer.Print(strPrint)
    End Sub

End Class


Proses ini akan mencetak teks memakai printer default. PC Rani memakai DoPDF sebagai printer default, jadi ketika running jadinya mirip ini:



Update!!!

Rani membuatjuga class supaya printing pribadi bisa buat cetak gambar, mengendalikan font, dan menciptakan tabel lebih rapi. Semoga mampu membantu temen-temen yang perlu contoh code untuk cetak struk transaksi Point of Sales (POS) a.k.a software kasir. Cek di link di bawah ya!
we.com/search?q=vbnet-mencetak-dengan-pos-printer




Sumber http://rani-irsan.blogspot.com

Sabtu, 29 Agustus 2020

Vb.Net: Mengontrol Default Printer

Klo kita membuat aplikasi transaksi yang eksklusif mengirim data ke printer (print slip) mirip pada aplikasi kasir (POS), aplikasi akan eksklusif melakukan perintah print/cetak ke default printer sehingga tidak perlu menentukan printer lagi saat mencetak slip. Sebenarnya setting default printer gampang saja dengan masu ke control panel, Device and Printer mirip pola gambar di bawah ini (window 8). Kita tinggal pilih printer mana yang ingin menjadi default, klik kanan kemudian pilih Set as default printer. Tetapi aplikasi akan lebih user friendly jikalau default printer mampu langsung di setting dalam aplikasi tersebut. Karenanya dalam potensi kali ini Rani mau buat sebuah teladan code untuk setting printer default dengan code VB.NET. UI Code: Imports System.Drawing.Printing Public Class Form1     Private Sub Form1_Load( ByVal sender As System.Object, _                 ByVal e As System.EventArgs) Handles MyBase .Load         Dim strInstalledPrinters As String         Dim prntDoc As New PrintDocument         'cek apakah ada printer terinstall         If PrinterSettings.InstalledPrinters.Count = 0 Then             MsgBox( "No printer installed" )             Exit Sub         End If         'tampilkan printer terinstall di list combobox         For Each strInstalledPrinters In PrinterSettings.InstalledPrinters             ComboBox1.Items.Add(strInstalledPrinters)         Next strInstalledPrinters         'tampilkan default printer ketika ini di text combobox         ComboBox1.Text = prntDoc.PrinterSettings.PrinterName         Button1.Text = "Set Default Printer"     End Sub     'Fungsi untuk mengontrol printer selaku default     Function SetDefaulPrinter( ByVal strPrinterName As String ) As Boolean         Dim strCurrPrinter As String         Dim WsNetwork As Object         Dim prntDoc As New PrintDocument         strCurrPrinter = prntDoc.PrinterSettings.PrinterName         WsNetwork = Microsoft.VisualBasic.CreateObject( "WScript.Network" )         Try             WsNetwork.SetDefaultPrinter(strPrinterName)             prntDoc.PrinterSettings.PrinterName = strPrinterName             'set default bila nama printer valid (terinstall)             If prntDoc.PrinterSettings.IsValid Then                 Return True             Else                 WsNetwork.SetDefaultPrinter(strCurrPrinter)                 Return False             End If         Catch ex As Exception             WsNetwork.SetDefaultPrinter(strCurrPrinter)             Return False         Finally             WsNetwork = Nothing             prntDoc = Nothing         End Try     End Function     Private Sub Button1_Click( ByVal sender As System.Object, _                 ByVal e As System.EventArgs) Handles Button1.Click         If SetDefaulPrinter(ComboBox1.Text) = True Then             MsgBox( "Printer default menjadi " & ComboBox1.Text)         Else             MsgBox( "Nama Printer " & ComboBox1.Text & " tidak valid!" )         End If     End Sub End Class Runtime: List printeryang tersedia (terinstall) akan tampil di list combobox. Pilih salah satu item list lalu klik tombo "Set Default Printer" Kita lihat hasil nya di device and printer, default printer akan berubah sesuai pilihan.
Sumber http://rani-irsan.blogspot.com

Kamis, 20 Agustus 2020

Vb.Net: Mengenal Bagian Printdocument

Selama ini untuk masalah printing atau cetak yang pernah Rani pakai diantara nya Active Report (model buat VB6, Crystal Report 8.5 juga Crystal Report yang buat .NET, dan SSRS alias SQL Server Reporting Service. Kemudian muncul pertanyaan: Mungkinkah mencetak/print tanpa aplikasi komplemen? mirip aplikasi2 reporting yang disebutkan diatas? Apakah ada aplikasi reporting gratis bagi pengguna Visual Studio Community? Atau kemudahan printing bawaan dari Visual Studio nya? Ternyata ada temans... kita bisa pakai unsur bawaan yang namanya PrintDocument. Mari kita lihat di bagian jendela Tools. Oke, pribadi aja ya kita kenalan dengan gimana cara kerjanya. Buat project window form gres. Trus kita tambahin 2 bagian pada form adalah button dan PrintDocument. Seperti gambar di bawah: Kemudian kita akan coba print "Hello World!" dengan cetak wana biru. Karena emang ga lengkap klo mencar ilmu koding tanpa kata sakti ini. Jika unsur PrintDocument1 kita double click, otomatis event terbentuk adalah PrintPage. Kita tambahkan teks untuk dicetak. Private Sub PrintDocument1_PrintPage(sender As Object , _             e As Printing. PrintPageEventArgs ) _             Handles PrintDocument1.PrintPage  e.Graphics.DrawString( "Hello World!" , Me .Font, Brushes .Blue, 100, 100) End Sub Penjelasan arahan: e.Graphics.DrawString berfungsi untuk mencetak teks string "Hello World!" yaitu nilai string yang mau dicetak Me.Font ini ialah font yang digunakan untuk mencetak, sementara saya ambil dari font punya-nya form. Saya jelaskan lebih lanjut di artikel berikutnya Brushes.Blue merupakan warna teks yang mau dicetak 100, 100 yang ini ialah point x, y dimana x yakni posisi jarak dari kiri dan y ialah posisi jarak dari kanan. Kemudian kita akan trigger proses printing pada ketika button1 di click. Private Sub Button1_Click(sender As Object , e As EventArgs ) _         Handles Button1.Click         PrintDocument1.Print() End Sub Lalu... mari kita coba run, siapkan printer kalian mitra. Karena ini akan langsung mengirim perintah cetak ke printer. Klo rani pakai pdf printer jadi proses print disimulasikan ke dalam bentuk pdf. Klik Button1. Dan kira-kira hasil cetak nya akan begini: Untuk memperjelas wacana posisi x,y point kita lihat penjelasannya pada gambar di bawah: Kode lengkap nya selaku berikut: Public Class Form1      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( "Hello World!" ,  Me .Font,  Brushes .Blue, 100, 100)      End Sub End Class Saya ga janji ini bakalan mudah atau mudah. Tapi klo udah sudah biasa ya asik-asik aja sih. So, buat kalian yang ingin tau bagaimana PrintDocument mampu melakukan pekerjaan selaku kemudahan reporting, tetep pantengin blog ini. Insya Allah Rani update terus buat jelasin step by step reporting pakai Komponen PrintDocument ini. Lanjut kesini yah!
Sumber http://rani-irsan.blogspot.com

Vb.Net: Menertibkan Font Printing Untuk Printdocument

Halo seluruhnya!!! Lanjut dari postingan ini ya: https://rani-irsan.blogspot.com/2019/10/vbnet-mengenal-unsur-printdocument.html Disitu kan cuman perkenalan aja, jadi pakai font mampu comot dari Form semoga cepet. Nah sebenernya bagaimana cara mengontrol font yang kita tentukan sendiri jenis, ukuran, dll. Yaitu mendeklarasikan object font dan mengontrol atribut font dengan teladan sebagai berikut: Detail format nya ada di gambar ya, klo ada pertanyaan eksklusif di komen aja. Pertama Rani mau kasih lihat bab 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 variasi Bold dan Italic. Kaprikornus Cetak tebal sekaligus miring. Dim  fnt14ItalicBold  As  Font  =  New  Font ( "Arial" , 14, _                                          FontStyle .Italic  +  FontStyle .Bold ,   GraphicsUnit .Point) Kaprikornus pas bab font style nya digabung pakai tanda tambah gitu. Lalu kita pakai object-object font ini untuk print beberapa string biar tampakperbedaan 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 bab 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 kebutuhan jarak yang mencukupi 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 selaku 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 balasannya selaku berikut. Lanjut yah, buat lihat perbedaan jenis font dan ukuran font. Buat UI kita masih pakai form yang serupa namun kita ubah code nya selaku 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 kesudahannya seperti ini: Sampai sini apa bisa diikuti? Klo ada pertanyaan pribadi di komen di bawah ya...!
Sumber http://rani-irsan.blogspot.com

Rabu, 19 Agustus 2020

Vb.Net: Printdocument, Mengontrol Jarak Antar Baris Secara Otomatis

It's me again. Masih bahas perihal penggunaan PrintDocument untuk printing/reporting. Lanjutan dari postingan ini ya: Mengenal Komponen PrintDocument Mengatur Font Printing Tetep UI yang sama kita pakai ya, cuma code nya kita ubah. Klo di permulaan-awal kita hitung manual posisi y (vertikal) object string yang mau di print. Sekarang kita akan membuatnya ter-generate otomatis dengan menciptakan function berikut: Public Function PrintCellText( ByVal strValue As String , ByVal x As Integer , ByVal y As Integer , _                             ByVal w As Integer , _                              ByVal  e  As  System.Drawing .Printing. PrintPageEventArgs , _                             Font  As  Font ) As Integer     'deklarasikan persegi panjang/ rectangle     Dim cellRect As RectangleF = New RectangleF()     'memilih posisi permulaan persegi panjang/ rectangle     cellRect.Location = New Point(x, y)     'mengontrol ukuran persegi panjang/ rectangle, menyesuaikan jumlah karakter string     cellRect.Size = New Size(w, CInt(e.Graphics.MeasureString(strValue, Font, w, _                               StringFormat.GenericTypographic).Height))     'mendefinisikan text yang mau di print     e.Graphics.DrawString(strValue, Font, Brushes .Black, cellRect)     Return y + cellRect.Size.Height End Function Intinya function  PrintCellText  ini mencetak string dalam suatu persegi panjang. Persegi panjang ini ukuran nya akan menyesuaikan dengan panjang abjad string secara vertikal. Untuk lebar sudah ditentukan. Semacam multiple line ke bawah gitu. Deklarasi font yang hendak kita gunakan. Dim fnt As Font = New Font ( "Arial" , 11, FontStyle .Regular, GraphicsUnit .Point) Kita atur Event PrintPage nya sebagai berikut: Private Sub  PrintDocument1_PrintPage(sender  As Object , e  As  Printing. PrintPageEventArgs ) _       Handles  PrintDocument1.PrintPage       Dim CurX As Integer = 50       Dim  CurY  As  Integer  = 50       Dim  iWidth  As  Integer  = 500      CurY = PrintCellText( "Text on 1st row." , CurX, CurY, iWidth, e, fnt)      CurY = PrintCellText( "Text on 2nd row." , CurX, CurY, iWidth, e, fnt)      CurY = PrintCellText( "Text on 3rd row." , CurX, CurY, iWidth, e, fnt)      CurY = PrintCellText( "Text on 4th row." , CurX, CurY, iWidth, e, fnt) End Sub 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  fnt  As  Font  =  New  Font ( "Arial" , 11,  FontStyle .Regular,  GraphicsUnit .Point) Public Function  PrintCellText( ByVal  strValue  As String ,  ByVal  x  As Integer ,  ByVal  y  As Integer , _                              ByVal   w As Integer , _                              ByVal  e  As  System.Drawing .Printing. PrintPageEventArgs , _                             Font  As  Font )  As Integer      'deklarasikan persegi panjang/ rectangle     Dim cellRect As RectangleF = New RectangleF()      'memilih posisi awal persegi panjang/ rectangle     cellRect.Location = New Point(x, y)      'mengontrol ukuran persegi panjang/ rectangle, menyesuaikan jumlah huruf string     cellRect.Size = New Size(w, CInt(e.Graphics.MeasureString(strValue, Font, w, _                               StringFormat.GenericTypographic).Height))      'mendefinisikan text yang hendak di print     e.Graphics.DrawString(strValue, Font,  Brushes .Black, cellRect)      Return  y + cellRect.Size.Height End Function 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       Dim  CurX  As Integer  = 50       Dim  CurY  As  Integer  = 50       Dim  iWidth  As  Integer  = 500      CurY = PrintCellText( "Text on 1st row." , CurX, CurY, iWidth, e, fnt)      CurY = PrintCellText( "Text on 2nd row." , CurX, CurY, iWidth, e, fnt)      CurY = PrintCellText( "Text on 3rd row." , CurX, CurY, iWidth, e, fnt)      CurY = PrintCellText( "Text on 4th row." , CurX, CurY, iWidth, e, fnt) End Sub End Class Kita coba run. Kemudian klik Button 1. Dan proses printing ajan tereksekusi. Untuk simulasi printing Rani pakai pdf printer, dan akibatnya selaku berikut. Sampai disini, klo ada pertanyaan komen di bawah ya. Next article kita bakal bahas lebih lanjut soal RectangleF untuk alignment .
Sumber http://rani-irsan.blogspot.com

Vb.Net: Printdocument Mengatur Alignment

Ini ialah postingan berkelanjutan jadi baca juga postingan sebelumnya: Mengenal Komponen PrintDocument Mengatur Font Printing Mengatur Jarak Antar Baris secara Otomatis Kita mau lanjut dari artikel sebelumnya. Tapi pertama-tama kita akan coba mengerti tentang Alignment dan bagaimana cara kerja nya. Alignment ada horizontal dan vertikal. Jika dikombinasikan antara rata kiri, kanan dan tengah maka akan ada 9 jenis yaitu: - Atas Kiri - Atas Tengah - Atas Kanan - Tengah Kiri - Tengah Tengah - Tengah Kanan - Bawah Kiri - Bawah Tengah - Bawah Kanan Masih menggunakan yang serupa: Kombinasi alignment ini disimpan dalam object StringFormat. Kita akan mendeklarasikan 9 jenis StringFormat ini ke dalam 9 object mirip berikut: Dim TopLeft As StringFormat = New   StringFormat () Dim   TopCenter  As  StringFormat  =  New   StringFormat () Dim   TopRight  As  StringFormat  =  New   StringFormat () Dim   MidLeft  As   StringFormat  =  New   StringFormat () Dim   MidCenter  As   StringFormat  =  New   StringFormat () Dim   MidRight  As   StringFormat  =  New   StringFormat () Dim   BottomLeft  As   StringFormat  =  New   StringFormat () Dim   BottomCenter  As   StringFormat  =  New   StringFormat () Dim   BottomRight  As   StringFormat  =  New   StringFormat ()  Kemudian kita atur format saat event Form1_Load() Private Sub Form1_Load(sender As Object , e As EventArgs ) Handles MyBase .Load   TopLeft.LineAlignment = StringAlignment .Near   TopLeft.Alignment =  StringAlignment .Near   TopCenter.LineAlignment =  StringAlignment .Near   TopCenter.Alignment =  StringAlignment .Center   TopRight.LineAlignment =  StringAlignment .Near   TopRight.Alignment =  StringAlignment .Far   MidLeft.LineAlignment =  StringAlignment .Center   MidLeft.Alignment =  StringAlignment .Near   MidCenter.LineAlignment =  StringAlignment .Center   MidCenter.Alignment =  StringAlignment .Center   MidRight.LineAlignment =  StringAlignment .Center   MidRight.Alignment =  StringAlignment .Far   BottomLeft.LineAlignment =  StringAlignment .Far   BottomLeft.Alignment =  StringAlignment .Near   BottomCenter.LineAlignment =  StringAlignment .Far   BottomCenter.Alignment =  StringAlignment .Center   BottomRight.LineAlignment =  StringAlignment .Far   BottomRight.Alignment =  StringAlignment .Far End Sub Untuk melihat perbedaannya lebih jelas kita coba format ini satu per satu yah. Bagian dengan warna kuning adalah yang mau Rani ubah untuk sample selanjutnya. Private Sub PrintDocument1_PrintPage(sender As Object , e As Printing. PrintPageEventArgs ) _       Handles PrintDocument1.PrintPage       Dim CurX As Integer = 50       Dim  CurY  As Integer  = 50       Dim  iWidth  As Integer  = 500       Dim  cellRect As RectangleF      cellRect = New  RectangleF ()      cellRect.Location = New Point (CurX, CurY)      cellRect.Size = New Size (iWidth, CurY + 25)      e.Graphics.DrawString( "Top Left" , Font, Brushes .Black, cellRect, TopLeft )      e.Graphics.DrawRectangle( Pens .Black, Rectangle .Round(cellRect)) End Sub Jangan lupa event button click untuk mentrigger proses printing. Private Sub  Button1_Click(sender  As Object , e  As  EventArgs ) _     Handles Button1.Click     PrintDocument1.Print() End Sub Kita coba run dan print: Hasil print sebagai berikut: Kita coba format yang lain, buah bagian baris DrawString nya saja dan run. e.Graphics.DrawString( "Top Center" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( "Top Right" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( "Middle Left" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( " Middle  Center" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( " Middle Right " , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( "Bottom Left" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( " Bottom  Center" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( " Bottom   Right" , Font,  Brushes .Black, cellRect,  TopLeft ) Sekarang kita implementasikan pada function yang kita buat pada postingan sebelum nya . Rani akan menambahkan format pada parameter function, bab yang diubah diwarnai kuning. Public Function PrintCellText( ByVal strValue As String , ByVal x As Integer , ByVal y As Integer , _                              ByVal  w  As  Integer , _                              ByVal  e  As  System.Drawing.Printing. PrintPageEventArgs , _                              ByVal  Font  As  Font ,  ByVal  Format  As  StringFormat )  As  Integer     Dim cellRect As RectangleF = New RectangleF()     cellRect.Location = New Point(x, y)     cellRect.Size = New Size(w, CInt(e.Graphics.MeasureString(strValue, Font, w,                               StringFormat.GenericTypographic).Height))     e.Graphics.DrawString(strValue, Font, Brushes.Black, cellRect , Format )     Return y + cellRect.Size.Height End Function Ukuran vertikal dari rectangle pada function di atas otomatis menyesuaikan dengan banyak aksara pada teks yang akan dicetak, sementara panjang kesamping (width) diputuskan manual lewat parameter w. Karena itu dalam fungsi ini penggunaan alignment cuma akan tampak secara horizontal dan saya akan pakai alignment top untuk vertikal. Event PrintPage kita ubah selaku berikut: Private Sub  PrintDocument1_PrintPage(sender  As Object , e  As  Printing. PrintPageEventArgs ) _       Handles  PrintDocument1.PrintPage       Dim  CurX  As Integer  = 50       Dim  CurY  As Integer  = 50       Dim  iWidth  As Integer  = 500       CurY = PrintCellText( "Align Left Text." , CurX, CurY, iWidth, e, fnt, TopLeft)      CurY = PrintCellText( "Align Center Text." , CurX, CurY, iWidth, e, fnt, TopCenter)      CurY = PrintCellText( "Align Right Text." , CurX, CurY, iWidth, e, fnt, TopRight) End Sub Kita run kemudia print, akibatnya sebagai berikut: Vertical alignment akan lebih tampakfungsi nya ketika kita membuat layout report yang lebih kompleks dan report berbentuktabel yang akan kita diskusikan pada postingan selanjutnya .
Sumber http://rani-irsan.blogspot.com