Драйвер MacOS для принтера Canon LaserJet LBP-1120

Как печатать на принтере, для которого нет драйвера под MacOS?
По случаю я дешево купил лазерный принтер Canon LaserJet LBP-1120.
Для него нет драйверов под последние версии MacOS. Но есть драйвера под Windows XP.
Решение напрашивается. Установим принтер в виртуальной машине Windows, используя имеющиеся Windows-драйвера. Также установим в Windows виртуальный принтер, который умеет документ PostScript отправить на настоящий принтер. А в MacOS установим Generic PostScript Printer, который отправляет на принтер PostScript. И направим его на виртуальный принтер в виртуальной Windows.
Такая вот двойная виртуализация. Но давно известно, что для автоматизации работы на пару часов, любой программист не задумываясь потратит пару дней. Потому что так он избежит двухчасовой работы и получит два дня на развлечения 8-)
Итого, наш план:
- Ставим виртуальный Windows на MacOS (уверен, в будущем вы найдете ему и иные применения)
- Настраиваем в Windows физический принтер с настоящим драйвером от Canon
- Настраиваем в Windows виртуальный принтер, который PostScript документ отправит на физический принтер
- Настраиваем в MacOS удаленный принтер с драйвером Generic PostScript Printer, направленным на виртуальный принтер Windows
Виртуальный Windows на MacOS
Нам нужна виртуальная машина и дистрибутив Windows.
Виртуальная машина
Я использую Oracle Virtual Box. Нам нужен дистрибутив
OS X hosts.
Ставится легко и не требует специальной настройки.
Установка Windows XP
Microsoft все еще хочет денег за Windows XP, но регистрировать ее не обязательно - она всего лишь будет вам напоминать о необходимости это сделать.
Так что я советую не ковыряться в заполненных вирусами пиратских развалах, а одеть белые штаны
и скачать дистрибутив с сайта microsoft. Я использовал
эту ссылку но Microsoft
славится тем, что ссылки на ее сайте работают недолго. Если ссылка не работает - не паникуйте,
поищите Windows XP Mode в Microsoft Download Center.
Чтобы не тратить время на инсталляцию Windows, я советую вам использовать следующий трюк.
- Установите в MacOS The Unarchiver.
- С его помощью распаковать скачанный вами архив
Windows XP Mode. - Затем долнительно распаковать файл
xpmв распакованном каталогеsources/xpminstl64. У него нет расширения, так что явно выберите для негоOpen With..->other...->The Unarchiver.app. - В распакованном каталоге надо сделать еще одно магическое действие. Файл
VirtualXPVHDпереименуйте вVirtualXP.VHD. Подтвердив MacOS, что вы осознаете все возможные ужасные последствия столь смелого действия.
В результате этого трюка мы получаем готовый диск для Oracle Virtual Box с уже установленной Windows XP.
Теперь мы создаем новую виртуальную машину в Oracle Virtual Box - нажимаем на синюю иконку new:

Выбираем тип Windows XP 32bit. Билл Гейтс обещал, что всем хватит 640Кб, но я все же рекомендую выбрать примерно в восемьсот раз больше - 512Мб.
Выберите Use an existing virtual hard disk file. Нажмите на пиктограмку справа с папочкой и
зеленой стрелкой.

В открывшемся далее окне нажмите на иконку Add с зеленым плюсиком и выберите
с таким трудом извлеченный VirtualXP.VHD.

Настройте Video Memory 128MB для этой машины.
При ее старте там уже будет установленная Windows XP.
Как нажать правую кнопку мыши (часто необходимая оперция в Windows)
Нажмите Shift+Cmd и удерживая их кликните кнопкой мыши.
VirtualBox Guest Additions
Для корректной работы мышки, буфера обмена и прочего вам надо установить
Oracle's Guest Additions в нашу виртуальную Windows (Guest Windows как это называет Oracle).
Выберите в меню Devices Oracle VM VirtualBox пункт Insert Guest Additions CD Image.
Это подключит виртуальный лазерный диск Guest Additions ISO к нашей виртуальной Windows.
И далее Windows автоматически запустит с него инсталлятор Guest Additions который и установит
Guest Additions.

