日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美性猛交xxxxx水多 | 亚洲熟女乱综合一区二区三区 | 一区二区三区手机在线观看 | 成人精品视频99在线观看免费 | 亚洲女人天堂网 | 先锋影音av资源站 | 美女扒开尿口给男人桶 | 人妻无码一区二区三区四区 | 黑人巨大国产9丨视频 | 久久丁香 | 亚洲熟女乱色一区二区三区 | 国产亚洲91 | 黄色一级a毛片 | 欧美一级看片 | 久久狠狠高潮亚洲精品 | 一区二区的视频 | 午夜在线视频播放 | 中字幕视频在线永久在线观看免费 | 久久久久久久久精 | av天天堂| 欧美日本日韩 | 蜜桃久久久 | 日日夜夜中文字幕 | 天堂素人约啪 | 国产精品视频网 | 亚洲人成小说 | 亚洲色图另类图片 | 日本少妇激情 | 欧美三级小视频 | 天堂中文资源在线观看 | 国产精品污www在线观看 | 欧美成人免费播放 | 亚洲一区二区三区四区五区xx | 国产精品丝袜在线观看 | 97人妻精品一区二区三区软件 | 国产亚洲精久久久久久无码苍井空 | 69亚洲乱人伦 | www.97av.com| 捆绑调教sm束缚网站 | 99视频在线精品免费观看2 | 日日干日日摸 | 女人下边被添全过视频 | 日韩和欧美一区二区 | 东北高大丰满bbbbzbbb | 草碰在线视频 | 亚洲乱码一区 | 成人啪啪18免费游戏链接 | 亚洲一区二区三区中文字幕 | 成人精品一区二区三区电影黑人 | 九九午夜视频 | 97精品国产97久久久久久免费 | 国产盗摄精品一区二区酒店 | 国产麻豆交换夫妇 | 91九色论坛 | 美人被强行糟蹋np各种play | 成人免费高清 | 波多野结衣亚洲视频 | 有奶水的迷人少妇 | 三上悠亚激情av一区二区三区 | 欧美一级片观看 | 人妻内射一区二区在线视频 | 我们的2018中文免费看 | 欧美精品一区二区免费看 | 亚洲一区在线视频 | 黄色片的网站 | 日本中文字幕视频 | 懂色av中文一区二区三区天美 | xxxx18日本 | 一二三区中文字幕 | 性猛交xxxx乱大交孕妇2十 | 欧美日韩一区二区在线播放 | 国产在线观看无码免费视频 | 91视 | 91色爱 | 在线免费视频 | 麻豆影视免费观看 | h毛片| 中文字幕91| 日产精品久久久久久久 | 亚洲国产综合久久 | 韩日午夜在线资源一区二区 | 亚洲制服在线观看 | 亚洲区国产区 | 中文在线a√在线 | 日本一区二区三区四区视频 | 国产欧美日韩 | 亚洲日本成人在线观看 | 国产精品久久久久久久av福利 | 一个人看的www片免费高清中文 | 黄色麻豆视频 | 91黑人精品一区二区三区 | 久久99伊人| 亚洲少妇网站 | 美女一区二区三区四区 | 黄色一及毛片 | 综合国产在线 | 女人特黄大aaaaaa大片 | 日韩一区二区三区中文字幕 | 成人午夜免费在线 |