Позвольте мне объяснить мое обычное размещение. У меня есть клиенты на Windows, у которых есть принтеры Zebra.

Мы устанавливаем локально этот принтер, используя драйверы универсального / текстового принтера.

Они подключаются через удаленный рабочий стол к моему серверу Windows 2008. Мое приложение отправляет необработанный код ZPL II (текст) в драйвер принтера, и все работает.

Теперь у меня есть клиент на MacOSX Yosemite 10.10.3. Он использует приложение Microsoft Remote Desktop для подключения. Я вижу принтер Zebra в списке принтеров. Когда мое приложение печатает в драйвере принтера, спул Mac говорит "Невозможно преобразовать файл PostScript". Это "нормально", так как я отправляю необработанный текст на принтер.

Невозможно конвертировать файл PostScript

Затем я попытался добавить принтер Raw в MacOS, но он не отображается в удаленном рабочем столе.

Что я должен делать?

1 ответ1

2

В OSX нет такого понятия, как универсальный текстовый принтер.
OSX внутренне рассматривает КАЖДЫЙ принтер как постскриптум на уровне ОС. Затем преобразует вывод PostScript на любой язык, который нужен принтеру (в вашем случае - ZPLII).

Таким образом, приложение для удаленного рабочего стола видит принтер "postscript" в OSX и передает его на ваш сервер Windows. (Windows обычно видит его как "устройство MS ImageSetter", которое является обычным принтером Postscript.)

Ваше приложение игнорирует это и в любом случае передает RAW ZPLII на Mac, но Mac ожидал получить Postscript и, следовательно, ваше сообщение об ошибке, когда пытается интерпретировать файл Postscript (который на самом деле не Postscript, но ZPLII).

Это противно, потому что у вас нет простого способа обойти это.

Если клиентский принтер является сетевым принтером (кажется, я помню, что модели GXxxxt имеют обычный сетевой интерфейс Zebra), вы можете предоставить клиенту необработанный файл 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 не использует интерфейс LAN Zebra, а другой бренд, вам обычно нужно использовать "auto" или "text" для параметра -P. Обратитесь к руководству.

РЕДАКТИРОВАТЬ добавлено после некоторых исследований
В OSX вы можете создать так называемую очередь печати "RAW", используя инструмент командной строки lpadmin или веб-интерфейс CUPS по адресу http://localhost:631.
Однако такие принтеры RAW не отображаются как обычные принтеры в OSX, потому что приложениям GUI OSX абсолютно необходим принтер для 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, объясняющие, как это сделать. Он даже использует Зебру в качестве примера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .