使用TxPrnMod.dll这个DLL使用热敏打印机
有个问题一直没解决,因为格式问题,所以我选择的是图片打印,但是图片打印输出的时候 带上表格边框就打印乱码,如果不带表格边框就是好的 很尴尬。
public class PrinterAPI { [DllImport("TxPrnMod.dll", CharSet = CharSet.Ansi)] public extern static bool TxOpenPrinter(int type, int Idx); //初始化 1使用usb链接 // 这个函数是在使用打印机时,第一要用到的函数 //其中的Type 见前面的定义,若等于1 就是使用USB 口,Idx 从0 开始,是指端口号 //比如使用串口的话,Idx=0,就是用com1,=1 就是用com2。 //使用USB 的话,Idx=0,就是本打印机第1 次插到电脑的USB 口生成的那个USB00x,如果 //同时电脑的USB 同时插了 //2 台USB 的打印机,那么Idx=1,就是使用第2 台的打印 [DllImport("TxPrnMod.dll", CharSet = CharSet.Ansi)] public extern static string TxGetStatus(); //获取打印机状态 //#define TX_STAT_NOERROR 0x0008 无故障 //#define TX_STAT_SELECT 0x0010 处于联机状态 //#define TX_STAT_PAPEREND 0x0020 缺纸 //#define TX_STAT_BUSY 0x0080 繁忙 //#define TX_STAT_DRAW_HIGH 0x0100 钱箱接口的电平(整机使用的,模块无用) //#define TX_STAT_COVER 0x0200 打印机机芯的盖子打开 //#define TX_STAT_ERROR 0x0400 打印机错误 //#define TX_STAT_RCV_ERR 0x0800 可恢复错误(需要人工干预) //#define TX_STAT_CUT_ERR 0x1000 切刀错误 //#define TX_STAT_URCV_ERR 0x2000 不可恢复错误 //#define TX_STAT_ARCV_ERR 0x4000 可自动恢复的错误 //#define TX_STAT_PAPER_NE 0x8000 快要没有纸了 [DllImport("TxPrnMod.dll", CharSet = CharSet.Ansi)] public extern static void TxClosePrinter();//关闭所有打印机 [DllImport("TxPrnMod.dll", CharSet = CharSet.Ansi)] public extern static void TxInit();//初始化打印机 [DllImport("TxPrnMod.dll", CharSet = CharSet.Ansi)] public extern static void TxOutputString(StringBuilder str); //输出字符串(以\0 结束) [DllImport("TxPrnMod.dll", CharSet = CharSet.Ansi)] public extern static void TxOutputStringLn(StringBuilder str); //输出字符串(以\0 结束),并自动添加回车、换行 [DllImport("TxPrnMod.dll", CharSet = CharSet.Ansi)] public extern static void TxDoFunction(int func, int par1, int par2); //输出字符串(以\0 结束),并自动添加回车、换行 [DllImport("TxPrnMod.dll", CharSet = CharSet.Ansi)] public extern static bool TxPrintImage(string str);//打印IMG }
PrinterAPI.TxInit(); PrinterAPI.TxOpenPrinter(1, 0); bool flag = PrinterAPI.TxPrintImage(Application.StartupPath + "\\SaveFIle\\1.png"); if (flag) { //走纸 PrinterAPI.TxDoFunction(10, 200, 0); //切纸 PrinterAPI.TxDoFunction(12, 0, 0); PrinterAPI.TxClosePrinter(); }