如何在不同dpi的打印机中使用相同的ZPL代码

本文关键字:ZPL 代码 打印机 dpi | 更新日期: 2023-09-27 18:18:42

已使用ZebraDesigner2软件创建用于打印ZPL的标签,使用GC420t打印机我没有问题。

现在我必须使用S4M打印机(200 dpi)和ZT230 (300 dpi)生成ZPL代码来打印标签,问题是相同的dpi差异使得S4M裙子留下的印象非常大切割重要信息。例如

^XA
^PW1240
^LL1724
^FT321,845^A0N,42,40^FH'^FDTeste 1234567890^FS
^PQ1,0,1,Y^XZ

我试着使用下面的命令,但是我没有找到好的例子。

^MU – Set Units of Measurement
^JM – Set Dots per Millimeter

我需要在两台打印机上打印相同的zpl代码,可以在200或300 dpi。

如何在不同dpi的打印机中使用相同的ZPL代码

Zebra打印机的默认测量单位是点。设置计量单位为mm,代码中所有参数必须以mm为单位。

例如

在203 dpi(8点/mm)打印机上使用下面的代码

^ XA
32岁的^ A0N 32
^ FT16 64
^ fdt ^ FS
^ XZ

您可以使用下面的代码(此代码将在203 dpi(8点/毫米)和300 dpi(12点/毫米)打印机上正常工作)

^ XA
^妈妈
^ A0N 4 4
^ FT2 8
^ fdt ^ FS
^泥浆
^ XZ

在为Zebra打印机准备标签时,我不得不做类似的过程。我必须动态地检测所支持的不同打印机的分辨率。下面的代码使用。net PrintServer类来安装打印机并从中获取设置。

... 
using System.Printing;
...
var ps = new PrintServer();
var queues = ps.GetPrintQueues(
new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });
var bool Is200dpi = false;
var bool Is300dpi = false;
var int  ActualDPI = 203; // just some default    
foreach (var queue in queues)
{
   if (queue.Name.Trim().Equals( "ThePrinterOnYourMachine" ))
   {
      var pt = queue.DefaultPrintTicket;
      if (pt.PageResolution.X >= 200 && pt.PageResolution.X <= 203)
         Is200dpi = true;
      else if (pt.PageResolution.X >= 300 && pt.PageResolution.X <= 303)
         Is300dpi = true;
      ActualDPI = pt.PageResolution.X;
      // done, don't need to look at any other printers
      break;
   }
}

因此,如果您有一些配置设置来检测每台机器上的"标签"打印机,您可以将其作为计算的基础。标记200 dpi和300 dpi的打印机,这样您就可以为您的尺寸或大小输出选项使用乘数来构建标签。