В очереди печати Linux, настроенной для совместной работы с Ghostscript, присутствует фильтр печати, который распознает тип файла. В отличие от фильтра, который используется в очереди, обслуживающей PostScript-принтер, данный фильтр передает данные на вход программы Ghostscript. В этом случае необходимо использовать инструментальные средства настройки принтеров, поставляемые в составе дистрибутивного пакета, а также следовать инструкциям по установке конфигурации фильтра. Настроенная подобным образом очередь работает почти идентично очереди PostScript-принтера (вопросы выбора конфигурации Samba и клиентов для такой очереди рассматривались в предыдущем разделе). Для Windows-клиентов надо выбрать универсальный PostScript-драйвер (для лазерных принтеров хорошо подходят драйверы Apple LaserWriter, а для струйных — драйвер QMS magicolor). Проблема, связанная с появлением в составе задания на печать символа
Некоторые PostScript-драйверы в системе Windows включают в состав PostScript-файлов дополнительные команды, предназначенные для вывода информации на встроенные дисплеи принтеров. Такие команды часто приводят к появлению дополнительных страниц выходных данных с сообщениями типа %% [ LastPage ] %%
. Если вы встретитесь с подобной проблемой, решить ее можно, сменив драйвер в системе Windows. Существует и другое решение. Вам надо найти файл, из которого вызывается интерпретатор Ghostscript, и добавить в строку, содержащую команду gs
, последовательность символов >/dev/null
. В результате сообщения с используемого в обычных условиях выходного устройства Ghostscript будут перенаправлены в файл /dev/null
. В системе Caldera таким файлом является /var/spool/lpd/
. В Red Hat, Mandrake и TurboLinux используется файл /usr/lib/rhs/rhs-printfilters/ps-to-printer.fpi
.
Если вы хотите использовать на клиентской машине драйвер, генерирующий информацию в формате, отличном от PostScript, вам надо создать в системе Linux очередь принтера, в которой не предпринимались бы попытки модифицировать данные, переданные на печать. Некоторые фильтры Linux распознают ряд языков и передают соответствующие данные принтеру в неизменном виде, поэтому не исключено, что вам удастся использовать обычную очередь печати. Если же задания, помещенные в такую очередь, исчезают или выводятся в искаженном виде, вам придется создать очередь без обработки (raw queue).
Для создания очереди без обработки надо сформировать обычную очередь печати, а затем внести изменения в файл /etc/printcap
(при условии, что на вашем компьютере используется система печати BSD или LPRng). В частности, вам надо удалить из описания очереди строку if=
либо задать пустое значение if
. Эта строка определяет фильтр печати Linux, и ее удаление приведет к тому, что задание будет передаваться из очереди на принтер в неизменном виде. Пример описания очереди приведен ниже.
lр|hp4000|raw:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:sh:\
:if=:
В данном примере указаны три имени принтера: lp
, hp4000
и raw
. Данные из этой очереди выводятся на устройство печати /dev/lp0
, а в качестве каталога спулера используется /var/spool/lpd/lp
. (Заметьте, что указанный здесь каталог отличается от каталога спулера Samba. Файл сначала располагается в каталоге спулера Samba, а затем перемещается в /var/spool/lpd/lp
.) Опция mx#0
снимает ограничения на размер файла печати, a sh
запрещает вывод страницы заголовка. Поскольку в строке if=
не указан фильтр печати, данные передаются в неизменном виде.
Определяя разделяемый объект принтера для очереди без обработки, необходимо убедиться, что параметр postscript
отсутствует. Если же этот параметр указан, для него должно быть установлено значение No
. Идентификатор PostScript в составе задания на печать скорее всего нарушит работу принтера, не поддерживающего данный язык.