Pull to refresh

Возможности работы с PRN на примере MS Windows и Mac OS X

Многие люди, которым приходится работать с различного рода принтерами и МФУ, часто сталкиваются с тем, что для решения той или иной задачи требуется просто распечатать документ на похожем или, аналогичном проблемному, принтере.

В качестве реального примера:
В Вашей организации есть филиал в Москве и, допустим, в Екатеринбурге. В обоих офисах имеются аналогичные принтеры. И в один прекрасный день, к Вам обращаются из другого офиса с проблемой при печати на этом самом принтере. Разумеется, любой человек, как-либо связанный с миром IT, первым делом посоветует переустановить драйвера или, например, проверить не зажевало ли где бумагу и точно ли вставлен сетевой провод в разъем аппарата.
Это безусловно важные советы, поскольку исходя из собственной практики 80% проблем решаются именно так. Но бывают ситуации хуже, когда речь идет, например, о каком-то конкретном документе.
Тогда начинаются запросы самого файла, скриншоты окон драйвера, логи системы и много-много прочего. Но и это не всегда срабатывает, поскольку даже самый внимательный человек может что-то пропустить или ошибиться.
Чтобы не делать лишних телодвижений, если на Вашем принтере все хорошо, а на удаленном нет, Вы можете запросить так называемый «PRN-файл» или, говоря проще, print-to-file. Смысл этой возможности в том, что Вам присылают не просто документ, а документ, который был уже сформирован и обработан драйвером. После этого, достаточно отправить его на печать на аналогичное устройство, и исходя из результата, будет ясно, проблема в драйвере, или в самом устройстве.

От теории к действию:

Для Windows машин эта функция реализована изначально, и нам почти не надо изобретать велосипед:
Просто заходим в тот редактор какое-либо ПО, с возможностью печати, выбираем Файл -> Печать и ставим флажок «Печать в файл». После этого останется только указать путь и вуаля.

Для того же, чтобы нам его распечатать, потребуется любой принтер в системе, порт которого бы физически совпадал с принтером, на который мы хотим его отправить. Далее просто «расшариваем» его, допустим, с названием «test», открывает консоль:

net use lpt1 \\%computer_name\test #Создаем виртуальный lpt-порт, и ассоциируем его с расшареным принтером
copy /b c:\%path_to_file% lpt1 #Отправляем наш prn на виртуальный порт

Таким образом это работает в Windows.

Но, некоторое время назад, я столкнулся с надобностью создать prn на машине с Mac OS. Ситуация в этом случае была намного более проблемная, поскольку «из коробки» в Mac OS это не предусмотрено. Но ведь это не проблема? Путем поиска и ковыряния, решение нашлось:

Открываем консоль (Программы → Служебные программы → Терминал)
Меняем пользователя на root-а:

$ sudo bash

Создаем бэкенд:

# nano /usr/libexec/cups/backend/file

Записываем туда:

#!/bin/bash
cat >> /tmp/foo

Сохраняем документ с помощью Ctrl+X.
Далее даем права на бэкенд:

# chmod 755 /usr/libexec/cups/backend/file

Останавливаем службу CUPS:

# launchctl stop org.cups.cupsd

Открываем на редактирование файл:

# nano /etc/cups/printers.conf

В низ данного файла дописываем следующее:

Info testprinter
Location
MakeModel testprinter
DeviceURI file:/tmp/test.prn
State Idle
StateTime 1289988411
Type 36868
Product ( testprinter)
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer


Вновь используем Ctrl+X для сохранения.

Далее открываем следующий файл:

# nano /private/etc/cups/cupsd.conf

После строки:

DefaultAuthType Basic

Дописать:

FileDevice Yes

Запускаем службу CUPS:

# launchctl start org.cups.cupsd

Проверяем:

# lpstat -p testprinter

Должны получить вывод, вроде следующего:

printer testprinter is idle. enabled since Wed Nov 17 13:06:51 2010

Заходим на web-страницу CUPS — 127.0.0.1:631

Переходим в меню “Принтеры”;
Выбираем в списке созданный нами принтер “testprinter”;
В следующем окне, из раскрывающего списка “Администрирование”, выбираем “Изменить принтер”;
Проходим по всем шагам ничего не меняя, до шага с запросом драйвера для принтера;
Выбираем нужный для тестирования драйвер;
Завершаем операцию установки.

После этого, отправив на печать что-либо на принтер testprinter, сформируется файл, по пути /tmp/test.prn

Отправка на печать производится командой:

# lp -d %real_printer_name% /tmp/test.prn

Надеюсь данная информация поможет кому-то быстрее и с меньшими затратами решать проблемы в работе принтеров.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.