之前做过条码打印,用的是兄弟的打印机,斑马的应该是一样的。
首先 ,打印条码其实就是打印位图(bitmap),
所以只要你生成了位图文件,然后连接打印机,把位图传给他,让他打印就好了。
1,C#生成条码文件,
需要一个barcode类,根据不同的编码规则(128 还是39)去生成条码,这个你百度一下,一大把,直接把代码拷贝走就可以调用了,就是一个函数而已。
一般都是需要传几个参数,如尺寸(height,width),编码规则,你要转码的字符串。
2,打印
我用的是c#中的FlowDocumentScrollViewer类型(流文档,可以批量打印)
var fdsv = new FlowDocumentScrollViewer() { Document = new FlowDocument() { PageHeight = Convert.ToInt16(57), PageWidth = Convert.ToInt16(228), PagePadding = new Thickness(1) } };
fdsv.Document.Blocks.Add(new BlockUIContainer(BarcodeHelper.GenerateCanvas(BarcodeHelper.Preprocess("code0001"), 15)) { Padding = new Thickness(0) });
fdsv.Document.Blocks.Add(new Paragraph(new Run("code00001") { FontSize = 9 , FontFamily = new FontFamily("Arial") }) { Padding = new Thickness(0) });
上面的BarcodeHelper类,就是1中所说的生成条码类,我的找不到了,你百度一下就有。
上面代码生成了一个流文档,每页 57的高度 228的宽度(像素),因为条码纸的尺寸是这样的,然后在文档中加入了两行,
第一行放了一个barcode,第二行放了一个label,
如果要批量打印, 直接foreach就可以。 也可以加自己的逻辑。
要注意的是,这种方法需要你自己去调整, 因为指定了文档每页的高度,但是不能向指定页数加入内容,就是说,你的内容是顺序排列下去的,你要调整你的条码高度+文本高度,让他正好和流文档高度相同,否则打出来会乱掉。
结束之后,
调用c#打印接口,fdsv.Print();就可以选择打印机打印去了。当然也可以自己写代码指定IP地址和端口去直接打印。
有问题可以追问我,