任何打印机对于C#操作都是一样的.我估计你的难点在乎读写条形码,和批量上.
这是我练习的条形码小Demo.
private void btnOk_Click(object sender, EventArgs e)//生成
{
Regex rg = new Regex("^[0-9]{13}$");
if (!rg.IsMatch(txtNum.Text))
{
MessageBox.Show("本例子采用EAN_13编码,需要输入13位数字");
return;
}
try
{
MultiFormatWriter mutiWriter = new com.google.zxing.MultiFormatWriter();
ByteMatrix bm = mutiWriter.encode(txtNum.Text, com.google.zxing.BarcodeFormat.EAN_13, 363, 150);
Bitmap img = bm.ToBitmap();
pbImg.Image = img;
//自动保存图片到当前目录
if (cbSave.Checked)
{
string filename = System.Environment.CurrentDirectory + "\\EAN_13.jpg";
img.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);
MessageBox.Show("图片已保存到:" + filename);
}
}
catch (Exception ee)
{ MessageBox.Show(ee.Message); }
}
private void btnRead_Click(object sender, EventArgs e)//读取
{
if (!File.Exists(System.Environment.CurrentDirectory + "\\EAN_13.jpg"))
{
MessageBox.Show(System.Environment.CurrentDirectory + "\\EAN_13.jpg", " 缺少文件!");
return;
}
MultiFormatReader mutiReader = new com.google.zxing.MultiFormatReader();
Bitmap img = (Bitmap)Bitmap.FromFile(System.Environment.CurrentDirectory + "\\EAN_13.jpg");
if (img == null)
return;
LuminanceSource ls = new RGBLuminanceSource(img, img.Width, img.Height);
BinaryBitmap bb = new BinaryBitmap(new com.google.zxing.common.HybridBinarizer(ls));
Result r = mutiReader.decode(bb);
txtNum.Text = r.Text;
}
已附上源码附件
如需要循环生成条形码,只需要循环调用这些代码即可.
另C#打印,这只是文本打印,仅供参考
public void Print(string filename)//filename是你要打印的字符串
{
try
{
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += printDoc_PrintPage;
printDoc.Print();
}
finally
{
sr.Close();
}
}
void printDoc_PrintPage(object sender, PrintPageEventArgs e)
{
string line = null;
string[] items = txtContent.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
//设置一页的行数=打印区域的高度除以字体高度.
float pageLine = e.MarginBounds.Height / printFont.GetHeight(e.Graphics);
//循环打印每一行
for (int i = 0; i < pageLine && i < items.Length; i++)
{
line = items[i];
float singleLine = e.MarginBounds.Top + (i * printFont.GetHeight(e.Graphics));
e.Graphics.DrawString(line, printFont, Brushes.Black, e.MarginBounds.Left, singleLine);
}
//e.HasMorePages = true; //继续打印,用于内容超过一张纸的情况下 在pageLine和for的items数据那还得自己算.下次打items中剩余的
e.HasMorePages = false;//结束打印
}