Принтер этикеток Zebra
Принтеры этикеток Zebra
Проблема при печати штрих-кодов на принтер Zebra LP2824 Plus: программа, запущенная под Wine, генерировала этикетки со штрих-кодами, но при попытке печати с минимальным разрешением 203dpi штрих-коды печатались некорректно, а печатать с более высоким разрешением принтер не умеет, получалось только увеличенное изображение. Вариант кодирования строки напрямую, используя шрифты для штрих-кода, тоже ни к чему не привёл: штрих-коды печатались отлично, но сканер их не воспринимал. Данное решение немного сделано пинком наизнанку, но оно позволяет печатать штрих-коды в нормальном виде, при этом сканер их читает отлично.
Как это работает? Программа, запущенная под Wine (например, 1С или Бизнес-Пак), печатает этикетки не напрямую на принтер, а в PDF-принтер, который сохраняет отчёт в PDF-файл в каталоге ~/PDF. Далее самописный скрипт отслеживает появление PDF-файлов в заданном каталоге и автоматически выводит их на печать, после чего удаляет все файлы из папки.
Что для этого нужно? Для начала у вас должны быть установлены пакеты cups-pdf и python. Также необходимо скачать архив с драйверами и необходимыми файлами, прикреплённый в самом низу данного сообщения. Если с этим всё в порядке, то делаем следующее:
- Скармливаем существующему принтеру с именем PDF драйвер zebra_pdf.ppd или создаём новый PDF-принтер, например, Zebra_PDF, и тыкаем его носом на этот драйвер;
- Подключаем наш принтер Zebra и подсовываем ему нужный драйвер zebra*_ru.ppd (в нашем случае для принтера Zebra LP2824 Plus больше подходит драйвер zebraep2_ru.ppd);
- в настройках обоих принтеров выставляем нужный размер этикетки, а также другие параметры в случае необходимости;
- Настраиваем нужную программу на печать на принтер PDF;
- Правим скрипт scanpdf.py, в строке CMD = 'lpr -P ZEBRA %s' вместо ZEBRA прописываем правильное имя принтера, в строке for nm in glob.glob('./PDF/*.pdf'): прописываем истинный каталог для сохранения PDF-файлов и т.д.;
- Копируем наш скрипт в домашний каталог, делаем его исполняемым и ставим в автозагрузку при входе пользователя: Система - Параметры - Сеансы - во вкладке "Автоматически запускаемые программы" нажимаем "Добавить" и прописываем путь;
- Перезагружаемся.
Что было "допилено"?
- Файл zebra_pdf.ppd - это стандартный драйвер Generic PDF, из которого были убраны все стандартные размеры бумаги и добавлены размеры этикеток (в дюймах и сантиметрах)
- Драйверы zebra*_ru.ppd подверглись тотальному редактированию:
а) убраны все языки, кроме английского, и добавлен наш великий и могучий; б) все размеры этикеток были продублированы в нормальном виде (в сантиметрах) в) добавлена этикетка 20х30мм (которая нам была нужна) г) исправлен глюк, когда при печати из PDF этикетки печатались пустыми (исправлена строка *ColorDevice: False на *ColorDevice: True)
Рекомендации: Если среди этикеток вы не можете найти нужную, то её можно добавить вручную, прописав её в PPD-файлы точно таким же образом, как и другие этикетки. Редактировать надо сразу в нескольких секциях: *PageSize, *PageRegion, *ImageableArea и *PaperDimension (в драйверах Zebra надо её также добавиь в секцию *ru.PageSize) Правильное количество единиц расчитываем вручную, исходя из соотношения: 1" = 2,54см = 72 ед.