日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發(fā)布時(shí)間:2024/5/14 C# 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#-利用ZPL语言完成条形码的生成和打印 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


???? 最近因?yàn)楣卷?xiàng)目的需要,研究了一項(xiàng)對(duì)我來說算是新的技術(shù)—條形碼的生成和打印。因?yàn)橹皼]有接觸過這方面的知識(shí),所以剛開始還有點(diǎn)小迷茫和小興奮,不過一步一步來,問題總會(huì)解決的。現(xiàn)在來總結(jié)一下做條形碼這塊的收獲。

?

??? 條形碼的生成沒有什么難度,就是運(yùn)用一些字符串處理函數(shù)自動(dòng)生成一串字母或數(shù)字的組合。這里主要說明一下如何把生成的條碼值打印出來。首先我們要接觸一種新的語言ZPLZebraProgramming Language)看名字zebra就知道和斑馬有關(guān);的確,ZPL是斑馬公司自主設(shè)計(jì)的語言(斑馬公司的業(yè)務(wù)主要是制作斑馬條形碼打印機(jī))。現(xiàn)在大部分條碼打印機(jī)都是可以識(shí)別ZPL指令的,我們可以用ZPL指令編寫一個(gè)模板,然后將自動(dòng)生成的條形碼值(字符串)按照一定格式格式化成新的字符串。然后將這些內(nèi)容傳入打印機(jī)即可。

下面來舉個(gè)Demo說明一下具體的操作:

這是我編寫好的一個(gè)模板:(名稱為BarcodePath,保存格式為.TXT或者.PRN格式,而且一定要注意是大寫!!

---------------------------------------------------------------------------------------------------------

^XA

^PW1000

^MD30

^LH0,0

#CN_DATA1#;|宋體|20|15|^FO150,0

#CN_DATA2#;|宋體|20|15|^FO650,0

^FO70,0^BY2.0,3.0^BCN,120,Y,N,N,A^FD#ID1#^FS

^FO570,0^BY2.0,3.0^BCN,120,Y,N,N,A^FD#ID2#^FS

^PQ1,0,1,Y

^XZ

ZPL語言還是很好理解的,都是一些固定的指令,了解就行。

---------------------------------------------------------------------------------------------------------

^XA^XZ分別代表一個(gè)指令塊的開始和結(jié)束, 是固定的東西。

^PW打印寬度,如果寬度較小,則會(huì)出現(xiàn)打印不全的效果。

^MD設(shè)置標(biāo)簽顏色的深度,取值范圍為 -30 to 30,上面的指令將顏色調(diào)到了最深。

^LH設(shè)置條碼紙的邊距,本模板未進(jìn)行設(shè)置。

---------------------------------------------------------------------------------------------------------

以下以字符串a(chǎn)bc^edf~L000001^L000002為例進(jìn)行說明(abc、edf分別為漢字,L000001、L000002為條形碼值)

#CN_DATA1#為abc的占位符。

#CN_DATA2#為edf的占位符。

|宋體|20|15|指字體為宋體,字符高度為20,寬度為15

^FO設(shè)置條碼左上角的位置的坐標(biāo)(70,0)。

^BY設(shè)置條形碼顯示樣式, 這是該模板最重要的一個(gè)部分, 2.0是條碼的縮放級(jí)別(可接受的數(shù)值:1-10點(diǎn) ),這個(gè)數(shù)值下打出的條碼很小, 3.0是條碼中粗細(xì)柱的比例(可接受的數(shù)值:2.0到3.0,增量0.1,對(duì)固定比例的條碼無效 ), 120是條碼高度。

^BCN是打印code128的指令。

^FD:設(shè)置要打印的內(nèi)容

^FS:表示換行

#ID1#:指L000001

#ID2#:指L000002

---------------------------------------------------------------------------------------------------------

^PQ50,10,1,Y:打印總數(shù)50張標(biāo)簽每個(gè)序列號(hào)只打一張。打印每組數(shù)量是10,但在每組間不暫停。

^PQ50,10,1,N:打印總數(shù)50張標(biāo)簽每個(gè)序列號(hào)只打一張。打印每數(shù)量是10,每組打印后暫停。

這里可以寫成^PQ1,0,1,Y,即每次打印一張,不暫停。因?yàn)榇蛴】倧垟?shù)可以在程序中進(jìn)行控制。

---------------------------------------------------------------------------------------------------------

建議:編寫模板需要自己嘗試,可以先編寫一個(gè)打印的demo,根據(jù)打印出來的效果,不斷的調(diào)試改動(dòng)模板,以達(dá)到預(yù)期的效果。

模板講到這里應(yīng)該就差不多了。下面說明如何進(jìn)行打印。

?

首先需要引入一個(gè)封裝好的DLL文件SMT.ZEBRA.dll,打印操作主要就是靠它來完成的,在他內(nèi)部封裝了一個(gè)ZebraPrinter類,包含方法PrintLabEx

// 說明:// 打印條形碼、RFID等類型標(biāo)簽////   參數(shù):// n_strTemplateFilePath:// 標(biāo)簽?zāi)0嫖募Q,不含路徑,如:"TEMPLATE.TXT"//// n_strLabels:// 標(biāo)簽數(shù)據(jù)集合字符串,多個(gè)標(biāo)簽行用'|'分割,單個(gè)標(biāo)簽行數(shù)據(jù)內(nèi)部用'^'(字段)分割或'~'(文字或條碼)分割, 如"研發(fā)部^51296829~8019^8020|11G~51296829^8001^8012"注明了如下打印要點(diǎn):// 1. 打印兩行標(biāo)簽(俗稱兩枚) 2. 第一行標(biāo)簽打印兩個(gè)文本("研發(fā)部"、"51296829"),2個(gè)條形碼(分別是"8019"、"8020")// 3. 第二行標(biāo)簽打印1個(gè)文本("11G"),3個(gè)條形碼("51296829"、"8001"、"8012")// n_strPrinterName:// 打印機(jī)名稱等,比如"ZDesigner 888-TT" public bool PrintLabEx(string n_strTemplateFilePath, string n_strLabels, string n_strPrinterName);

