在我們的日常生活中,條碼隨處可見,包含一維碼與二維碼,目前市面上也有幾款出色的條碼設(shè)計軟件,比如BarTender,F(xiàn)astReport等,當(dāng)我們購買了版權(quán)之后就可以使用這幾款軟件設(shè)計我們需要的條碼了,隨著用戶需求的不斷提升,加上一些工廠推行 i4.0 發(fā)展,大力導(dǎo)入自動化設(shè)備與軟件系統(tǒng),通常情況下我們只需要通過系統(tǒng)自動打印條碼,下面介紹一下C#實(shí)現(xiàn)的幾種打印方式!
1.通過斑馬軟件制作模板
將模板導(dǎo)出為 prn 文件,這個文件是可以通過記事本打開的,文件內(nèi)容格式如下:
^XA^LH30,0^JMA^XZ
~DG000.GRF,04096,128,
,::::::::::::::::::rQF0,:::,::::::::~DG001.GRF,04096,128,
,:::::::rQF0,:::a,:::::::::::::::::::~DG002.GRF,04096,128,
,:::::::::::::::rQF0,::::,::::::::::~DG003.GRF,04096,128,
,::::::::::::::::::::rQF0,::::,:::::^XA
^MMT
^PW1004
^LL1890
^LS0
^FT0,544^XG000.GRF,1,1^FS
^FT0,1856^XG001.GRF,1,1^FS
^FT0,1792^XG002.GRF,1,1^FS
^FT0,1728^XG003.GRF,1,1^FS
^FT21,449^A0N,33,33^FH^FDUPC:^FS
^FT425,450^A0N,33,33^FH^FDEAN:^FS
^BY1,3,18^FT604,1691^BCN,,N,N
^FD>:{SN1}^FS
^BY2,3,30^FT494,1638^BCN,,N,N
^FD>:{SN2}^FS
SN1 跟 SN2 就是我們需要打印的文字內(nèi)容,我們只需要在程序中將這一段代碼里面這兩個變量替換成實(shí)際的文字就可以了。
2.使用BarTender制作btw的模板文件
文件格式即為.btw,為模板文件指定數(shù)據(jù)源,數(shù)據(jù)源的種類很多,比如數(shù)據(jù)庫、文本文件等等,這里我以文本文件舉例:
首先制作好模板

設(shè)置模板數(shù)據(jù)源
其中Temp.ActiveCode1和Temp.ActiveCode2則是兩個文本文件,文件格式為:
ActiceCode1,ActiceCode2
A000000001,A000000002
程序中根據(jù)前臺傳入的數(shù)據(jù),將最終的數(shù)據(jù)寫入到這個數(shù)據(jù)源中,然后通過拆分這個數(shù)據(jù)源獲取每一個字段,調(diào)用打印方法。
Process.Start(bartendAdd, "/NOSPLASH /F="" + btw + "" /D="" + sn + "" /P /X");
bartendAdd : BarTender軟件的安裝路徑.
btw : 模板文件
sn : 需要打印的字符串
3.通過FastReport打印
這里重點(diǎn)說一下參數(shù)的傳遞和接收問題,其它的應(yīng)該都還比較簡單,我們首先創(chuàng)建一個模板文件,這里值得一提的是,使用FastReport.Net設(shè)計器產(chǎn)生的文件是以frx為后綴的文件,以FastReport.Studio設(shè)計器產(chǎn)生的文件是以fr3為后綴的文件。

創(chuàng)建新的模板文件

將參數(shù)傳遞給報表文件

接收傳遞過來的參數(shù)

獲取到參數(shù)值,效果預(yù)覽
4.使用ZXing生成條碼
// 1.設(shè)置條形碼規(guī)格
EncodingOptions encodeOption = new EncodingOptions();
encodeOption.Height = 20; // 必須制定高度、寬度
encodeOption.Width = 100;
// 2.生成條形碼圖片并保存
ZXing.BarcodeWriter wr = new BarcodeWriter();
wr.Options = encodeOption;
wr.Format = BarcodeFormat.CODE_128; // 條形碼規(guī)格
encodeOption.PureBarcode = true; // 是否是純碼,如果為 false,則會在圖片下方顯示數(shù)字
System.Threading.Thread.Sleep(100); //間隔
Bitmap img = wr.Write(SerialNumber); // 生成圖片
e.Graphics.DrawImage(img, barcode_x + x_value, barcode_y + y_value); //打印條碼
e.Graphics.DrawString(SerialNumber.Trim(), font1, Brushes.Black, 40 + x_value, 36 + y_value); //打印文字
本文由網(wǎng)上采集發(fā)布,不代表我們立場,轉(zhuǎn)載聯(lián)系作者并注明出處:http://m.zltfw.cn/shbk/38479.html