Невозможно направить печать в Zebra на Mac через удаленный рабочий стол
Позвольте мне объяснить мое обычное размещение. У меня есть клиенты на Windows, у которых есть принтеры Zebra.
Мы устанавливаем локально этот принтер, используя драйверы универсального / текстового принтера.
Они подключаются через удаленный рабочий стол к моему серверу Windows 2008. Мое приложение отправляет необработанный код ZPL II (текст) в драйвер принтера, и все работает.
Теперь у меня есть клиент на MacOSX Yosemite 10.10.3. Он использует приложение Microsoft Remote Desktop для подключения. Я вижу принтер Zebra в списке принтеров. Когда мое приложение печатает в драйвере принтера, спул Mac говорит "Невозможно преобразовать файл PostScript". Это "нормально", так как я отправляю необработанный текст на принтер.
Затем я попытался добавить принтер Raw в MacOS, но он не отображается в удаленном рабочем столе.
Что я должен делать?
1 ответ
В OSX нет такого понятия, как универсальный текстовый принтер.
OSX внутренне рассматривает КАЖДЫЙ принтер как постскриптум на уровне ОС. Затем преобразует вывод 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 - это обычное имя очереди, используемое внутри LAN-интерфейсами Zebra. Если Zebra не использует сетевой интерфейс Zebra, а другой бренд, вам обычно нужно использовать "auto" или "text" для параметра -P. Обратитесь к руководству.
РЕДАКТИРОВАТЬ добавлено после некоторого исследования
В OSX вы можете создать так называемую очередь печати "RAW", используя инструмент командной строки lpadmin или веб-интерфейс CUPS по адресу http://localhost:631/.
Однако такие принтеры RAW не отображаются как обычные принтеры в OSX, потому что приложения OSX GUI абсолютно нуждаются в принтере для PostScript. Для принтеров не-Postscript CUPS предоставляет конвертер Postscript, который переводит Postscript в то, что понимает принтер не-Postscript.
Для принтера RAW такое преобразование в Postscript невозможно, поэтому принтеры RAW не предлагаются приложениям с графическим интерфейсом OSX в качестве допустимых устройств печати. (Их можно использовать с инструментами печати командной строки, такими как lpq, lpr и т. Д.)
И именно поэтому НИКАКОЙ клиент RDP на OSX не передает их! Они просто пересылают обычные принтеры.
(Технически нет причины, по которой клиент RDP не мог бы представить принтер RAW (с использованием старой школы Unix lpr/lpq) поверх RDP в качестве принтера "Общий / Только текст" для Windows. Но для этого потребовалось бы дополнительное программирование. это происходит. И учитывая, что это конкретное использование - очень маленькая ниша, я не буду видеть, чтобы это произошло в ближайшее время.)
Насколько я могу судить, ваш единственный обходной путь - тот, который я уже упоминал. Предоставьте файл пользователю и попросите его распечатать его локально, используя lpr.
К принтеру подключен USB, но это не проблема. Используя веб-интерфейс CUPS, вы можете настроить USB-принтер как очередь печати. Часть этой веб-страницы Добавьте необработанную очередь печати, вам нужно только шаги с 3 по 7, объясняющие, как это сделать. Он даже использует Зебру в качестве примера.
Я думаю, что нашел ответ.
Вы должны загрузить это приложение: https://www.peninsula-group.com/labeller-thermal-labelling-software/
Вы запускаете демо-версию и устанавливаете с нее принтер.
После этого вы меняете драйвер с вашей начальной зебры на новый драйвер (9.1.14 от peninsula-group.com)
С наилучшими пожеланиями