C# 中的行式打印机类






4.70/5 (32投票s)
用于在旧式点阵行式打印机上进行打印的简单 C# 类。
引言
这个类简化了在 C# 中对行式打印机进行文本打印的工作。我有一个应用程序需要在一台这样的打印机上打印,所以我最终编写了这个辅助类。基本上,它是对 spooler API (winspool.drv) 的封装;要打印的文本以“RAW”模式发送到 spooler,因此不涉及图形打印。
Using the Code
该类的使用非常简单。首先,通过写入 PrinterName
属性或调用 ChoosePrinter()
方法来选择所需的打印设备。
LPrinter MyPrinter = new LPrinter(); // creates the printer object
MyPrinter.ChoosePrinter();// let user choose the printer device
// alternatively:
MyPrinter.PrinterName = "Epson FX-80";
// uses a specific named printer
实际打印如下进行:
MyPrinter.Open("Document Title Here"); // opens and tells the spooler the document title
MyPrinter.Print("Some text....\r\n"); // actual printing (CR+LFs are needed)
MyPrinter.Print("\x0C"); // sends a form feed (ejects the paper)
MyPrinter.Close(); // Close the spooler
所有方法 Open()
、Print()
、Close()
和 ChoosePrinter()
都返回一个布尔值,以便您可以检查操作是否成功。
可以通过向打印机发送控制代码来实现一些基本的文本效果,如下表所示:
代码 | 描述 |
14 | 放大字符开启 |
20 | 放大字符关闭 |
15 | 压缩字符开启 |
18 | 压缩字符关闭 |
ESC + "E" | 加粗字符开启 |
ESC + "F" | 加粗字符关闭 |
12 | 进纸 (form feed) |
有关更多代码,请查阅打印机的说明书。
关注点
不幸的是,没有简单的方法可以确定已安装的打印机是行式打印机还是图形打印机(激光或喷墨),因此我无法过滤 ChoosePrinter()
的打印对话框,使其仅显示行式打印机。这意味着用户必须选择正确的打印机。
历史
- 2008-09-29:第一个(也可能是唯一一个)版本