printable = Yes
Параметр comment задает комментарии для разделяемого объекта LASER. (Этот параметр также может быть использован в разделяемых объектах файлов.) Данное описание можно применять только в том случае, если в системе имеется локальная очередь печати с именем laser. Если имя очереди отличается от имени разделяемого объекта, то надо указать его с помощью параметра name. Так, например, параметр name = lр сообщает системе о том, что необходимо использовать локальную очередь с именем lр.
В различных дистрибутивных пакетах Linux используются разные системы печати. В настоящее время чаще всего применяется система BSD, но системы LPRng и CUPS (Common Unix Printing System — общая система печати UNIX) также приобретают популярность. Разные системы печати отличаются друг от друга синтаксическими правилами, что необходимо учитывать при настройке Samba. Для этой цели предусмотрен параметр printing, который позволяет задавать систему печати вашего компьютера. Этот параметр чаще всего принимает значения BSD, LPRng или CUPS (другие значения в системе Linux задаются крайне редко). Если пакет Samba входит в состав дистрибутивного пакета Linux, то, вероятнее всего, он уже сконфигурирован для работы с соответствующей системой печати. Если в вашей версии Linux используется устаревшая система печати, вы можете применить параметр print command, который позволяет согласовать команды печати, используемые Samba с вашей системой. При этом переменной %s присваивается имя файла, указанное в задании на печать. После передачи файла системе печати его следует удалить. Параметр print command обеспечивает дополнительную степень гибкости и позволяет использовать Samba для решения специфических задач.
Выше в этой главе рассматривался вопрос создания разделяемого объекта файлов, обеспечивающего доступ всех пользователей к своим рабочим каталогам. Точно так же при работе с разделяемыми объектами принтеров вы можете создать один объект, обеспечивающий доступ ко всем принтерам, присутствующим в системе. Этот объект имеет имя [printers]. При наличии объекта с таким именем Samba просматривает содержимое файла /etc/printcap и для каждого принтера создает свой разделяемый объект. Подобно объекту [homes], объект [printers] обычно содержит параметр browseable = No, в результате чего разделяемый объект PRINTERS не отображается клиент-программами Windows. Если для этого параметра установлено значение Yes, в списке просмотра будут отображаться конкретные имена принтеров.
Совместное использование PostScript-принтеров
В ходе предыдущего обсуждения не затрагивался вопрос об использовании драйверов. Этот вопрос чрезвычайно важен для разделения принтеров в системе Samba; драйверы принтеров часто становятся источником проблем. В системе Windows драйверы принтеров взаимодействуют с прикладными программами и генерируют данные, совместимые с конкретной моделью принтера. Таким образом, формат файла, который приходит разделяемому объекту печати, расположенному на сервере Samba, зависит от того, какой драйвер принтера был установлен на клиентской машине. В отличие от Windows, в системе Linux обычно используются очереди печати, которые настраиваются для приема данных в формате PostScript. В зависимости от типа принтера, подключенного к компьютеру, данные могут передаваться ему в неизменном виде либо обрабатываться фильтром печати. Фильтр печати преобразует PostScript-код в формат, подходящий для данного принтера. Различия в моделях печати иногда приводят к возникновению конфликтов. Если клиент Windows предоставляет серверу Samba файл в формате, отличном от PostScript, информация, предназначенная для вывода на печать, может быть искажена. Возможна также ситуация, когда данные, сгенерированные PostScript-драйвером Windows, воспринимаются на сервере Samba как информация, представленная в другом формате. В этом случае при выводе на печать также будут получены некорректные результаты. Существует ряд правил и параметров Samba, которые позволяют разрешить данную проблему, но необходимо испробовать различные средства, чтобы найти наиболее подходящие из них.
Наиболее просто конфигурация Samba устанавливается в том случае, если разделяемый принтер поддерживает язык PostScript. В этом случае PostScript-код может быть непосредственно передан на устройство печати. Однако поддержка PostScript обычно реализуется в высокоуровневых лазерных принтерах и некоторых устройствах печати среднего уровня. Низкоуровневые лазерные принтеры и струйные принтеры, поддерживающие PostScript, встречаются крайне редко. Для того чтобы выяснить, может ли ваш принтер обрабатывать PostScript-код, необходимо ознакомиться с документацией на это устройство.
Некоторые принтеры объявляются в системе как устройства, поддерживающие PostScript, однако данное свойство принтера эмулируется с помощью интерпретатора, выполняющегося в системе Windows. При организации совместного доступа к подобным принтерам они должны рассматриваться как устройства печати, не поддерживающие PostScript. Это могут быть высококачественные принтеры, но без эмулятора они не способны обрабатывать PostScript-код.
Язык PostScript и соответствующий интерпретатор были первоначально разработаны компанией Adobe (http://www.adobe.com). Многие компании, занимающиеся выпуском принтеров, также разработали свои версии интерпретаторов PostScript для включения в состав устройств печати. Так, поддержка PostScript реализована во многих принтерах Hewlett Packard и Lexmark. Первые интерпретаторы PostScript были далеки от совершенства, но присущие им ошибки были исправлены в более поздних версиях. В настоящее время при установке конфигурации Samba совершенно не важно, поддерживает ли ваш принтер версию PostScript, разработанную Adobe, или в нем используется один из интерпретаторов, выпущенных другими компаниями.
Если ваш принтер непосредственно поддерживает PostScript, вы можете установить PostScript-драйвер в системе Windows. Такие драйверы входят в поставку операционной системы, а также распространяются производителями принтеров. (Компания Adobe также предоставляет драйверы PostScript, но они предназначены для принтеров, в которых используется PostScript-интерпретатор, разработанный Adobe.) Этот драйвер генерирует данные в формате PostScript, которые Samba передает в очередь на устройство печати; затем данные приходят на конкретный принтер. В большинстве случаев информация корректно выводится на печать.
Иногда при использовании описанной конфигурации возникают проблемы, которые чаще всего связаны с тем, что PostScript-драйвер, установленный в системе Windows, предваряет вывод данных символом <Ctrl+D>. Большинство PostScript-принтеров игнорирует этот символ, но он может влиять на поведение очереди в системе Linux. Фильтр печати ожидает встретить в начале файла, содержащего задание на печать, идентификатор формата PostScript. Обнаружив символ <Ctrl+D>, фильтр печати интерпретирует его как признак того, что в файле содержится ASCII-текст. Поскольку ASCII-текст не может быть непосредственно передан на PostScript-принтер, этот файл повторно преобразуется в PostScript-формат. В результате вместо текста документа на принтер выводится его PostScript-код. Разрешить эту проблему можно двумя способами.
Рис. 7.4. Если наличие <Ctrl+D> приводит к возникновению проблем при выводе документа на принтер в системе Linux, вы можете запретить генерацию этого символа
Вы можете отключить опцию драйвера печати Windows, которая управляет выводом символа <Ctrl+D>. Эту опцию можно найти в диалоговом окне Properties принтера либо в окне, которое отображается после щелчка на кнопке Advanced в этом же окне необходимо сбросить флажок опции Send CTRL+D Before Job. (Опция Send CTRL+D After Job обычно не приводит к возникновению проблем.) Такое решение хорошо подходит в том случае, если вы используете одну очередь для обслуживания PostScript-принтеров и устройств печати, поддерживающих другие языки описания документов. Недостаток подобного подхода состоит в том, что для настройки многочисленных Windows-клиентов придется затратить много времени.