Физический принтер Windows
Его ставите самым стандартным для Windows образом - кнопка в левом нижнем углу Start ->
Printers and Faxes -> в вертикальном меню слева Add a printer. Драйвер используем для вашего
принтера.
Тестовую страницу советую распечатать, чтобы точно знать, что у нас все правильно установилось.
Внимание - имя у принтера не должно включать пробелов и других спец-символов. Это существенно упростит настройку виртуального принтера.
Свой я назвал canon.
Виртуальный принтер Windows
GhostScript
Чтобы разобрать PostScript файлы, которые нам будет присылать MacOS, мы будем использовать бесплатный пакет GhostScript.
Последняя версия у меня не заработала в Windows XP, поэтому я скачивал версию
9.50 - файл
ghostpcl-9.50-win32.zip.
Распакуйте его и запустите инсталлятор в Windows.
Внимание для упрощения настройки укажите каталог для установки C:\gs.
Параметры командной строки GhostScript
Чтобы далее при настройке виртуального принтера не писать длиннющую командную строку, давайте положим все в файлик.
В каталоге C:\gs создайте файлик с именем попроще и любыи расширением - в моем случае
canon.rsp. Например, с помощью Notepad.
В файлике должно быть:
-IC:\gs\lib;C:\gs\Resource\Font
-sDEVICE=mswinpr2
-dNOPAUSE
-dSAFER
-sPAPERSIZE=a4
-sOutputFile="%printer%canon"
В последней строке после %printer% должно быть имя вашего физического принтера.
RedMon
Чтобы перехватывать отправляемые на печать файлы PostScript мы будем использовать
RedMon. Я устанавливал версию 1.9.
Распакуйте архив и запустите инсталлятор в Windows.
Настройка виртуального принтера
Нам надо настроить обеспечиваемое RedMon перенаправление так, чтобы расшифрованный PostScript отправлялся на настоящий принтер.
Создаем виртуальный принтер. Start -> Printers and Faxes -> Add a printer.
В мастере настройки выбираем локальный принтер, отключаем
Automatically detect.. чтобы зря не ждать, пока оно ничего не найдет.
На следующем шаге мастера переключаемся на Create a new port и выбираем тип Redirected port.

В качестве драйвера я выбрал Apple LaserWriter.

Не забудьте расшарить этот принтер (Printer Sharing):

Завершаем создание, не надо делать его принтером по умолчанию и не надо печатать тестовую страницу.
Теперь открываем Properties свежесозданного принтера, и для выбранного Redirected port
настраиваем командную строку C:\gs\bin\gswin32c.exe. Обратите внимание на c в имени.
Аргументы должны указывать на созданный нами выше файлик: @C:\gs\canon.rsp -. Обратите
внимание, что в конце пробел и тире.
В Output выбираем Copy temporary file to printer. В printer выбираем наш физический принтер.
Сохраняем кнопкой Ok.

Я назвал принтер canonrd.
Вот теперь стоит напечатать на этом виртуальном принтере тестовую страницу, чтобы убедится,
что у нас все корректно работает - клик правой кнопкой мыши на принтере Properties -> General
-> Print Test Page.
Удаленный Windows принтер в MacOS
Стандатным образом устанавливаем принтер. System preferences -> Printers & Scanners
Нажимаем плюсик внизу списка принтеров.
Выбираем вверху Windows, в появившемся списке сеток Windows выбираете нужную сеть, в ней наш
виртуальный компьютер с Windows, и там должел появиться список принтеров. Выбираете виртуальный
принтер (тот что мы выше назвали canonrd). Драйвер должен выбраться по умолчанию,
Generic PostScript Printer.

Все - мы можем из MacOS печатать на нашем принтере. Надо только не забывать запускать виртуальную машину с Windows. Благо она стартует за полсекунды. И можно автоматизировать ее запуск с помощью Alfred, указав командную строку
VirtualBoxVM --startvm "<your virtual machine name>"