Текст на этикетке неправильно центрирован (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 отправляет на принтер команду config, которая остается эффективной при печати из Linux. Если я выключу и снова включу принтер, проблема снова появится при печати из Linux.

Мне кажется странным, что я не смог найти никакой информации, связанной с этой проблемой, хотя принтеры Zebra довольно популярны ... Я единственный, кто использует Linux для печати этикеток; -)

1
задан 8 August 2018 в 13:13
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 (Поле Команда "Сепаратор". После выполнения команды ^LS настройка сохраняется до тех пор, пока вы не выполните команду с принтера или отправить новую команду ^LS на принтер.

Я полагаю, что это код CUPS, который преобразует ваш документ в ZPL: https://github.com/apple/cups/blob/master/filter/rastertolabel.c

1
ответ дан 3 December 2019 в 23:13

Теги

Похожие вопросы