“....OpenPrinter(printerName.Normalize(), out printerHandle, IntPtr.Zero)...”
可能也需要将 IntPtr.Zero 设置为 raw。
打印机,尤其是点阵打印机,可以直接使用DOS、CMD方式,打印更简单快捷,也可以使用基本的ESC/0x1b命令代码来控制打印机,。. 等等
作为windowos/graphic,通过设置openprinter(,,printer_defaults)和doc-inf可以是图形和raw,请参考win32 sdk参考。
对于任何原始打印,它可以使用 ESC 命令(请参阅打印机手册详细信息)来打印任何图形,就像 Windows 驱动程序所做的那样。
作为原始打印,它只是附加前 20 个 ascii 中的任何一个,例如 oxoc(formfeed) 0x0doa(0x0a, 0x0d, \n 或换行符) 每个打印机都有轻微的 ESC 命令差异,但使用主 ESC 命令对大多数 Dot 来说都是罚款矩阵类似。
作为原始模式示例如下, FormFeed , \n & \r
字符 cFormfeed=0x0c; // 或 \f
char cStr[]="1=文本,......@\n2=文本.....\r\f3=文本......."; //使用 \f 不使用 cFormfeed 你可以解决
cStr > lpt1; //输出到打印机 dos 或 cmd 方法,原因必须使 lpt1 可用。
打印出来将是
第一页
1=文字,......@
2=文本.....
在第 2 页是
3=文本.......
希望这能有所帮助,祝你好运。