我已向 /etc/cups/ppd/GK420.ppd 添加了自定义格式,以匹配我的 70x50mm 标签。
*OpenUI *PageSize/Media Size: PickOne
*OrderDependency: 10 AnySetup *PageSize
*DefaultPageSize: w198h141
*PageSize w198h141/70x50mm: "<</PageSize[198 141]/ImagingBBox null>>setpagedevice"
*PageSize w90h18/1.25x0.25": "<</PageSize[90 18]/ImagingBBox null>>setpagedevice"
*CloseUI: *PageSize
*OpenUI *PageRegion/Media Size: PickOne
*OrderDependency: 10 AnySetup *PageRegion
*DefaultPageRegion: w198h141
*PageRegion w198h141/70x50mm: "<</PageSize[198 141]/ImagingBBox null>>setpagedevice"
*PageRegion w90h18/1.25x0.25": "<</PageSize[90 18]/ImagingBBox null>>setpagedevice"
*CloseUI: *PageRegion
*DefaultImageableArea: w198h141
*ImageableArea w198h141/70x50mm: "0 0 198 141"
*ImageableArea w90h18/1.25x0.25": "0 0 90 18"
*DefaultPaperDimension: w198h141
*PaperDimension w198h141/70x50": "198 141"
*PaperDimension w90h18/1.25x0.25": "90 18"
*MaxMediaWidth: "576"
*MaxMediaHeight: "3600"
*HWMargins: 0 0 0 0
*CustomPageSize True: "pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice"
*ParamCustomPageSize Width: 1 points 36 576
*ParamCustomPageSize Height: 2 points 36 3600
*ParamCustomPageSize WidthOffset: 3 points 0 0
*ParamCustomPageSize HeightOffset: 4 points 0 0
*ParamCustomPageSize Orientation: 5 int 0 0
从 gEdit 或 LibreOffice 打印时,我的文本未正确对齐:打印在标签左边框之前开始。
如果我使用 Windows XP 和 Seagull 驱动程序打印,则相同的 .odt 文件(我在安装了 CUPS 的 Linux 主机上使用虚拟机)可以正确打印。
当我返回 Linux 并再次打印时,对齐是正确的。
我最好的猜测是 Windows 驱动程序向打印机发送了一个配置命令,该命令在从 Linux 打印时仍然有效。如果我关闭打印机然后再打开,从 Linux 打印时问题会再次出现。
我觉得奇怪的是,尽管 Zebra 打印机非常流行,但我却找不到与此问题相关的任何信息...我是唯一一个使用 Linux 打印标签的人吗 ;-)
答案1
不幸的是,CUPS 不会将页面内容居中,也不支持调整水平偏移的设置。
旧款 Zebra 打印机的标签位于左边缘,但较新的打印机(例如 gk420 或 zd420)的标签位于中央。CUPS 提供垂直偏移设置(即zeLabelTop
),但不提供水平偏移设置。
然而,水平偏移能可以使用 ZPL 命令进行调整^LS
。这将调整所有打印指令的水平偏移,并且设置将保留,直到打印机关闭。
这也是为什么在 windows 上打印后可以正常工作的原因。它可能设置了偏移量,而你在 linux 上打印前没有重新启动打印机。
在 CUPS 支持水平偏移设置之前,先在 Windows 上打印而不重新启动打印机是您唯一(可行)的选择。
更多信息请点击这里:https://www.zebra.com/content/dam/zebra/manuals/printers/common/programming/zpl-zbi2-pm-en.pdf
^LS 命令可兼容设置为小于完整标签宽度的 Z-130 打印机格式。它用于将所有字段位置向左移动,因此 Z-130 或 Z-220 打印机上使用的相同命令可在其他 Zebra 打印机上使用。
...
为了与现有的 Zebra 打印机兼容,此命令必须位于第一个 ^FS(字段分隔符)命令之前。一旦您发出 ^LS 命令,设置将保留,直到您关闭打印机或向打印机发送新的 ^LS 命令。
我相信这是将您的文档转换为 ZPL 的 CUPS 代码:https://github.com/apple/cups/blob/master/filter/rastertolabel.c