Текст неправильно отцентрирован на ярлыке (CUPS + Zebra Gk420)
Я добавил пользовательский формат в /etc/cups/ppd/GK420.ppd, чтобы соответствовать моим меткам 70x50 мм.
*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 (я использую виртуальную машину на хосте Linux, на котором установлен CUPS) печатается правильно.
Когда я возвращаюсь в Linux и печатаю снова, выравнивание правильное.
Мое предположение заключается в том, что драйвер Windows отправляет команду конфигурации на принтер, которая остается в силе при печати из Linux. Если я выключу и снова включу принтер, проблема снова появится при печати из Linux.
Мне кажется странным, что я не смог найти никакой информации, связанной с этой проблемой, хотя принтеры Zebra довольно популярны... Я единственный, кто использует Linux для печати этикеток;-)
1 ответ
К сожалению, CUPS не центрирует содержимое страницы для вас и не поддерживает настройку для регулировки горизонтального смещения.
На старых принтерах Zebra наклейки располагались напротив левого края, а на более поздних (например, gk420 или zd420) наклейки центрировались. CUPS предлагает настройку для вертикального смещения (т.е. zeLabelTop
), но не для горизонтального смещения.
Однако горизонтальное смещение можно настроить с помощью команды ZPL. ^LS
, Это регулирует горизонтальное смещение для всех инструкций печати, и настройка сохраняется до выключения принтера.
Это также причина, почему это работает после печати на окнах. Это, вероятно, устанавливает смещение, и вы не перезагружали принтер перед печатью в 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 (Field Separator). После ввода команды ^LS настройка сохраняется до тех пор, пока вы не выключите принтер или не отправите новую команду ^LS на принтер.
Я считаю, что это код CUPS, который преобразует ваш документ в ZPL: https://github.com/apple/cups/blob/master/filter/rastertolabel.c