使用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;
    }
}

  

 

posted @   坤机嘎嘎嘎  阅读(5102)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示