325
Chương 8: Đồ họa, đa phương tiện, và in ấn
private int pageNumber;
private int offset;
public string[] Text {
get {return text;}
set {text = value;}
}
public int PageNumber {
get {return pageNumber;}
set {pageNumber = value;}
}
public int Offset {
get {return offset;}
set {offset = value;}
}
public TextDocument(string[] text) {
this.Text = text;
}
}
Tùy thuộc vào kiểu tài liệu muốn in, bạn có thể chỉnh sửa lớp này. Ví dụ, bạn có thể lưu trữ
một mảng gồm các dữ liệu hình, một vài nội dung sẽ được sử dụng làm header hoặc footer
trên mỗi trang, thông tin về font, hoặc tên của file mà bạn muốn đọc thông tin từ nó. Gói các
thông tin này vào một lớp đơn sẽ khiến cho việc in nhiều văn bản cùng một lúc dễ dàng hơn.
Phần mã khởi đầu cũng giống như mục 8.13, chỉ khác là bây giờ tạo đối tượng
TextDocument
(thay vì tạo đối tượng
PrintDocument
). Phương thức thụ lý sự kiện
PrintPage
giữ vết của dòng
hiện hành và kiểm tra có còn chỗ trống trên trang hay không trước khi thực hiện in dòng kế
tiếp. Nếu cần trang mới, thuộc tính
HasMorePages
được thiết lập là
true
và sự kiện
PrintPage
phát sinh lần nữa cho trang kế tiếp. Nếu không, thao tác in xem như hoàn tất.
Phần mã đầy đủ cho form được trình bày dưới đây:
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Printing;
public class MultiPagePrint : System.Windows.Forms.Form {