Печать с Android, macOS и iOS устройств на почти любом принтере

Вступление

В качестве устройства для уничтожения легких нашей планеты в семье уже несколько лет верой и правдой трудится недорогой лазерный принтер Ricoh SP212w и все в нем было бы хорошо, если бы не отсутствие драйверов под любые операционные системы, кроме Microsoft Windows. Раньше это как-то особо не напрягало, всегда можно было подойти к стационарному компьютеру и оформить печать с него. Но с приходом в нашу жизнь удаленной работы основным компьютером, подключенным к единственному монитору в семье, стал макбук.

Не то, чтобы переключаться каждый раз на компьютер с Windows было напряжно (а после настройки удаленного подключения и вообще перестало быть проблемой), однако чувство технического несовершенства не давало покоя. В какой-то момент мне надоело отвлекаться от работы на просьбы жены распечатать ту или иную квитанцию или раскраску ребёнку и начался поиск вариантов.

Надо сказать, что со временем в нашем жилище скопился зоопарк разнообразных устройств, представляющих все основные экосистемы:

  • Apple (в лице macOS, iOS)
  • Android
  • Windows
  • Linux

В идеале, решение должно было поддерживать все популярные платформы, однако приоритет отдавался iOS, потому что задания на печать в основном поступают от второй половины, пользующейся устройствами яблочной компании. Общеизвестно, что все надкусаны умеют работать с технологией AirPrint, которая, кстати, также поддерживается приложениями для печати на платформе Android. А после того, как великий и ужасный Google похоронил проект облачной печати, AirPrint и приложения от крупных производителей оргтехники стали чуть ли не единственным способом порчи бумаги на устройствах Android.

Поиски незамедлительно привели к примечательной Linux программе CUPS, предоставляющей сервис для печати с различных устройств. Если эту программу удастся настроить на работу с нашим локальным принтером, а также установить сервис Bonjour, который позволяет Apple устройствам находить друг друга в локальной сети, мы сможем печатать практически отовсюду.

Спустя какое-то время, после нескольких проб и ошибок был найден готовый докер-контейнер, который можно установить буквально одной командой и тут же получить работающее решение. Если принтер подключен к компьютеру кабелем, конейнер с CUPS должен быть установлен на этом компьютере, т.к. CUPS является посредником между принтером и устройствами, с которых требуется печатать.

В моем случае все было немного проще, потому что принтер изначально сетевой и подключается к другим устройствам через WiFi.

Устанавливаем контейнер

Чтобы запустить контейнер, я создал папку cups, в ней файл start.sh, а также папки services и config. В файл добавил команду для запуска контейнера:

1
2
3
4
5
6
docker run -d --name cups --restart unless-stopped  --net host\
  -v $PWD/services:/services \
  -v $PWD/config:/config \
  -e CUPSADMIN="user" \
  -e CUPSPASSWORD="password" \
  chuckcharlie/cups-avahi-airprint:latest

После чего перешел в папку cups запустил контейнер командой:

1
sh start.sh

Если все прошло успешно, по адресу http://[host ip]:631 должен быть доступен WEB интерфейс CUPS.

Нужно пройти на закладку Adminstration и ввести логин с паролем, которые были заданы при запуске контейнера. Теперь начинается самая рискованная часть нашего предприятия: установка драйвера принтера CUPS. Нажимаем кнопку Add Printer. Если у вас сетевой принтер, с большой вероятностью он отобразится в списке автоматически обнаруженных устройств, как это было у меня:

Если принтер автоматически не определился, можно попробовать добавить его через команду Add LPD/LPR Host or Printer. Выбирам эту опцию и в качестве строки соединения указываем IP адрес принтера с префиксом socket: socket://192.168.1.75

Pasted-image-20210305183925.png

Нажимаем Continue и на следующей странице указываем название нашего принтера. Важно установить галку Share this printer.

Pasted-image-20210305184244.png

На следующием экране следует выбрать производителя принтера. Я выбрал Ricoh и на следующем за ним экране выбора драйвера - первую попавшуюся модель, название которой было немного похоже на мою. После этого все заработало с первого раза, но, если ничего похожего в списке нет, можно попробовать выбрать Generic (который у меня тоже замечательно работает):

Pasted-image-20210305184813.png

Нажимаем Add Printer и от балды выбираем Generic PCL 4 LF Printer.

Pasted-image-20210305185124.png

На следующей странице изменяем Media Size на A4, все остальное можно оставить по-умолчанию и нажимаем кнопку Set Default Options:

Pasted-image-20210305185351.png

После сохранения параметров по умолчанию мы окажемся на странице управления принтером:

Pasted-image-20210305201809.png

Теперь волнительный момент: в левом выпадающем списке вместо Maintenance выбираем Print Test Page. Если все сделали правильно, принтер должен плюнуть в нас тестовой страницей.

К сожалению, у меня нет принтера, физически подключенного к компьютеру, поэтому описать алгоритм подключения такого принтера я не могу, также как нет и любых цветных струйных принтеров. Хотя если производитель вашей железки предоставляет драйверы для Linux, тогда проблем с настройкой CUPS точно не возникнет.

Печать на устройствах Apple

Здесь все максимально просто, на айфонах и айпэдах просто отправляем на печать нужную нам страницу и в списке устройств для печати должен волшебным образом появиться наш принтер.

На macOS нужно зайти в настройки принтеров и нажать кнопку “+”. Появится окошко, в котором следует выбрать принтер и нажать кнопку Add. У меня установлено два одинаковых принтера для целей написания этой заметки. На картинке @mqtt - это имя linux машины, на которой крутится контейнер с CUPS.

Pasted-image-20210305190237.png

Печать на устройствах Android

На современных Андроид-устройствах принтеры, доступные через AirPrint, также автоматически определяются в диалоге печати и могут быть использованы без предварительных ласок настроек:

Pasted image 20210305191001.png

Если же встроенного сервиса печати на устройстве нет или он не обнаруживает принтер, можно воспользоваться одним и приложений в Play Store, например, PrinterShare.

updatedupdated2021-03-122021-03-12
Our coments are powered by remark42, self-hosted, privacy-focused open source comment engine, which doesn't spy on users.

Since we know nothing about you, consider subscribing to the comments' Telegram channel to keep track of comments on this site.