Принтер этикеток Zebra

Материал из База знаний Etersoft
Перейти к навигацииПерейти к поиску
Файл:42px-Wikitext-ru.svg.png
Эту статью следует викифицировать.


Принтеры этикеток Zebra

Проблема при печати штрих-кодов на принтер Zebra LP2824 Plus: программа, запущенная под Wine, генерировала этикетки со штрих-кодами, но при попытке печати с минимальным разрешением 203dpi штрих-коды печатались некорректно, а печатать с более высоким разрешением принтер не умеет, получалось только увеличенное изображение. Вариант кодирования строки напрямую, используя шрифты для штрих-кода, тоже ни к чему не привёл: штрих-коды печатались отлично, но сканер их не воспринимал. Данное решение немного сделано пинком наизнанку, но оно позволяет печатать штрих-коды в нормальном виде, при этом сканер их читает отлично.

Как это работает? Программа, запущенная под Wine (например, 1С или Бизнес-Пак), печатает этикетки не напрямую на принтер, а в PDF-принтер, который сохраняет отчёт в PDF-файл в каталоге ~/PDF. Далее самописный скрипт отслеживает появление PDF-файлов в заданном каталоге и автоматически выводит их на печать, после чего удаляет все файлы из папки.

Что для этого нужно? Для начала у вас должны быть установлены пакеты cups-pdf и python. Также необходимо скачать архив с драйверами и необходимыми файлами, прикреплённый в самом низу данного сообщения. Если с этим всё в порядке, то делаем следующее:

  1. Скармливаем существующему принтеру с именем PDF драйвер zebra_pdf.ppd или создаём новый PDF-принтер, например, Zebra_PDF, и тыкаем его носом на этот драйвер;
  2. Подключаем наш принтер Zebra и подсовываем ему нужный драйвер zebra*_ru.ppd (в нашем случае для принтера Zebra LP2824 Plus больше подходит драйвер zebraep2_ru.ppd);
  3. в настройках обоих принтеров выставляем нужный размер этикетки, а также другие параметры в случае необходимости;
  4. Настраиваем нужную программу на печать на принтер PDF;
  5. Правим скрипт scanpdf.py, в строке CMD = 'lpr -P ZEBRA %s' вместо ZEBRA прописываем правильное имя принтера, в строке for nm in glob.glob('./PDF/*.pdf'): прописываем истинный каталог для сохранения PDF-файлов и т.д.;
  6. Копируем наш скрипт в домашний каталог, делаем его исполняемым и ставим в автозагрузку при входе пользователя: Система - Параметры - Сеансы - во вкладке "Автоматически запускаемые программы" нажимаем "Добавить" и прописываем путь;
  7. Перезагружаемся.

Что было "допилено"?

  1. Файл zebra_pdf.ppd - это стандартный драйвер Generic PDF, из которого были убраны все стандартные размеры бумаги и добавлены размеры этикеток (в дюймах и сантиметрах)
  2. Драйверы zebra*_ru.ppd подверглись тотальному редактированию:

а) убраны все языки, кроме английского, и добавлен наш великий и могучий; б) все размеры этикеток были продублированы в нормальном виде (в сантиметрах) в) добавлена этикетка 20х30мм (которая нам была нужна) г) исправлен глюк, когда при печати из PDF этикетки печатались пустыми (исправлена строка *ColorDevice: False на *ColorDevice: True)

Рекомендации: Если среди этикеток вы не можете найти нужную, то её можно добавить вручную, прописав её в PPD-файлы точно таким же образом, как и другие этикетки. Редактировать надо сразу в нескольких секциях: *PageSize, *PageRegion, *ImageableArea и *PaperDimension (в драйверах Zebra надо её также добавиь в секцию *ru.PageSize) Правильное количество единиц расчитываем вручную, исходя из соотношения: 1" = 2,54см = 72 ед.

http://forum.runtu.org/index.php?topic=6391.0