客戶端代碼:

private void button1_Click(object sender, EventArgs e){try{//實(shí)例化一個(gè)打印類ZebraPrinter printer = new ZebraPrinter();//定義兩個(gè)標(biāo)簽值string str1 = "L000001";string str2 = "L000002";//按照格式,格式化成新的字符串str1 = string.Concat(" ", "^", " ", "~", str1, "^", str2); //雙排條形碼//str = string.Concat(" ", "~", str); //單排條形碼//printPath:模板名稱//comboBox1.Text:打印機(jī)名稱string printPath = "BarcodePath.TXT";printer.PrintLabEx(printPath, str1, comboBox1.Text);}catch (Exception ex){MessageBox.Show(ex.Message);}}private void SmtZebraWinFormZPL_Load(object sender, EventArgs e){//獲取本地計(jì)算機(jī)上安裝的所有打印機(jī),保存到集合strCollects中PrinterSettings.StringCollection strCollects = PrinterSettings.InstalledPrinters;string strPrinterName = string.Empty;//遍歷集合,將所有打印機(jī)加載到下拉列表comboBox1中foreach (String strName in strCollects){strPrinterName = strName.ToString();comboBox1.Items.Add(strPrinterName);}comboBox1.SelectedIndex = 0x00;}



打印效果:

????????????????

有問題的地方歡迎指出!

?

?

??代碼下載

?

?

?????????????????????????????????????????? oノo═══════════════════════╲

??????????????????????????????????????????? │ヽ.編程學(xué)習(xí)ing....? 歡迎交流。???????????????????????????? │

??????????????????????????????????????????? │?? http://blog.csdn.net/u010028869????????????????? .ヽ│

???????????????????????????????????????????? ╲═══════════════ヾ

?

總結(jié)

以上是生活随笔為你收集整理的C#-利用ZPL语言完成条形码的生成和打印的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品国产亚洲av高清色欲 | 99国产精品| 亚洲欧美日韩一区二区三区四区 | 奇米影视久久 | 少妇2做爰交换朴银狐 | 超碰免费看 | 精品人妻一区二区三区含羞草 | 日本黄在线 | 亚洲日本三级 | 午夜久| 久久99久久99精品中文字幕 | 国产xxx69麻豆国语对白 | 艳母动漫在线播放 | 久草视频免费看 | 懂色av蜜臀av粉嫩av分享吧 | 国精产品一区一区三区视频 | 手机电影在线观看 | 欧洲性生活视频 | 成人黄色一级视频 | 五月天亚洲综合 | 久久久免费精品 | 国产爆乳无码一区二区麻豆 | 我和岳m愉情xxxⅹ视频 | 成人高清网站 | 日韩在线视频网站 | 91高清国产 | 成人国产a | 视频二区中文字幕 | 欧美精品一级二级 | 日本大胆人体视频 | 最新日韩av在线 | 久久一区二区三区四区五区 | 日本伦理片在线播放 | 91嫩草视频在线观看 | 国产人妻精品一区二区三 | 国产午夜精品久久久久久久久久 | 中国极品少妇videossexhd 就要干就要操 | 黄色免费看视频 | www.亚洲免费 | 国产伦人伦偷精品视频 | 进去里视频在线观看 | 日韩久久成人 | 半推半就一ⅹ99av | av中文字幕不卡 | 99精品福利 | 亚洲综合图 | 在线观看污网站 | 久久久久亚洲精品系列色欲 | 日本一区二区三区在线视频 | 亚洲美女一区 | 日韩亚洲精品中文字幕 | 欧美日本一区二区三区 | www在线看片| 国产二区精品视频 | 日本福利片在线观看 | 在线看的av网站 | 人妻互换一区二区激情偷拍 | 免费观看一区二区三区视频 | 偷偷在线观看免费高清av | 性色av网 | 日韩一级视频在线观看 | 日本做受 | 日韩av免费在线观看 | 日本一区二区在线观看视频 | 91丨porny| 91激情捆绑调教喷水 | 综合网av| 日本一区二区三区免费在线观看 | 亚洲成人黄色网址 | 手机在线看片1024 | 亚洲人人干 | 国产亚洲精品美女久久久久 | 性生活一级大片 | 俺也去在线视频 | 日韩一区二区三区高清 | 国产精品99精品久久免费 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 精品熟妇视频一区二区三区 | 亚州精品国产精品乱码不99按摩 | 国产精品夜夜嗨 | 国产99999| 亚洲第一黄网 | 日韩成人在线看 | 日韩va中文| 日本一区二区三区视频在线播放 | 久久66热这里只有精品 | 一级不卡毛片 | 五月激情久久 | 亚洲综合涩 | 中文字幕一区二区三区乱码不卡 | 伊人精品在线观看 | www.xxx.国产 | 7色av| 亚洲色图 校园春色 | 美女搞黄视频网站 | 日本少妇毛茸茸 | 日屁网站 | 欧美性猛交富婆 | 成年人网站在线免费观看 |