1、using System.Management;using System.IO;using LaisonTech.MediaLib;using LaisonTech.CommonBLL;namespace LaisonTech.MediaLib#region 结构体定义 StructLayout(LayoutKind.Sequential) public struct OVERLAPPED int Internal; int InternalHigh; int Offset; int OffSetHigh; int hEvent; ; public struct PRINTER_DEFAULT
2、S public int pDatatype; public int pDevMode; public int DesiredAccess; / / 对齐方式/summary public enum eTextAlignMode Left = 0, Middle = 1, Right = 2#endregion / 小票打印类/ 使用方法:/ 1 GetPrinterList获取已经安装的所有打印机列表./ Open 打开指定打印机/ 2 控制打印机动作、执行打印内容之前,必须先调用StartPrint,准备向打印机发送控制指令/ 3 调用SetLeft, SetBold, SetAlignM
3、ode, SetFontSize . .设置打印参数/ 4 PrintText 打印内容.注意:打印该行内容后会自动换行(本类会在该行内容末尾添加一个换行符)/ PrintImageFile 或 PrintBitMap打印图片/ 5 控制指令和打印内容都发送完毕后,调用 EndPrint执行真正打印动作 / 6 退出程序前调用Close public class ReceiptHelper #region 指令定义 private static Byte Const_Init = new byte 0x1B, 0x40, 0x20, 0x20, 0x20, 0x0A, 0x1B, 0x64,0
4、x10; /设置左边距 private const string Const_SetLeft = 1D 4C ; /设置粗体 private const string Const_SetBold = 1B 45 private const String Const_Bold_YES = 01 private const String Const_Bold_NO = 00 /设置对齐方式 private const string Const_SetAlign = 1B 61 private const String Const_Align_Left = 30 private const Stri
5、ng Const_Align_Middle = 31 private const String Const_Align_Right = 32 /设置字体大小,与 SetBigFont 不能同时使用 private const string Const_SetFontSize = 1D 21 /设置是否大字体,等同于 SetFontSize = 2 /private const String Const_SetBigFontBold = 1B 21 38 /private const String Const_SetBigFontNotBold = 1B 21 30 /private const
6、 String Const_SetCancelBigFont = 1B 21 00 / 打印并走纸 private static Byte Const_Cmd_Print = new byte 0x1B, 0x4A, 0x00 ; /走纸 private const string Const_FeedForward = 1B 4A private const string Const_FeedBack = 1B 6A /切纸 private static Byte Const_SetCut = new byte 0x1D, 0x56, 0x30; /查询打印机状态 private static
7、 Byte Const_QueryID = new byte 0x1D, 0x67, 0x61; /回复帧以 ID 开头 private static String Const_ResponseQueryID = ID / 设置图标的指令 private static Byte Const_SetImageCommand = new Byte 0x1B, 0x2A, 0x21 ; #region 常量定义 / 最大字体大小 public const Int32 Const_MaxFontSize = 8; / 最大走纸距离 public const Int32 Const_MaxFeedLen
8、gth = 5000; / 最大高宽 public const Int32 Const_MaxImageLength = 480; / 每次通信最多打印的行数 public const Int32 Const_OncePrintRowCount = 24; public const Int32 Const_BrightnessGate = 100; / 无效句柄 public const Int32 Const_InvalidHandle = -1; #endregion #region 私有成员 / 打印机句柄 private int m_Handle = -1; / 是否已经初始化 pri
9、vate Boolean m_Inited = false; #region 私有函数 DllImport(winspool.Drv, EntryPoint = OpenPrinterA, SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall) public static extern bool OpenPrinter(MarshalAs(UnmanagedType.LPStr) string szPrinter, out
10、Int32 hPrinter, IntPtr pd);StartDocPrinterA, SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall) public static extern bool StartDocPrinter(Int32 hPrinter, Int32 level, In, MarshalAs(UnmanagedType.LPStruct) DOCINFOA di);EndDocPrinter, SetL
11、astError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall) public static extern bool EndDocPrinter(Int32 hPrinter);StartPagePrinter public static extern bool StartPagePrinter(Int32 hPrinter);EndPagePrinter public static extern bool EndPagePrinter(Int32 hPrinter);WritePrinter public static extern bool WritePrinter(In
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1