
Позвольте мне объяснить мое обычное развертывание. У меня есть клиенты на Windows, у которых есть принтеры Zebra.
Мы устанавливаем эти принтеры локально, используя драйверы Generic/Text Printer.
Они подключаются через удаленный рабочий стол к моему серверу Windows 2008. Мое приложение отправляет необработанный код ZPL II (текст) драйверу принтера, и все работает.
Теперь у меня есть клиент на MacOSX Yosemite 10.10.3. Он использует приложение Microsoft Remote Desktop для подключения. Я вижу принтер Zebra в списке принтеров. Когда мое приложение печатает на драйвере принтера, спул Mac сообщает: «Невозможно преобразовать файл PostScript». Это «нормально», так как я отправляю на принтер необработанный текст.
Затем я попытался добавить Raw-принтер в MacOS, но он не отображается на удаленном рабочем столе.
Что я должен делать?
решение1
В OSX нет такого понятия, как универсальный текстовый принтер.
OSX внутренне обрабатывает КАЖДЫЙ принтер как postscript на уровне ОС. Затем преобразует вывод postscript в любой язык, необходимый принтеру (в вашем случае ZPLII).
Таким образом, приложение удаленного рабочего стола видит принтер «PostScript» на OSX и связывается с вашим сервером Windows. (Windows обычно видит его как «устройство MS ImageSetter», которое является универсальным принтером PostScript.)
Ваше приложение игнорирует это и все равно отправляет RAW ZPLII на Mac, но Mac ожидал получить Postscript, и отсюда ваше сообщение об ошибке, когда он пытается интерпретировать файл Postscript (который на самом деле не Postscript, а ZPLII).
Это неприятно, потому что простого способа обойти эту проблему нет.
Если принтер клиента — сетевой принтер (насколько я помню, модели GXxxxt имеют обычный интерфейс Zebra LAN), вы можете предоставить клиенту необработанный файл ZPL и попросить его вручную отправить его на принтер с помощью старой доброй команды lpr. Клиенту придется запустить что-то вроде этого в командной строке в терминале:
lpr -H <ip-address printer> -P PORT1LF -l <filename of ZPL-file>
Обратите внимание: -H и -P чувствительны к регистру!! "-l" - это строчная буква L.
-H (имя хоста) указывает IP-адрес принтера, -P - имя очереди, -l означает "файл уже отформатирован, не трогайте содержимое".
Обратите внимание (2): PORT1LF — это обычное имя очереди, используемое внутри интерфейсов Zebra LAN. Если Zebra не использует интерфейс Zebra LAN, а использует другой бренд, вам обычно нужно использовать «auto» или «text» для параметра -P. Обратитесь к руководству.
EDIT добавлено после некоторого исследования
В OSX вы можете создать так называемую очередь печати "RAW" с помощью инструмента командной строки lpadmin или с помощью веб-интерфейса CUPS по адресуhttp://localhost:631.
Однако такие RAW-принтеры не отображаются как обычные принтеры в OSX, поскольку приложениям OSX GUI абсолютно необходимо, чтобы принтер был Postscript. Для принтеров, не поддерживающих Postscript, CUPS предоставляет конвертер Postscript, который преобразует Postscript в то, что понимает принтер, не поддерживающий Postscript.
Для принтера RAW это преобразование в Postscript невозможно, поэтому принтеры RAW не предлагаются приложениям OSX GUI как допустимые устройства печати. (Их можно использовать с командными инструментами печати, такими как lpq, lpr и т. д.)
И именно поэтому НИ ОДИН клиент RDP в OSX не перенаправляет их! Они просто перенаправляют обычные принтеры.
(Технически нет никаких причин, по которым клиент RDP не мог бы представить RAW-принтер (использующий старую обработку lpr/lpq unix) через RDP как «универсальный/только текстовый» принтер для Windows. Но для этого потребовалось бы дополнительное программирование. И учитывая, что это конкретное использование представляет собой очень узкую нишу, я не увижу, что это произойдет в ближайшее время.)
Насколько я могу судить, ваш единственный обходной путь — тот, который я уже упомянул. Предоставьте файл пользователю и попросите его распечатать его локально с помощью lpr.
Принтер подключен по USB, но это не проблема. Используя веб-интерфейс CUPS, вы можете настроить USB-принтер как очередь печати raw. Часть этой веб-страницыДобавьте очередь печати raw, вам нужны только шаги с 3 по 7объясняет, как это сделать. В качестве примера даже используется зебра.
решение2
Думаю, я нашел ответ.
Вам необходимо загрузить это приложение: https://www.peninsula-group.com/labeller-thermal-labelling-software/
Затем вы запускаете демо-версию и устанавливаете из нее принтер.
После этого вы меняете драйвер с вашего первоначального zebra на новый драйвер (9.1.14 от peninsula-group.com)
С наилучшими пожеланиями