Mencetak Teks Ke Printer Dot Matriks

Saya pernah membuat aplikasi sistem antrian. Salah satu fiturnya adalah mencetak tiket antrian. Tiket antrian dicetak menggunakan printer dot matrix EPSON TM-T80. Printer jenis tersebut termasuk printer thermal dengan warna cetakan hitam putih. Setiap kali di perintahkan untuk mencetak, maka printer ini akan mencetak ke kertas khusus dan kemudian memotong kertas tersebut, sehingga pelanggan dapat memperoleh satu tiket antrian.

Aplikasi dibuat menggunakan bahasa C#, di .NET framework telah terdapat pustaka untuk menangani fungsi tersebut. Pustaka yang digunakan adalah :
using System.Drawing;
using System.Drawing.Printing;

Buatlah variabel global menggunakan PrintDialog.
private PrintDialog printDialog = new PrintDialog();

Buatlah fungsi untuk mengetahui jumlah dokumen yang masuk dalam daftar atrian cetak (Print Queue) pada sistem komputer.
private int GetNumberOfPrintJobs(string printerName)
{
    LocalPrintServer server = new LocalPrintServer();
    PrintQueueCollection queueCollection = server.GetPrintQueues();
    PrintQueue printQueue = null;

    foreach (PrintQueue pq in queueCollection)
    {
        if (pq.FullName == printerName)
            printQueue = pq;
    }

    int numberOfJobs = 0;
    if (printQueue != null)
        numberOfJobs = printQueue.NumberOfJobs;
    return numberOfJobs;
}
Nama printer dot matriks yang digunakan harus dimasukkan sebagai parameter ke dalam fungsi tersebut. Jadikan printer dot matriks yang akan digunakan sebagai default printer. Berikut adalah kode untuk mengambil nama printer default yang sedang aktif.
printDialog.PrinterSettings = new PrinterSettings();
string printerName = printDialog.PrinterSettings.PrinterName;

Jumlah dokumen yang masuk dalam daftar antrian cetak saya gunakan untuk persiapan cetakan angka selanjutnya. Biasanya setelah mencetak nomor antrian yang aktif saat ini, maka nomor antrian tersebut dinaikkan untuk nomor antrian selanjutnya.

Jika anda mengirimkan data ke Print Queue, maka data tersebut akan langsung dicetak dengan format standar, yaitu rata kiri dan ukuran font standar. Anda dapat mengatur sendiri ukuran font, jenis font, mau bold, underline ataupun italic. Jika ingin membuat tulisannya rata tengah, maka anda harus mengatur koordinat teks. Tentukan koordinat, dan teks mulai dicetak dari titik koordinat tersebut. Jadi, sebenarnya teks dibentuk ke dalam data foto kemudian dikirimkan ke Print Queue, lalu sistem akan mengeksekusi untuk dicetak ke printer.

Berikut ini adalah fungsi yang digunakan untuk mendapatkan koordinat yang tepat untuk membuat teks menjadi rata tengah.
private RectangleF GetCenterArea(Graphics g, string text, Font font, RectangleF printArea, int y)
{
    int areaWidth = (int)printArea.Width;
    int areaHeight = (int)printArea.Height;
    SizeF size = g.MeasureString(text, font);
    int x = (int)((areaWidth - (int)size.Width) / 2);
    return new RectangleF(x, y, areaWidth, areaHeight);
}

Berikut ini adalah fungsi yang digunakan untuk membentuk data foto teks dan mengirimkannya ke dalam Print Queue.
private void PrintText(string text, int fontSize)
{
    PrintDocument p = new PrintDocument();
    p.PrintController = new StandardPrintController();
    p.PrintPage += delegate(object sender, PrintPageEventArgs e)
    {
        Brush brush = new SolidBrush(Color.Black);
        RectangleF printArea = p.DefaultPageSettings.PrintableArea;

        Font font = new Font("Times New Roman", fontSize);
        RectangleF position = GetCenterArea(e.Graphics, text, font, printArea, 0);
        e.Graphics.DrawString(text, font, brush, position);
    };

    try
    {
        p.Print();
    }
    catch (Exception ex)
    {
        throw new Exception("Exception occured while printing", ex);
    }
}

Ya demikianlah penjelasan saya pada tulisan kali ini, mudah-mudahan dapat membantu dan memberikan inspirasi bagi para programmer. Terimakasih.

Ahmad Jawahir

    Tidak ada komentar:

    Posting Komentar