使用C#控制斑马打印机打印
1、添加打印机驱动
到官网下载驱动安装的程序,选择要配置的打印机型号,并且在打印机名称处填上打印机的驱动名
打印机名称填一个有意义的,后面需要用到的。
设置好端口之后,选择端口,下一步、下一步。。。然后就看到打印机在程序里了。
2、把模板转换成ZPL指令。
到网上下载 Fnthex32.dll
然后在你的类文件中声明一个方法---->
public static extern int GETFONTHEX(
string BarcodeText,//转换的文本
string FontName,//打印字体
//string FileName,//存储的变量名称
int Orient,//方向
int Height,//字体高度,点阵高度
int Width,//点阵宽度
int IsBold,//是否加粗0,1
int IsItalic,//是否斜体0,1
StringBuilder ReturnBarcodeCMD);//存储的内容
这个方法的作用就是把中文转成ZPL,如果不用中文这东西就不用弄。
然后就是一顿操作,把打印模板转成ZPL指令,再修改位置。
StringBuilder sb1 = new StringBuilder(50240);
int i1;
i1 = GETFONTHEX("我是帅哥", "黑体", 0, 42, 21, 1, 0, sb1);
sBarCodeCMD += sb1.Replace("OUTSTR01", "ok01");
用StringBuilder 接收GETFONTHEX方法返回的字符串,然后把"OUTSTR01" 替换成"ok01",然后在ZPL模板中声明一个ok01变量,再用^FS^FT260,200^XGok1^FS 来修改ok01的位置。
一般的打印应该都有一个模板,我们要做的就是在模板中间,加上我们要打印的内容
下面的就是一个打印一个能效标签的例子,能效上的二维码,是用了QRCode把字符串生成成一张图片,然后把图片转成文件流,再把文件流转成十六进制字符串。最后的效果就是这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | /// <summary> /// 打印二维码 /// </summary> /// <param name="QRCode_Addr">二维码</param> /// <param name="Type">机型</param> /// <param name="energy">能耗</param> /// <param name="product_type">产品类型</param> /// <returns></returns> private bool DOPrint_Energy_Efficiency( string QRCode_Addr, string Type, string energy, string product_type) { try { bool NeedNewQRCode = false ; StringBuilder cmd = new StringBuilder(10240); QRCodeGenerator qRCode = new QRCodeGenerator(); QRCodeData qrCodeData = qRCode.CreateQrCode(QRCode_Addr, QRCodeGenerator.ECCLevel.L); QRCode qrcode = new QRCode(qrCodeData); Bitmap QrCodeImage = qrcode.GetGraphic(5, Color.Black, Color.White, null , 12, 6, false ); byte [] bitmapbyte = BitmapByte(QrCodeImage); int totalBytes = 0; int rowbytes = 0; string command = ZebraUnity.BmpToZpl(QrCodeImage, out totalBytes, out rowbytes); QrCodeImage = KiResizeImage(QrCodeImage, 350, 350); totalBytes = 0; rowbytes = 0; string HexCommand = ZebraUnity.BitmapToHex(QrCodeImage, out totalBytes, out rowbytes); string data = ZebraUnity.BitmapToHex(QrCodeImage, out int to, out int row); string zpl = string .Format( "~DGR:Temp0.GRF,{0},{1},{2}" , to, row, data); cmd.Append(zpl); cmd.AppendFormat( "^FO0,0^XGR:Temp0.GRF,1,1^FS" ); int i1; StringBuilder sb1 = new StringBuilder(1024 * 10); StringBuilder sb2 = new StringBuilder(1024 * 10); StringBuilder sb3 = new StringBuilder(1024 * 10); i1 = GETFONTHEX(Type, "黑体" , 0, 28, 14, 1, 0, sb1); //机型 i1 = GETFONTHEX(energy, "黑体" , 0, 34, 17, 1, 0, sb2); //能耗 i1 = GETFONTHEX(product_type, "黑体" , 0, 34, 17, 1, 0, sb3); //类型 string guding = "^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR6,6~SD25^JUS^LRN^CI0^XZ^XA^MMT^PW812^LL1008^LS0" ; string ProductTypeName = sb1.Replace( "OUTSTR01" , "ok01" ).ToString(); string nenghao = sb2.Replace( "OUTSTR01" , "ok02" ).ToString(); string Category = sb3.Replace( "OUTSTR01" , "ok03" ).ToString(); string guding2 = "^LH440,200^" ; string erweima = "" ; erweima = cmd.ToString(); string guding3 = $ "^FS^FT120,495^XGok01^FS^FS^FT240,630^XGok02^FS^FS^FT270,740^XGok03^FS^XZ" ; string sBarCodeCMD = guding + ProductTypeName + nenghao + Category + guding2 + erweima + guding3; if (RemotePrinter.SendStringToPrinter(nengxiaoName, sBarCodeCMD)) { return true ; } else { return false ; } } catch (Exception ex) { MessageBox.Show( "打印异常:" + ex.Message); return false ; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)