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
pop
Home
Posts filed under VB.NET Printing
Tampilkan postingan dengan label VB.NET Printing. Tampilkan semua postingan
Tampilkan postingan dengan label VB.NET Printing. Tampilkan semua postingan
Minggu, 04 Oktober 2020
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.
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
Langganan:
Postingan (Atom)