1、使用zebradesigner生成ZPL指令

(1)使用zebradesigner设计标签模板,放一个文本textTEST(中文不支持,打印机没有中文字库)

(2)打印到文件,打印机类型一定需要选择ZPL(打印机不一样输出的语言不一样)

(3)生成的ZPL指令模板,textTEST就是标签内容,程序里面替换即可

CT~~CD,~CC^~CT~
^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR5,5~SD15^JUS^LRN^CI0^XZ
^XA
^MMT
^PW591
^LL0591
^LS0
^FT254,225^A0N,38,38^FH\^FDtextTEST^FS
^PQ1,0,1,Y^XZ

2.C#打印代码,调用print(GetDefaultPrinter(),"test printer!");

internal class PrintHelpter{string dataFolderPath = System.Environment.CurrentDirectory;public static string GetDefaultPrinter(){PrintDocument print = new PrintDocument();string defaultName = print.PrinterSettings.PrinterName;//默认打印机名return defaultName;}/// <summary>/// 获取本地所有打印机/// </summary>/// <returns></returns>public static List<String> GetLocalPrinters(){List<String> printer_names = new List<String>();printer_names.Add(GetDefaultPrinter()); ///列表中的第一项就是默认打印机。foreach (String item in PrinterSettings.InstalledPrinters){Console.WriteLine(item);if(!printer_names.Contains(item)){printer_names.Add(item);Console.WriteLine("add:"+item);}}return printer_names;}/// <summary>/// 内容打印/// </summary>/// <param name="szPrinterName">打印机名称</param>/// <param name="szString">打印的SBPL指令</param>/// <returns></returns>public bool SendStringToPrinter(string szPrinterName, string szString){IntPtr pBytes;int dwCount;dwCount = szString.Length;pBytes = Marshal.StringToCoTaskMemAnsi(szString);SendBytesToPrinter(szPrinterName, pBytes, dwCount);Marshal.FreeCoTaskMem(pBytes);return true;}// Structure and API declarions:[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]public class DOCINFOA{[MarshalAs(UnmanagedType.LPStr)]public string pDocName;[MarshalAs(UnmanagedType.LPStr)]public string pOutputFile;[MarshalAs(UnmanagedType.LPStr)]public string pDataType;}[DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, int pd);[DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]public static extern bool ClosePrinter(IntPtr hPrinter);[DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di);[DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]public static extern bool EndDocPrinter(IntPtr hPrinter);[DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]public static extern bool StartPagePrinter(IntPtr hPrinter);[DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]public static extern bool EndPagePrinter(IntPtr hPrinter);[DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten);public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount){Int32 dwError = 0, dwWritten = 0;IntPtr hPrinter = new IntPtr(0);DOCINFOA di = new DOCINFOA();bool bSuccess = false; // Assume failure unless you specifically succeed.di.pDocName = "labelprint";di.pDataType = "RAW";// Open the printer.if (OpenPrinter(szPrinterName, out hPrinter, 0)){// Start a document.if (StartDocPrinter(hPrinter, 1, di)){// Start a page.if (StartPagePrinter(hPrinter)){// Write your bytes.bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);EndPagePrinter(hPrinter);}EndDocPrinter(hPrinter);}ClosePrinter(hPrinter);}// If you did not succeed, GetLastError may give more information// about why not.if (bSuccess == false){dwError = Marshal.GetLastWin32Error();}return bSuccess;}public bool labelPrintConfigFile(){return File.Exists(dataFolderPath + "\\print.prn");}///public void print(string printerName, string textTEST){PrintHelpter printHelpter = new PrintHelpter();string[] textTEST= { "textTEST", "textTEST",   textTEST,"" };string[][] printVaule = { textTEST };string[] infile = null;try{infile = File.ReadAllLines(dataFolderPath + "\\print.prn", Encoding.GetEncoding("UTF-8"));}catch (Exception ex){Console.WriteLine(ex);}///<内容替换for (int i = 0; i < infile.Length; i++){for (int k = 0; k < printVaule.Length; k++){string[] temp = printVaule[k];for (int j = 0; j < 2; j++){int index = infile[i].IndexOf(temp[j]);if (index > -1){Console.WriteLine("data:" + infile[i]);if(j == 0){infile[i] = infile[i].Replace(temp[j], temp[2]);}else{infile[i] = infile[i].Replace(temp[j], temp[3]+temp[2]);}Console.WriteLine(infile[i]);break;}}}}string printString = "";for (int i = 0; i < infile.Length; i++){printString += infile[i] + "\n";}printHelpter.SendStringToPrinter(printerName, printString);}

C# ZPL打印标签相关推荐

  1. java report to zpl_如何以ZPL格式打印报告

    FastReport .Net 2018.1版本具有新的ZPL(Zebra编程语言)格式输出.此格式旨在与特殊标签打印机配合使用.关于ZPL的更多信息可以在文章"页面描述语言--ZPL&qu ...

