Это неизящное решение основано на источнике
http://www.nixp.ru/articles/%D0%A0%D0%B5%D1%86%D0%B5%D0%BF%D1%82-%D0%BF%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-Win-%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8-%D0%B8%D0%B7-Linux.html. За давностью лет его потребовалось немного поправить.
Что потребовалось - у меня и так был серверок, который держит на себе owcloud, бэкапы, принтер Canon LBP1120. В этом же блоке (тумба под телевизор) стоит Самсунг МФУ и вот теперь Ricoh (кэнон штатно печатает на "черновой бумаге" соотв. черновые тексты - на неиспользованную сторону бумаги, ему лет 10, но он все не ломается, Самсунг как МФУ и быстрый ч\б лазерный двусторонний принтер и сканер с автоподачей, ricoh как цветной лазерный двусторонний принтер). Кэнон не сетевой, юсб. Т.е. сервер и так есть. Для работы с цветным дешевым Ricoh подняли WinXP в виртуалке. Разрешили этой виртуалке работать с юсб Canon и Ricoh. Сетевое подключение виртуальной машины назначили как Мост. Выделили фиксированный ip.
Как поднимали Ricoh - подключили, скормили штаные виндовые дрова. Проверили печать из виндов - работает.
Затем скачали
http://downloads.ghostscript.com/public/gs907w32.exe, а также
http://pages.cs.wisc.edu/~ghost/gsview/download/redmon19.zip. Это просто архивы. Распаковали их на диск C:\ видновой машины.
Создаем в Windowsх файлик mswinpr.rsp, сохраняем его хоть на корень С
-IC:\Путь_распаковался_gs907w32.exe_до_директория_lib\lib
-sDEVICE=mswinpr2
-dNOPAUSE
-dSAFER
-sPAPERSIZE=a4
-sOutputFile="%printer%Имя созданного в Windowsх принтера"
ВАЖНО -
1.в файле всего 6 строк. Редактированию подлежит 1 и 6 строка. Можно и нужно сделать НЕ СОДЕРЖАЩИМ пробелов. Т.е. любым.
2. первая строка начинается не с L, не с i, а с заглавной i, т.е. I
На этом этапе хорошо бы понять, какой конкретно виртуальный принтер мы будем создавать, марка-модель. В моем случае цветной, лазерный, с автоматической двусторонней печатью. Поскольку в итоге он должен работать под Ubuntu, то надо, чтобы он и поддерживался убунтой. Для этого идем на Яндексмаркет и смотрим там современные принтеры, удовлетворяющие заданным характеристикам, поддержку PostScript. Обычно хорошая поддержка под Линуксом у Самсунга и HP. Подбираем понравившийся принтер и проверяем наличие для него дров в CUPS, скачиваем с сайта производителя дрова под винХР, ставим их под Windowsми (распаковываем).
Далее в Windowsх в паннель управления, принтеры, создать новый принтер, локальный принтер, скармливаем скачанные дрова, вариант драйвера (печати) выбираем PostScript, Доступный порт — любой, даем принтеру любое пригожее имя, сохраняем принтер. Тут же идем в его свойства (правой кнопкой мыши), Сведения, В поле Порт указываем RPT1: (Redirected Port), Нажимаем кнопку Параметры порта… и в появившемся окне диалога RPT1: Properties определяем:
В строке Redirect this port to the program: Обзор и ищем в Путь_распаковался_gs907w32.exe_до_директория_lib\bin\ файл gswin32c.exe. Именно gswin32c.exe, а не gswin32.exe!
В строке Arguments for this program are: задаем: @c:\mswinpr.rsp -. Здесь после @c:\mswinpr.rsp обязательно должен идти пробел, а за ним дефис! Иначе ваш реальный принтер распечатает страниц 30 мусора. Ранее файл c:\mswinpr.rsp уже должен быть создан - путь к нему указываем полный, он не должен содержать пробелов, выше писалось, что у меня он просто на С
В строке Output: выбираем: Copy temporary file to printer.
В строке Printer: выбираем свой Windows-принтер (на который будет перенаправлена печать): Имя созданного в Windowsх принтера
В строке Run: выбираем: Hidden (отказываемся от дополнительных всплывающих окон при печати).
Дальше надо пошариться в параметрах принтера и добраться до установки параметров Очереди (путь долгий и запутанный, много вкладок перебрал), в появившемся окне диалога Параметры очереди устанавливаем Отключить двусторонний обмен данными. Остальные значения можно оставить без изменения (т.е. Начинать печать после помещения в очередь первой страницы; Формат данных в очереди — RAW).
Теперь в окне диалога Свойства: Нашего_пригожего_виртуального_принтера выбираем вкладку PostScript, где нажимаем кнопку Дополнительно…. В появившемся окне диалога Дополнительные параметры PostScript
Отправить Ctrl+D перед заданием=НЕТ
Отправить Ctrl+D после задания=НЕТ
Теперь в Windowsх указываем, что разрешается сетевой доступ к нашему_пригожему_виртуальному_принтеру.
Далее на линуксовых машинах ищем по ip этот пригожий самба-принтер и скармливаем купсу дрова выбранного нами через яндексмаркет принтера, вариант PostScript. Все. Теперь все работает - двустороння цветная лазерная печать. Если не жалко процессорных ресурсов серверка, то можно даже так - CUPS серверка подключить с самба-принтеру (пригожему), который на этом же серверке в виртуалке. Тогда на клиентских машинах вообще будет не надо думать о дровах и подключаться надо будет к сетевому ipp принтеру на серверке.
Забавно, конечно, что печатаю как-бы на самсунг, который через сеть постскриптом скармливает задание ricoh. Но работает.