Search…

Làm Việc với Máy In trong C#

07/07/20203 min read
Hướng dẫn cơ bản sử dụng C# ra lệnh in thông qua Driver của máy in.

Máy in hoạt động bằng cách chạy ứng dụng trực tiếp trong nó, không yêu cầu có một máy tính riêng để kiểm soát quá trình in ấn. Mở rộng hơn, có thể sử dụng các thiết bị khác để tương tác, điều khiển máy in và bài viết này hướng đến việc sử dụng C# .NET để giao tiếp với máy in bằng cách thức đơn giản.

Driver là gì?

Driver là phần mềm tất yếu để các thiết bị xử lý các tín hiệu gửi/nhận được. Mỗi dữ liệu có cấu trúc và nhiệm vụ khác nhau, làm sao để máy tính có thể nhận biết, xử lý phù hợp? Ví dụ máy tính nhận được tín hiệu từ chuột và có thể xử lý tín hiệu đó, di chuyển con trỏ chuột đến vị trí phù hợp đó là công việc của driver. Thông thường driver sẽ được phát hành kèm với thiết bị mà nhà sản xuất chế tạo.

Sử dụng C# thông qua driver để điều khiển máy in

Có 2 cách để điều khiển máy in.

  1. Phần mềm (C#) tạo bản in, sử dụng driver để gửi thông tin đến máy in.
  2. Phần mềm (C#) tạo bản in và đóng vai trò driver gửi trực tiếp đến máy in.
    • Thông qua cáp kết nối.
    • Thông qua mạng (nếu máy in có hỗ trợ): Ethernet, Wifi…

Trong bài viết này sẽ sử dụng cách cơ bản nhất là:

  • Phần cứng:
    • Máy tính kết nối với máy in thông qua cáp USB (thông dụng).
    • Cài đặt driver máy in.
  • Phần mềm:
    • Tạo bản in.
    • Gửi bản in thông qua driver.

Code đầy đủ

using System;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.Drawing;

namespace HelloPrinter
{
    public partial class MainForm : Form
    {
        private PrintDialog printDialog;
        private PrintDocument printDocument;

        public MainForm()
        {
            InitializeComponent();

            this.printDialog = new PrintDialog();
            this.printDocument = new PrintDocument();

            this.printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage);
        }

        private void printDocument_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.DrawString("Hello Printer", new Font("Arial", 10), Brushes.Black, new Point(10, 10));
            e.Graphics.DrawImage(Image.FromFile("./logo.png"), new Point(50, 50));
        }

        private void buttonPrint_Click(object sender, EventArgs e)
        {
            this.printDialog.Document = this.printDocument;

            if (printDialog.ShowDialog() == DialogResult.OK)
            {
                printDocument.Print();
            }
        }
    }
}

Giải thích

using System.Drawing.Printing;
using System.Drawing;

Trong đó using System.Drawing.Printing giúp tạo bản in (PrintDocument) và quản lý các driver hay cấu hình in (PrintDialog). using System.Drawing hỗ trợ thêm các thao tác tạo bản in như vẽ hình, viết chữ, …

private PrintDialog printDialog;
private PrintDocument printDocument;

2 đối tượng với tính năng như đề cập ở trên.

this.printDialog = new PrintDialog();
this.printDocument = new PrintDocument();
this.printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage);

Khởi tạo sẵn 2 đối tượng cần thiết và đăng ký hàm xây dựng bản in khi có yêu cầu in.

private void printDocument_PrintPage(object sender, PrintPageEventArgs e)
{
	e.Graphics.DrawString("Hello Printer", new Font("Arial", 10), Brushes.Black, new Point(10, 10));
	e.Graphics.DrawImage(Image.FromFile("./logo.png"), new Point(50, 50));
}

Xây dựng bản in bằng cách tự vẽ ra các hình ảnh, chữ viết, phương pháp tạo bản in này sẽ rất phức tạp khi muốn xây dựng bản in với nhiều giao diện đồ họa bắt mắt, do đó việc xây dựng bản in có thể tiếp cận bằng các phương pháp khác (đọc thêm bài Xây dựng bản in bằng…).

private void buttonPrint_Click(object sender, EventArgs e)
{
    this.printDialog.Document = this.printDocument;
    if (printDialog.ShowDialog() == DialogResult.OK)
    {
        printDocument.Print();
    }
}

Yêu cầu tiến hành in, mở hộp thoại quản lý in và cấu hình in.

Nếu bạn không có kết nối máy in, bạn có thể thử chọn chế độ in ra PDF để xem trước kết quả. Bài viết trên cơ bản về việc sử dụng máy in với C#, trong dự án cụ thể bạn cần nhiều trường hợp hơn có thể tham khảo các bài viết nâng cao:

  • Khổ Giấy A4 và Khổ Giấy Letter.
  • Tạo bản in với XML.
  • Tùy biến giao diện cấu hình máy in.
  • Lập trình mạng cơ bản.
  • Gửi bản in qua máy in mạng.
  • Các vấn đề về căn lề.

Download project HelloPrinter.

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024