  2. C#,VB.Net,VB6调用Codesoft打印标签

    做工控软件不免要打印标签,打印方式很多:打印图片方式,命令方式-- 最简单的要数Codesoft了 Codesoft可以编辑要要打印的标签,需要改变的文字或条码,二维码置为变量,打印时将参数传入即可 ...

  3. java如何判断打印是否成功_如何验证Zebra打印机是否使用ZPL和C#成功打印(或能够检测到错误)?...

    问题 是否有一个简单的ZPL代码或方法从Zebra打印机返回错误消息,以确定标签是否未成功打印或是否存在某种错误? 进展 这是我为将打印机作业发送到zebra打印机而构建的一个很好的功能: publi ...

  4. 怎么用BarTender批量打印标签

    2019独角兽企业重金招聘Python工程师标准>>> 关于使用BarTender条码打印软件打印标签,很多小伙伴最关心的问题之一,莫过于如何实现BarTender批量打印标签.为了 ...

  5. php 怎么打印条形码,php – 如何在垂直标签中垂直打印zpl条形码

    我正在使用zebraGk420d打印机.我正在使用垂直条形码标签.如何垂直打印文本和条形码.我的zpl代码是这样的 $barcode_ZPL_code="^XA ^FO 150,50^AD, ...

  6. H5开发 连接蓝牙打印机 打印标签(斑马ZR628)

    1.连接蓝牙打印机(先用手机自带蓝牙进行配对),然后绑定出已配对的蓝牙设备(用来选择/切换打印机之用),代码如下 已配对蓝牙设备,中显示的就是已连接的,点击一下即可 代码: 1 <!DOCTYP ...

  7. C#-利用ZPL语言完毕条形码的生成和打印

     近期由于公司项目的须要,研究了一项对我来说算是新的技术-条形码的生成和打印.由于之前没有接触过这方面的知识,所以刚開始还有点小迷茫和小兴奋,只是一步一步来,问题总会解决的.如今来总结一下做条形码 ...

  8. c#endread怎么打印出来_C#编程直接发送打印机命令到打印机及ZPL常用的打印命令详解...

    本文主要向大家介绍了C#编程直接发送打印机命令到打印机及ZPL常用的打印命令详解,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. using System; using System.Co ...

  9. 中国可打印标签市场趋势报告、技术动态创新及市场预测

    出版商:贝哲斯咨询 获取报告样本: 企业竞争态势 该报告涉及的主要国际市场参与者有Avery Dennison.Ideal.Universal Tag.American Label & Tag ...

  10. ZPL指令打印 斑马打印机指令打印

    首先ZPL(Zebra Programming language)是斑马家搞的ZPL语言,用于和打印机通讯打印开发的指令.然后理解了这个只是个指令的东西后,我们接着就想想怎么弄,本着怎么简单怎么来的原 ...

最新文章

  1. 实战 | 某小公司项目环境部署演变之路
  2. JavaScript对象this指向(普通键this指向 非指向函数的键)
  3. 让人生成功的49个细节
  4. OpenGL 地形LOD的镶嵌细分的用法
  5. 算法设计与分析——贪心算法——汽车加油问题
  6. 海思芯片硬件java加速_海思芯片直播延迟测试结果(小于100毫秒)
  7. java 高级网络编程_java高级网络编程—客户端与服务器
  8. appium自动化测试环境部署_Android
  9. java对象创建的细节
  10. 使用 Spring Boot 开发 Web 项目
  11. Android Studio Gradle 缓存文件夹设置
  12. 上海,夜访大一女生宿舍,满足。
  13. win10 蓝牙耳机 连接后输出 没有耳机选择 的 解决办法
  14. android 工程模式设置中文翻译,MTK工程模式(中文对照版本)与测试模式指令.doc
  15. 设计模式之工厂模式(C++)
  16. 移动热点服务的属性此计算机,Win10打开移动热点的四种方法
  17. 股票量化分析工具QTYX使用攻略——北上资金持仓选股(更新2.5.8)
  18. Unable to launch the Java Virtual Machine Located at path
  19. 如何使用MySQL存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别?
  20. android 区分wifi是5G还是2.4G

热门文章

  1. Properties 类的详细使用(十三)
  2. CMD 命令行实现 Windows 下复制文件到文件夹下的所有文件夹
  3. ArcGIS拓扑小技巧:两个面矢量合并但不叠加
  4. Attention机制--concat方式
  5. 自建网盘教程之:使用可道云搭建私有云网盘,无需数据库
  6. 2021年全球无损检测设备收入大约2189.6百万美元,预计2028年达到3076.2百万美元,2022至2028期间,年复合增长率CAGR为5.4%
  7. 基于ARM嵌入式系统的PC/104总线设计
  8. 射频识别技术漫谈(17)——射频卡中数据的存储形式
  9. 线性系统和非线性系统——《应用非线性动力学》读书笔记
  10. 联合循环—— 35燃气轮机发电机结构及变频启动系统