C# 自动校准斑马打印机和标签的偏移位置

C# 自动校准斑马打印机和标签的偏移位置,c#,asp.net,offset,zebra-printers,zpl,C#,Asp.net,Offset,Zebra Printers,Zpl,我正在处理一个斑马标签,但是标签打印得有点偏右,有人告诉我创建一个文本框来保存用户在cookies中给出的偏移值。有没有办法自动校准斑马打印机和标签位置?我阅读了ZPL指南,发现^FO和^FT都可以帮助我实现这一目标。因此,我可以做的一件事是读取我的zpllabel.txt并尝试从文本框中查找^FO值并添加所需值,然后将其发送到打印机,但如果有人遇到此问题,并想出了一种更简单的方法来自动校准Zebra打印机,请帮助我: 以下是我正在处理的标签: ^XA^MCY^PRD,D,D^MMT,N^XZ

我正在处理一个斑马标签,但是标签打印得有点偏右,有人告诉我创建一个文本框来保存用户在cookies中给出的偏移值。有没有办法自动校准斑马打印机和标签位置?我阅读了ZPL指南,发现^FO和^FT都可以帮助我实现这一目标。因此,我可以做的一件事是读取我的zpllabel.txt并尝试从文本框中查找^FO值并添加所需值,然后将其发送到打印机,但如果有人遇到此问题,并想出了一种更简单的方法来自动校准Zebra打印机,请帮助我:

以下是我正在处理的标签:

^XA^MCY^PRD,D,D^MMT,N^XZ                                                
^XA                                                           
^DFCASENEW^FS                                                 
^LH0,0                                                        
^FO33,45^A0N,90,98^FN01^FS^FX Company^FS                      
^FO879,28^A0N,263,214^FN02^FS^FX Product^FS                   
^FO30,159^A0N,90,58^FN03^FS^FX Description^FS                 
^FO42,321^A0N,65,68^FN04^FS^FX NumberIn^FS                    
^FO100,436^A0N,75,66^FN05^FS^FX SelectCode^FS                 
^BY6,,230^FO260,252^BCN,,N,N,N,N^FN06^FS^FX RotationProduct^FS
^FO660,503^A0N,32,98^FN07^FS^FX RotationProduct^FS            
^BY4,3.0,204^FO60,518^B2N,,N,N,N^FN08^FS^FX UPCCode^FS        
^FO170,732^A0N,24,47^FN09^FS^FX UPCCode^FS                    
^FO32,516^GB590,0,10^FS                                       
^FO32,717^GB590,0,10^FS                                       
^FO640,573^A0N,226,212^FN10^FS^FX Rotation^FS                 
^FO1362,546^A0N,90,66^FDBest Before^FS                        
^FO1235,628^A0N,134,140^FN11^FS^FX BestBefore^FS              
^FO55,391^A0N,43,77^FDSEL^FS                                  
^FO30,267^A0N,54,100^FDQTY^FS                                 
^XZ                                                           
^XA^XFCASENEW
^FN01^FDCompany^FS
^FN02^FDProduct^FS
^FN03^FDDescription^FS
^FN04^FDNumberIn^FS
^FN05^FDSelectCode^FS
^FN06^FDRotationProduct^FS
^FN07^FD^FS
^FN08^FDUPCCode^FS
^FN09^FD^FS
^FN10^FDRotation^FS
^FN11^FDBestBefore^FS
^PQ1,0,1,Y
^XZ
^XA^ID*.*^XZ
如果我必须在文本文件中找到所有^FO并将其添加到值中,我该如何实现这一点

 try
{
byte[] file = File.ReadAllBytes("C:\\Users\\something\\Documents\\Visual Studio 2013\\Projects\\zplTest\\zplTest\\zpllabel3.txt");
 using (MemoryStream memory = new MemoryStream(file))
  {
  using (TextReader reader = new StreamReader(memory))
   {
  string input = reader.ReadToEnd();
     // for (int i = 0; 1 < file.Length; i++)
   {
  using (MemoryStream writermemory = new MemoryStream())
  using (StreamWriter writer = new StreamWriter(writermemory))
    {
   Dictionary<string, string> replacementcollections =
   new Dictionary<string, string>();
   replacementcollections.Add
   ("^FN01^FDCompany^FS", compname);
   replacementcollections.Add
   ("^FN02^FDProduct^FS", stlabel23);
   replacementcollections.Add
   ("^FN03^FDDescription^FS", stlabel24);
   replacementcollections.Add
   ("^FN04^FDNumberIn^FS", stlabel25);
   replacementcollections.Add
   ("^FN05^FDSelectCode^FS", stlabel26);
   replacementcollections.Add
   ("^FN06^FDRotationProduct^FS", stlabel27);
   replacementcollections.Add
   ("^FN07^FD^FS", stlabel28);
   replacementcollections.Add
   ("^FN08^FDUPCCode^FS", stlabel29.TrimEnd());
   replacementcollections.Add
   ("^FN09^FD^FS", stlabel30.TrimEnd());
   replacementcollections.Add
   ("^FN10^FDRotation^FS", "^FN10^FD" + TxtRotcode.Text.Trim() + "^FS");
   replacementcollections.Add
   ("^FN11^FDBestBefore^FS", "^FN11^FD" + TxtBestBefore.Text.Trim() + "^FS");
    replacementcollections.Add
   ("^PQ1,0,1,Y", "PQ" + TxtQty.Text.Trim() + ",0,1,Y");
   string output = input;
   foreach (KeyValuePair<string, string> 
   replacement in replacementcollections)
   { output = output.Replace(replacement.Key, replacement.Value); }
   Label256.Visible = true;
   zplcode.Text = output;
   zplcode.Visible = true;
    writer.Close();
    ZplPreview();
  }

}
}
}
}
catch (Exception ex)
 {
   Console.WriteLine(ex.StackTrace.ToString());
   Console.WriteLine(ex.Message.ToString());
  }
试试看
{
byte[]file=file.ReadAllBytes(“C:\\Users\\something\\Documents\\Visual Studio 2013\\Projects\\zplTest\\zplTest\\zpllabel3.txt”);
使用(MemoryStream memory=新的MemoryStream(文件))
{
使用(TextReader=新的StreamReader(内存))
{
字符串输入=reader.ReadToEnd();
//for(int i=0;1
标签主视图
^LH
命令允许您对整个标签进行x、y偏移调整-实际上是一个边距。不幸的是,我意识到它不支持负值,所以在这种情况下,它不允许您将标签内容向左移动。但你总是可以试一试

是否有原因不能调整生成文件的代码以调整X坐标?也就是说,在写入之前,通过调整它们来避免查找替换。我就是这样做的

看起来您已经为要替换其中文本变量的标签创建了文本文件模板。您可以简单地为FO值添加更多变量,并在
replacementcollections
中像处理其他变量一样处理它们


或者你可以一行一行地阅读你的文件,在搜索
IndexOf()
`^FO'的同时在每一行上循环,解析语法并替换那里的FO-co-words。

我做了一些与你上面的答案类似的事情,谢谢。