| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747 |
- using System;
- using System.Collections.Generic;
- //using System.Linq;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- using System.IO;
- using System.Drawing;
- //using System.Windows.Forms;
- namespace PrintSolution.LabelPrinter
- {
- public class ZebraPrinter : ZPL2Command
- {
- /******************* 标签位置 ***********************/
- int blankOffset = 5; //边界宽带 单位:mm
- int labBoxLen1 = 26; //左边标签盒长度 单位:mm
- int labBoxLen2 = 29; //右边标签盒长度 单位:mm
- int fillBoxLen1 = 58; //左边填充盒长度 单位:mm
- int fillBoxLen2 = 60; //右边填充盒长度 单位:mm
- int rowHeight = 11; //行高 单位:mm
- int labHeadLen = 173; //标签头长度 单位:mm
- int labHeadWith = 29; //标签头宽带 单位:mm
- int offsetY = 0; //X坐标偏移量 单位:mm
- int offsetX = 0; //Y坐标偏移量 单位:mm
- int version = 2; //标签版本 1: 横向版本, 2: 纵向版本,3: 纵向版本(数据横着排),4: 横向版本,数据只有钢卷号、重量、生产日期
- /******************* 可变参数 ***********************/
- string strCmd = ""; // 指令
- int xPos = 0; // X坐标
- int yPos = 0; // Y坐标
- int rowNum = 0; // 字段行数
- /******************* 可变参数 ***********************/
- /// <summary>
- /// 构造函数
- /// </summary>
- public ZebraPrinter() : base()
- {
- initLabelSetting();
- }
- /// <summary>
- /// 构造函数
- /// </summary>
- public ZebraPrinter(string ipAddr) : base(ipAddr)
- {
- Addr = ipAddr;
- initLabelSetting();
- }
- /// <summary>
- /// 标签版本属性
- /// </summary>
- public int LableVersion
- {
- get
- {
- return version;
- }
- set
- {
- version = value;
- }
- }
- /// <summary>
- /// 变量初始化
- /// </summary>
- public void initLabelSetting()
- {
- blankOffset = 5; //mm
- labBoxLen1 = 26; //mm
- labBoxLen2 = 29; //mm
- fillBoxLen1 = 58; //
- fillBoxLen2 = 60; //
- rowHeight = 11;
- labHeadLen = 173;
- labHeadWith = 29;
- offsetY = 0;
- offsetX = 0;
- // 指令初始化
- strCmd = ""; // 指令
- xPos = 0; // X坐标
- yPos = 0; // Y坐标
- rowNum = 0; // 字段行数
- //
- FontDirect = 'B';
- // 设定坐标偏移量
- switch (version)
- {
- case 1:
- offsetX = 5;
- offsetY = 3;
- break;
- case 2:
- offsetX = 0;
- offsetY = -2;
- break;
- case 3:
- offsetX = 5;
- offsetY = 0;
- break;
- default:
- offsetX = 0;
- offsetY = -1;
- break;
- }
- }
- /// <summary>
- /// 把文字转换才Bitmap
- /// </summary>
- /// <param name="text"></param>
- /// <param name="font"></param>
- /// <param name="rect">用于输出的矩形,文字在这个矩形内显示,为空时自动计算</param>
- /// <param name="fontcolor">字体颜色</param>
- /// <param name="backColor">背景颜色</param>
- /// <returns></returns>
- private Bitmap CreateImage(string text, Font font, Rectangle rect, Color fontcolor, Color backColor)
- {
- Graphics g;
- Bitmap bmp;
- StringFormat format = new StringFormat(StringFormatFlags.NoClip);
- if (rect == Rectangle.Empty)
- {
- bmp = new Bitmap(1, 1);
- g = Graphics.FromImage(bmp);
- //计算绘制文字所需的区域大小(根据宽度计算长度),重新创建矩形区域绘图
- SizeF sizef = g.MeasureString(text, font, PointF.Empty, format);
- int width = (int)(sizef.Width + 1);
- int height = (int)(sizef.Height + 1);
- rect = new Rectangle(0, 0, width, height);
- bmp.Dispose();
- bmp = new Bitmap(width, height);
- }
- else
- {
- bmp = new Bitmap(rect.Width, rect.Height);
- }
- g = Graphics.FromImage(bmp);
- //使用ClearType字体功能
- g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
- g.FillRectangle(new SolidBrush(backColor), rect);
- g.DrawString(text, font, Brushes.Black, rect, format);
- bmp.RotateFlip(RotateFlipType.Rotate270FlipNone);
- return bmp;
- }
- public static string Convert(Bitmap bms)
- {
- int b = 0;
- long n = 0;
- long clr;
- StringBuilder sb = new StringBuilder();
- sb.Append("~DGR:ZONE.GRF,");
- Bitmap bm = new Bitmap(bms);
- int w = ((bm.Size.Width / 8 + ((bm.Size.Width % 8 == 0) ? 0 : 1)) * bm.Size.Height);
- int h = (bm.Size.Width / 8 + ((bm.Size.Width % 8 == 0) ? 0 : 1));
- sb.Append(w.ToString().PadLeft(5, '0') + "," + h.ToString().PadLeft(3, '0') + ",\n");
- using (Bitmap bmp = new Bitmap(bm.Size.Width, bm.Size.Height))
- {
- for (int y = 0; y < bm.Size.Height; y++)
- {
- for (int x = 0; x < bm.Size.Width; x++)
- {
- b = b * 2;
- clr = bm.GetPixel(x, y).ToArgb();
- string s = clr.ToString("X");
- if (s.Substring(s.Length - 6, 6).CompareTo("BBBBBB") < 0)
- {
- bmp.SetPixel(x, y, bm.GetPixel(x, y));
- b++;
- }
- n++;
- if (x == (bm.Size.Width - 1))
- {
- if (n < 8)
- {
- b = b * (2 ^ (8 - (int)n));
- sb.Append(b.ToString("X").PadLeft(2, '0'));
- b = 0;
- n = 0;
- }
- }
- if (n >= 8)
- {
- sb.Append(b.ToString("X").PadLeft(2, '0'));
- b = 0;
- n = 0;
- }
- }
- }
- sb.Append("^LH0,0^FO354,600^XGR:ZONE.GRF^FS");
- }
- return sb.ToString();
- }
- public static string Convert2(Bitmap bms)
- {
- int b = 0;
- long n = 0;
- long clr;
- StringBuilder sb = new StringBuilder();
- sb.Append("~DGR:ZONE1.GRF,");
- Bitmap bm = new Bitmap(bms);
- int w = ((bm.Size.Width / 8 + ((bm.Size.Width % 8 == 0) ? 0 : 1)) * bm.Size.Height);
- int h = (bm.Size.Width / 8 + ((bm.Size.Width % 8 == 0) ? 0 : 1));
- sb.Append(w.ToString().PadLeft(5, '0') + "," + h.ToString().PadLeft(3, '0') + ",\n");
- using (Bitmap bmp = new Bitmap(bm.Size.Width, bm.Size.Height))
- {
- for (int y = 0; y < bm.Size.Height; y++)
- {
- for (int x = 0; x < bm.Size.Width; x++)
- {
- b = b * 2;
- clr = bm.GetPixel(x, y).ToArgb();
- string s = clr.ToString("X");
- if (s.Substring(s.Length - 6, 6).CompareTo("BBBBBB") < 0)
- {
- bmp.SetPixel(x, y, bm.GetPixel(x, y));
- b++;
- }
- n++;
- if (x == (bm.Size.Width - 1))
- {
- if (n < 8)
- {
- b = b * (2 ^ (8 - (int)n));
- sb.Append(b.ToString("X").PadLeft(2, '0'));
- b = 0;
- n = 0;
- }
- }
- if (n >= 8)
- {
- sb.Append(b.ToString("X").PadLeft(2, '0'));
- b = 0;
- n = 0;
- }
- }
- }
- // sb.Append("^LH0,0^FO1200,200^XGR:ZONE.GRF^FS");
- }
- return sb.ToString();
- }
- protected string ConvertImageToCode(Bitmap img)
- {
- var sb = new StringBuilder();
- long clr = 0, n = 0;
- int b = 0;
- for (int i = 0; i < img.Size.Height; i++)
- {
- for (int j = 0; j < img.Size.Width; j++)
- {
- b = b * 2;
- clr = img.GetPixel(j, i).ToArgb();
- string s = clr.ToString("X");
- if (s.Substring(s.Length - 6, 6).CompareTo("BBBBBB") < 0)
- {
- b++;
- }
- n++;
- if (j == (img.Size.Width - 1))
- {
- if (n < 8)
- {
- b = b * (2 ^ (8 - (int)n));
- sb.Append(b.ToString("X").PadLeft(2, '0'));
- b = 0;
- n = 0;
- }
- }
- if (n >= 8)
- {
- sb.Append(b.ToString("X").PadLeft(2, '0'));
- b = 0;
- n = 0;
- }
- }
- sb.Append(System.Environment.NewLine);
- }
- return sb.ToString();
- }
- /// <summary>
- /// 打印标签的一行数据
- /// </summary>
- /// <param name="leftData">左边格子中的数据</param>
- /// <param name="rightData">右边格子中的数据</param>
- private void printLine(string leftData, string rightData)
- {
- switch (version)
- {
- case 1:
- // 打印左边的数据
- xPos = (blankOffset + labBoxLen1 + offsetX) * getDotMM();
- yPos = (blankOffset + labHeadWith + offsetY) * getDotMM() + rowNum * rowHeight * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, leftData);
- // 打印右边的数据, Y 坐标不变
- xPos = (blankOffset + labBoxLen1 + fillBoxLen1 + labBoxLen2 + offsetX) * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, rightData);
- break;
- case 2:
- xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * getDotMM() + fontHeight;
- yPos = (blankOffset + offsetY) * getDotMM() + fillBoxLen2 * getDotMM() - getStringDots(rightData); //fillBoxLen2
- strCmd += getFontCmd() + fillDataCmd(xPos, yPos, rightData);
- // X 坐标不变
- //xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * dotsMm +fontHeight ;
- yPos = (blankOffset + fillBoxLen2 + labBoxLen2 + offsetY) * getDotMM() + fillBoxLen1 * getDotMM() - getStringDots(leftData);//
- strCmd += getFontCmd() + fillDataCmd(xPos, yPos, leftData);
- break;
- case 3:
- /** 有标题的
- // 打印左边的数据
- strCmd += "^CFF,50,19\r\n"; //'^CFA,50,24';
- xPos = (blankOffset + 2 + offsetX) * getDotMM();
- yPos = (blankOffset + offsetY) * getDotMM() + rowNum * rowHeight * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, leftData);
- // 打印右边的数据, Y 坐标不变
- strCmd += "^CFF,50,20\r\n"; //'^CFA,50,24';
- xPos = (blankOffset + labBoxLen1 + 3) * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, rightData);
- **/
- //只打印数据
- strCmd += "^AFF,67,40\r\n"; //'^CFA,50,24';
- xPos = (blankOffset + 10 + offsetX) * getDotMM();
- yPos = (blankOffset + offsetY) * getDotMM() + rowNum * rowHeight * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, rightData);
- break;
- }
- rowNum++;
- }
- private void printstl(string leftData, string rightData)
- {
- switch (version)
- {
- case 1:
- // 打印左边的数据
- xPos = (blankOffset + labBoxLen1 + offsetX) * getDotMM();
- yPos = (blankOffset + labHeadWith + offsetY) * getDotMM() + rowNum * rowHeight * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, leftData);
- // 打印右边的数据, Y 坐标不变
- xPos = (blankOffset + labBoxLen1 + fillBoxLen1 + labBoxLen2 + offsetX) * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, rightData);
- break;
- case 2:
- xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * getDotMM() + fontHeight;
- yPos = (blankOffset + offsetY) * getDotMM() + fillBoxLen2 * getDotMM() - getStringDots(rightData); //fillBoxLen2
- strCmd += getFontCmd() + fillDataCmd(xPos, yPos, rightData);
- // X 坐标不变
- //xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * dotsMm +fontHeight ;
- yPos = (blankOffset + fillBoxLen2 + labBoxLen2 + offsetY) * getDotMM() + fillBoxLen1 * getDotMM() - getStringDots(leftData);//
- strCmd += getFontCmd() + fillDataCmd(xPos, yPos, leftData);
- break;
- case 3:
- strCmd += "^A0F,120,120\r\n"; //'^CFA,50,24';
- xPos = (blankOffset + 10 + offsetX) * getDotMM();
- yPos = (blankOffset + offsetY) * getDotMM() + rowNum * rowHeight * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, rightData);
- break;
- }
- rowNum++;
- }
- private void printstl2(string leftData, string rightData)
- {
- switch (version)
- {
- case 1:
- // 打印左边的数据
- xPos = (blankOffset + labBoxLen1 + offsetX) * getDotMM();
- yPos = (blankOffset + labHeadWith + offsetY) * getDotMM() + rowNum * rowHeight * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, leftData);
- // 打印右边的数据, Y 坐标不变
- xPos = (blankOffset + labBoxLen1 + fillBoxLen1 + labBoxLen2 + offsetX) * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, rightData);
- break;
- case 2:
- xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * getDotMM() + fontHeight;
- yPos = (blankOffset + offsetY) * getDotMM() + fillBoxLen2 * getDotMM() - getStringDots(rightData); //fillBoxLen2
- strCmd += getFontCmd() + fillDataCmd(xPos, yPos, rightData);
- // X 坐标不变
- //xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * dotsMm +fontHeight ;
- yPos = (blankOffset + fillBoxLen2 + labBoxLen2 + offsetY) * getDotMM() + fillBoxLen1 * getDotMM() - getStringDots(leftData);//
- strCmd += getFontCmd() + fillDataCmd(xPos, yPos, leftData);
- break;
- case 3:
- strCmd += "^A0F,200,200\r\n"; //'^CFA,50,24';
- xPos = (blankOffset + 10 + offsetX) * getDotMM();
- yPos = (blankOffset + offsetY) * getDotMM() + rowNum * rowHeight * getDotMM();
- strCmd += fillDataCmd(xPos, yPos, rightData);
- break;
- }
- rowNum++;
- }
- /// <summary>
- /// 打印条码
- /// </summary>
- /// <param name="data">条码数据项</param>
- private void printBarcode(string data)
- {
- //int codeHeight = 150;
- int offset = 5;
- string orientation = "B"; // N = 正常 (Normal);R = 顺时针旋转90度(Roated);I = 顺时针旋转180度(Inverted);B = 顺时针旋转270度 (Bottom)
- switch (version)
- {
- case 1:
- xPos = (offset + blankOffset )* getDotMM();
- yPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetY) * getDotMM();
- orientation = "N";
- strCmd += getBarcodeCmd(xPos, yPos, orientation, data);
- break;
- case 2:
- xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offset) * getDotMM();//+ barcodeHeight
- yPos = labHeadLen * getDotMM() - data.Length * fontWidth; //(rowY + offsetY) * dotsMm + rowNum * rowHeight * dotsMm;
- orientation = "B";
- strCmd += getBarcodeCmd(xPos, yPos, orientation, data);
- break;
- case 3:
- offset = 52;
- xPos = (offset + blankOffset) * getDotMM();
- yPos = (blankOffset + 30 + rowNum * rowHeight + offsetY) * getDotMM();
- orientation = "N";
- strCmd += getBarcodeCmd(xPos, yPos, orientation, data);
- break;
- }
-
- }
-
- /// <summary>
- /// 打印标签
- /// </summary>
- /// <param name="coilLabel">标签内容</param>
- public void printLable(ColdCoilLable coilLabel)
- {
- initLabelSetting();
- strCmd += getBeginCmd();
- if(1 == version)strCmd += getDefaultFontCmd();
- if (3 == version) //添加标签打印模板3 纸张竖着、数据横排
- {
- blankOffset = 10;//为左边数据与边的间距;
- labBoxLen1 = 24;
- rowHeight = 10;
- //offsetY = 5;
- ////offsetX = 0;
- //strCmd += "^CFF,50,20\r\n"; //'^CFA,50,24';
- //// 打印标签头名称
- //xPos = (blankOffset + 2 + offsetX) * getDotMM();
- //yPos = (blankOffset + 2 + offsetY) * getDotMM() + rowNum * 5 * getDotMM();
- //strCmd += fillDataCmd(xPos, yPos, coilLabel.labelHeadName); //打印标签头,用labelHeadName来设置标签头名称,如:新钢冷轧厂冷硬卷标签
- //rowNum++;
- offsetY = 10;
- printstl("COIL NO.:", coilLabel.coilNo);
- printLine("SPECIFICATION:", coilLabel.specification);
- printstl("GRADE:", coilLabel.steelGrade);
- printLine("HEAT NO.:", coilLabel.heatNo);
- printLine("DIMENSION(mm):", coilLabel.dimension);
- printLine("WEIGHT(kg):", coilLabel.weight);
- printLine("DATE:", coilLabel.prodDate);
- //if (null != coilLabel.checker && "" != coilLabel.checker)
- // printLine("CHECKER:", coilLabel.checker);
- printstl2("REMARKS:", coilLabel.steelGrade);
- //printBarcode(coilLabel.barcode); //取消条形码
- strCmd += getEndCmd();
- //writeDoc(strCmd);
- //sendMessage(Encoding.Default.GetBytes(strCmd));
- sendCommand(strCmd);
- }
- else if (4 == version) //添加标签打印模板4 纸张竖着、数据竖着(成品包装作业管理)
- {
-
-
- /*offsetX = 5;
- strCmd += "^A0R,140,140\r\n"; //'^CFA,50,24';字体设置:第一个字母A表示粗体,第3个字母R表示字体纵向,F表示横向;
- // 打印标签钢卷号
- //xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * getDotMM() + fontHeight;
- //yPos = (blankOffset + offsetY) * getDotMM() + 15;
- //strCmd += fillDataCmd(xPos, yPos, coilLabel.coilNo); //钢卷号
- xPos = (blankOffset + labHeadWith * 2 + rowNum * rowHeight + offsetX-48) * getDotMM() + fontHeight ;
- yPos = (blankOffset + offsetY + labHeadWith/2-10) * getDotMM() + 35;
- strCmd += fillDataCmd(xPos, yPos, coilLabel.coilNo); //钢卷号
- rowNum++;
- offsetX = 0;
- strCmd += "^A0R,120,120\r\n";//"^A0R,75,60\r\n"; //'^CFA,50,24';
- xPos = (blankOffset + labHeadWith + offsetX - 30) * getDotMM() + fontHeight;//(blankOffset + 23 + labHeadWith + offsetX-58+5) * getDotMM() + fontHeight;
- yPos = (blankOffset + offsetY + labHeadWith/2) * getDotMM() + 35; //fillBoxLen2
- strCmd += fillDataCmd(xPos, yPos, coilLabel.weight + "kg");
- // X 坐标不变
- strCmd += "^A0R,120,120\r\n"; //'^CFF,50,20';
- //xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * dotsMm +fontHeight ; fillBoxLen1 * getDotMM()
- yPos = (blankOffset + 5 + offsetY + labHeadWith/2) * getDotMM() + fillBoxLen1 * getDotMM() - getStringDots(coilLabel.weight);//
- strCmd += fillDataCmd(xPos, yPos, coilLabel.prodDate.Replace("-","").Substring(0, 10));
- //strCmd += fillDataCmd(xPos, yPos, coilLabel.prodDate);
- strCmd += getEndCmd();
- //writeDoc(strCmd);
- //sendMessage(Encoding.Default.GetBytes(strCmd));
- sendCommand(strCmd);*/
- offsetX = 5;
- strCmd += "^A0R,140,140\r\n"; //'^CFA,50,24';字体设置:第一个字母A表示粗体,第3个字母R表示字体纵向,F表示横向;
- // 打印标签钢卷号
- //xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * getDotMM() + fontHeight;
- //yPos = (blankOffset + offsetY) * getDotMM() + 15;
- //strCmd += fillDataCmd(xPos, yPos, coilLabel.coilNo); //钢卷号
- xPos = (blankOffset + labHeadWith * 2 + rowNum * rowHeight + offsetX - 40) * getDotMM() + fontHeight;
- yPos = (blankOffset + offsetY + labHeadWith / 2) * getDotMM() + 35;
- // yPos = (blankOffset + offsetY + labHeadWith/2-10) * getDotMM() + 35;
- strCmd += fillDataCmd(xPos, yPos, coilLabel.coilNo); //钢卷号
- rowNum++;
- offsetX = 0;
- strCmd += "^A0R,120,120\r\n";//"^A0R,75,60\r\n"; //'^CFA,50,24';
- xPos = (blankOffset + labHeadWith + offsetX - 20) * getDotMM() + fontHeight;//(blankOffset + 23 + labHeadWith + offsetX-58+5) * getDotMM() + fontHeight;
- yPos = (blankOffset + offsetY + labHeadWith / 2 + 10) * getDotMM() + 35; //fillBoxLen2
- strCmd += fillDataCmd(xPos, yPos, coilLabel.weight + "kg");
- // X 坐标不变
- strCmd += "^A0R,120,120\r\n"; //'^CFF,50,20';
- //xPos = (blankOffset + labHeadWith + rowNum * rowHeight + offsetX) * dotsMm +fontHeight ; fillBoxLen1 * getDotMM()
- yPos = (blankOffset + 5 + offsetY + labHeadWith / 2) * getDotMM() + fillBoxLen1 * getDotMM() - getStringDots(coilLabel.weight);//
- strCmd += fillDataCmd(xPos, yPos, coilLabel.prodDate.Replace("-", "").Substring(0, 10));
- String BarCode = "";
- BarCode += coilLabel.coilNo + ";";
- //BarCode += "*XINSTEEL* CoilNo:" + coilLabel.coilNo + " ";
- //BarCode += "Dimension:" + coilLabel.dimension + " ";
- //BarCode += "SteelGrade:" + coilLabel.steelGrade + " ";
- //BarCode += "Date:" + coilLabel.prodDate + " ";
- BarCode += coilLabel.weight + "kg";
- xPos = (blankOffset + labHeadWith + offsetX - 30) * getDotMM() + fontHeight;
- yPos = (blankOffset) * getDotMM();
- strCmd += fillBQDataCmd(xPos, yPos, BarCode);
- //strCmd += fillDataCmd(xPos, yPos, coilLabel.prodDate);
- strCmd += getEndCmd();
- //writeDoc(strCmd);
- //sendMessage(Encoding.Default.GetBytes(strCmd));
- sendCommand(strCmd);
- }
- else if (5 == version) //添加标签打印模板4 纸张竖着、数据竖着(成品包装作业管理)
- {
- offsetX = 15;
- strCmd += "^A0B,80,60\r\n";// "^A0B,80,60\r\n"; //'^CFA,50,24';字体设置:第一个字母A表示粗体,第3个字母R表示字体纵向,F表示横向;
- // 打印标签钢卷号
- xPos = (labHeadWith + rowNum * rowHeight + offsetX + rowHeight) * getDotMM();
- yPos = (blankOffset + offsetY + fillBoxLen1) * getDotMM() - getStringDots(coilLabel.coilNo)-52;//yPos = (blankOffset + offsetY ) * getDotMM() + 15
- strCmd += fillDataCmd(xPos, yPos, coilLabel.coilNo); //钢卷号
- strCmd += "^A0B,75,60\r\n"; //'^CFA,50,24';
- yPos = (blankOffset + offsetY + fillBoxLen2*2 + labBoxLen1) * getDotMM() + 15 - getStringDots(coilLabel.specification);//yPos = (blankOffset + offsetY + fillBoxLen2 + labBoxLen1) * getDotMM() + 15; //fillBoxLen2
- strCmd += fillDataCmd(xPos, yPos, coilLabel.specification);//标准号
- rowNum++;
- strCmd += "^A0B,80,60\r\n";
- // 打印标签牌号炉号
- xPos = (labHeadWith + rowNum * rowHeight + offsetX + rowHeight) * getDotMM();
- yPos = (blankOffset + offsetY + fillBoxLen1) * getDotMM() - getStringDots(coilLabel.heatNo)-52;//yPos = (blankOffset + offsetY ) * getDotMM() + 15;
- strCmd += fillDataCmd(xPos, yPos, coilLabel.heatNo); //炉次号
- strCmd += "^A0B,75,60\r\n"; //'^CFA,50,24';
- yPos = (blankOffset + offsetY + fillBoxLen2 * 2 + labBoxLen1) * getDotMM() + 15 - getStringDots(coilLabel.steelGrade)-26;//yPos = (blankOffset + offsetY + fillBoxLen2 + labBoxLen1 ) * getDotMM() + 15; //fillBoxLen2
- strCmd += fillDataCmd(xPos, yPos, coilLabel.steelGrade);//牌号
- rowNum++;
- strCmd += "^A0B,80,60\r\n";
- // 打印标签规格重量
- xPos = (labHeadWith + rowNum * rowHeight + offsetX + rowHeight) * getDotMM();
- yPos = (blankOffset + offsetY + fillBoxLen1) * getDotMM() - getStringDots(coilLabel.weight)-60;//yPos = (blankOffset + offsetY) * getDotMM() + 15;
- strCmd += fillDataCmd(xPos, yPos, coilLabel.weight); //重量
- strCmd += "^A0B,75,60\r\n"; //'^CFA,50,24';
- yPos = (blankOffset + offsetY + fillBoxLen2 * 2 + labBoxLen1) * getDotMM() + 15 - getStringDots(coilLabel.dimension);//yPos = (blankOffset + offsetY + fillBoxLen2 + labBoxLen1) * getDotMM() + 15; //fillBoxLen2
- strCmd += fillDataCmd(xPos, yPos, coilLabel.dimension);//规格
- rowNum++;
- strCmd += "^A0B,80,60\r\n";
- // 打印标签日期合同号
- xPos = (labHeadWith + rowNum * rowHeight + offsetX + rowHeight) * getDotMM();
- yPos = (blankOffset + offsetY + fillBoxLen1) * getDotMM() - getStringDots(coilLabel.prodDate);//yPos = (blankOffset + offsetY) * getDotMM() + 15;
- strCmd += fillDataCmd(xPos, yPos, coilLabel.prodDate); //日期
- strCmd += "^A0B,75,60\r\n"; //'^CFA,50,24';
- yPos = (blankOffset + offsetY + fillBoxLen2 * 2 + labBoxLen1) * getDotMM() + 15 - getStringDots(coilLabel.contractNo)+13;//yPos = (blankOffset + offsetY + fillBoxLen2 + labBoxLen1) * getDotMM() + 15; //fillBoxLen2
- strCmd += fillDataCmd(xPos, yPos, coilLabel.contractNo);//合同号
-
-
- String BarCode = "";
- BarCode += "CoilNo:"+coilLabel.coilNo + " ";
- BarCode += "Dimension:" + coilLabel.dimension + " ";
- BarCode += "SteelGrade:" + coilLabel.steelGrade + " ";
- BarCode += "Date:" + coilLabel.prodDate + " ";
- BarCode += "Weight:" + coilLabel.weight;
- xPos = (blankOffset + labHeadWith / 2+3) * getDotMM() + fontHeight;
- yPos = (blankOffset) * getDotMM();
- strCmd += fillBQDataCmd(xPos, yPos, BarCode);
- //strCmd += "^FO100,100";
- //strCmd += "^BQ,2,10";
- //strCmd += "^FDLA," + BarCode + "^FS";
-
- /*
- System.Drawing.Color co = Color.Red;
- System.Drawing.Font fo = new System.Drawing.Font("微软雅黑", 45, System.Drawing.FontStyle.Bold);
- Bitmap img = this.CreateImage(coilLabel.custName + "\r\n" + coilLabel.licenseMark+ "\r\n" + coilLabel.prodName, fo, new System.Drawing.Rectangle(), co, co);
- String aa = Convert(img);*/
- System.Drawing.Color co = Color.Red;
- System.Drawing.Font fo = new System.Drawing.Font("微软雅黑", 35, System.Drawing.FontStyle.Bold);
- Bitmap img = this.CreateImage(coilLabel.custName + "\r\n\r\n" + coilLabel.prodName + "\r\n" + coilLabel.licenseMark, fo, new System.Drawing.Rectangle(), co, co);
- String aa = Convert2(img);
- aa = aa + "^LH0,0^FO340," + "400" + "^XGR:ZONE1.GRF^FS";//1145
- string tempstr = coilLabel.checker;
- string tempstr1 = "";
- int len = tempstr.Length;
- if (len > 40)
- {
- tempstr1 = tempstr.Substring(0, 40);
- tempstr = tempstr.Substring(40, len - 40);
- }
- Bitmap img2 = this.CreateImage(tempstr1 + "\r\n" + tempstr, fo, new System.Drawing.Rectangle(), co, co);
- // Bitmap img2 = this.CreateImage(tempstr, fo, new System.Drawing.Rectangle(), co, co);
- String aa2 = Convert2(img2);
- // aa2 = aa2 + "^LH0,0^FO1145,300^XGR:ZONE1.GRF^FS";//1145
- aa2 = aa2 + "^LH0,0^FO1145,"+yPos+"^XGR:ZONE1.GRF^FS";//1145
- var t = ((img.Size.Width / 8 + ((img.Size.Width % 8 == 0) ? 0 : 1)) * img.Size.Height).ToString();
- var w = (img.Size.Width / 8 + ((img.Size.Width % 8 == 0) ? 0 : 1)).ToString();
- string zpl = string.Format("^IDB:imgName.GRF~DGR:imgName.GRF,{0},{1},{2}", t, w, aa);
- //strCmd += fillDataCmd(0, 0, zpl + "^LH" + xPos.ToString() + ",600" + "^FO5,60^XGR:imgName.GRF");//牌号
- strCmd += aa;
- strCmd += aa2;
-
- strCmd += getEndCmd();
- sendCommand(strCmd);
- }
- else if (6 == version) //添加标签打印模板4 纸张竖着、数据竖着(成品包装作业管理)
- {
-
- xPos = (blankOffset + labHeadWith / 2 + 5) * getDotMM() + fontHeight;
- yPos = (blankOffset) * getDotMM();
- System.Drawing.Color co = Color.Red;
- System.Drawing.Font fo = new System.Drawing.Font("", 20, System.Drawing.FontStyle.Bold);
- Bitmap img = this.CreateImage("中国", fo, Rectangle.Empty, co, co);
- String aa = Convert(img);
- var t = ((img.Size.Width / 8 + ((img.Size.Width % 8 == 0) ? 0 : 1)) * img.Size.Height).ToString();
- var w = (img.Size.Width / 8 + ((img.Size.Width % 8 == 0) ? 0 : 1)).ToString();
- //string zpl = string.Format("~DGR:imgName.GRF,{0},{1},{2}", t, w, aa);
- //strCmd += fillDataCmd(xPos, yPos, zpl + "^LH0,0^FO5,60^XGR:imgName.GRF");//牌号
- //strCmd += "^XA~DGR:imgName.GRF,";
- //strCmd += zpl;
- //strCmd += "^LH0,0^FO5,60^XGR:imgName.GRF^FS^XZ";
- strCmd += aa;
- // strCmd += getEndCmd();
- sendCommand(strCmd);
- }
- else
- {
- printLine(coilLabel.rollNo, coilLabel.specification);
- printLine(coilLabel.coilNo, coilLabel.steelGrade);
- printLine(coilLabel.heatNo, coilLabel.dimension);
- printLine(coilLabel.contractNo, coilLabel.weight);
- printLine(coilLabel.prodDate, coilLabel.checker);
- printLine(coilLabel.licenseNo, coilLabel.licenseMark);
- printBarcode(coilLabel.barcode);
- strCmd += getEndCmd();
- sendCommand(strCmd);
- }
- }
- //测试写入数据到文本文件中
- public void writeDoc(string str)
- {
- string filePath = "d:\\infor.txt";//这里是你的已知文件,需先创建此文件
- FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite);
- StreamWriter sw = new StreamWriter(fs);
- fs.SetLength(0);//首先把文件清空了。
- sw.Write(str);//写你的字符串。
- sw.Close();
- }
- /// <summary>
- /// 测试函数
- /// </summary>
- public void test()
- {
- ColdCoilLable coilLabel = new ColdCoilLable();
- coilLabel.rollNo = "L1-017355-10";
- coilLabel.specification = "GB2009-2011XGSPC";
- coilLabel.steelGrade = "SPCC";
- coilLabel.dimension = "1.8*1205";
- coilLabel.coilNo = "L1-017355-10AA0";
- coilLabel.weight = "28050";
- coilLabel.heatNo = "J12-56790A";
- coilLabel.prodDate = DateTime.Now.ToString("yyyyMMddhhmmss");
- coilLabel.contractNo = "532011080001";
- coilLabel.licenseNo = "E532011";
- coilLabel.licenseMark = "XGHG";
- coilLabel.checker = "";
- coilLabel.barcode = coilLabel.coilNo;
- printLable(coilLabel);
- }
- }
- }
|