Медиация Linux и GDI-принтера::Журнал СА 5.2008
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

ЭКСПЕРТНАЯ СЕССИЯ 2019


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 518
Комментарии: 1
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 645
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 509
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 413
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1001
Комментарии: 0
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Медиация Linux и GDI-принтера

Архив номеров / 2008 / Выпуск №5 (66) / Медиация Linux и GDI-принтера

Рубрика: Администрирование /  Оборудование

ПАВЕЛ ЗАКЛЯКОВ

Медиация Linux и GDI-принтера

На что только не идёт капитализм ради получения сверхприбыли. Так, производители GDI-принтеров реализуют свои упрощённые продукты массовым покупателям дешевле, ожидая, что последние не будут подключать свои принтеры к ОС Linux, а будут покупать лицензии на коммерческие ОС. Как видим, скупой платит дважды, поэтому лучше вообще не покупать дешёвые GDI-принтеры. Но что делать, когда это не скупость, а бедность? Тогда на помощь приходит наша изобретательность.

Обратился ко мне знакомый с просьбой помочь, настроить принтер в Linux. «Нашёл чем удивить», – подумал я. Положил в сумку ноутбук с Linux, сладенькое к чаю и поехал на выходных разбираться с проблемой. По приезду оказалось не всё так просто. Я думал, что в офисах должны жить сетевые принтеры, подключённые к локальной сети, а не к отдельному компьютеру. (Я даже домой подумывал себе такой прикупить, так как частенько раздражает совместное использование печатающего устройства вместе с родственниками, а покупать два принтера – расточительство.) Но, как выяснилось, я ошибался. У нас везде экономят и, если можно купить что-то подешевле, то жди подвоха. Новый принтер, который предстояло настроить для совместной печати в сети, оказался GDI-принтером, а большая часть не понимающих в технике сотрудников уже сроднилась с ОС Linux, из-под которой принтер упорно отказывался печатать.

Что такое медиация

Термин «медиация» относительно молодой и был заимствован из сферы бизнеса. Многие компании сталкиваются с тем, что годами не могут решить проблемы с конкурентами, а то и коллегами. Ни одна из фирм не намерена уступать другой, а повлиять на ситуацию никто не может, обе стороны недовольны и терпят убытки. «Демократический путь» – использовать судебную систему безнадёжно устарел, невыгоден, долог и редко оставляет в выгоде обе стороны.

Медиация – это когда обе стороны не отступают от своих принципов, а соглашаются идти на переговоры с привлечением нейтрального посредника – медиатора. Не вдаваясь в тонкости всего этого процесса, можно отметить, что на «западе» больше половины дел, разрешаемых через медиацию, оставляют довольными обе стороны.

В этой статье я постараюсь выступить в роли медиатора, решив проблему печати из под ОС Linux на GDI-принтеры.

GDI-принтеры

Немного теории. Любой принтер – это устройство, которое может наносить на бумагу или другой носитель (плёнка, компакт-диск и др.) изображение или текст. Принтеры бывают самые разные. Не секрет, что в кондитерском деле существуют пищевые принтеры фирмы Modecor со съедобными чернилами, которые могут печатать тексты и фотографии на вафельных или сахарных пластинах. Существуют принтеры, печатающие рекламные плакаты, наклейки в супермаркетах, заполняющие паспорта, билеты, платёжки и сберкнижки. В общем, «выбирайте на любой вкус и цвет». Чаще всего все эти принтеры подключаются к компьютеру, который подготавливает и отправляет информацию для печати. С этого момента и начинаются все тонкости.

Несмотря на то что за захват, перемещение носителя, нанесение изображения или перемещение печатающей головки отвечают различные механизмы, состоящие из роликов, моторчиков, шестерёнок и др., всеми этими частями управляет некоторое центральное устройство, которое мы назовём процессором или контроллером принтера. Пользователю всё равно, как эти части взаимодействуют между собой, ему важен результат. Поэтому с целью удобства и унификации принтеров их контроллеры должны понимать какой-либо язык описания команд, формирующих задание для печати. Подобных языков существует великое множество: ESC/P-последовательности, Postscript, PCL, HPGL, Lineprinter, Xerox XES/UDK и др. Наиболее распространёнными являются первые три. Они же практически всегда поддерживаются современными ОС. Большинство принтеров делают совместимыми с этими языками. Казалось бы, всё очень удобно и хорошо, но прогресс не стоит на месте.

Проблема перехода на новое была и раньше, вернёмся в 90-е годы прошлого века. У большинства были матричные принтеры, «знающие» только об ESC/P-последовательностях, а лазерные и струйные были уделом немногих в силу их высокой стоимости, но со временем ситуация начала меняться. Пользователи стали печатать всё больше графики. Разрешения, а значит и качество, документов росли.

В переходный момент появления языков Postscript и PCL для поддержания обратной совместимости со старыми программами многие лазерные и струйные принтеры умели эмулировать матричные принтеры, а некоторые умеют делать это и сейчас. С одной стороны, это хорошо и удобно всем, но, с другой, это означает дополнительные накладные расходы.

Например, если на лазерный принтер, эмулирующий матричный, отправить на печать слово «мама», то он должен получить меньше десятка байт (4 байта текста плюс несколько служебных) и напечатать слово. При этом принтер, получив 4 байта текста, должен найти «у себя» таблицу шрифтов и понять, как та или иная буква выглядит. То есть это дополнительная память и вычислительные ресурсы. Когда же мы печатаем изображение, например того же слова «мама», то оно целиком формируется на компьютере и посылается на принтер. С точки зрения пользователя разницы нет, картинка одинаковая в обоих случаях, но с точки зрения технологии и экономии есть.

Обратная совместимость сейчас не очень важна, а если изображение текста может формировать компьютер, то зачем держать аналогичный блок в принтере? Не проще ли сделать принтер без этого блока, будет наверняка надёжнее, т.к. меньше деталей и точно дешевле?

Так и поступили производители, создавая технологию GDI-принтера. GDI – это Graphic Device Interface – не что иное, как библиотека функций ОС Windows для осуществления вывода информации на графические периферийные устройства, такие как дисплеи или принтеры. Вместе с этой библиотекой в связке работает драйвер принтера.

Всё бы хорошо, только производители принтеров в погоне за дешевизной упустили из виду другие операционные системы, как ОС Linux, и забыли предоставить для них свои драйверы. Предполагаю, что тут не обошлось без влияния производителей Windows.

Так как специфический внутренний формат данных GDI-принтеров не был стандартизирован, то у каждого производителя принтеров он свой и каждому принтеру нужен свой драйвер. Даже в такой непростой ситуации драйверы под Linux не понадобились бы, если фирмы удосужились предоставить информацию о своих протоколах. Уверен, что десяток-другой энтузиастов решили бы проблему менее чем за неделю. Но протокол каждого производителя это «know-how» – запатентованная технология, поэтому они не спешат делиться информацией с Open Source-сообществом.

Вместе с тем, большинство пользователей не знакомы с тонкостями технологии печати и не задумываются о совместимости. Обидно, но именно они, массовые покупатели, не разбирающиеся в деталях, чаще всего определяют ход истории, развитие принтеров, операционных систем и многого другого, покупая то, что подешевле. Так и в моём случае – принтер покупали одни люди, а настраивать операционные системы пришлось мне. Большинству администраторов наверняка эта история покажется знакомой.

Медиация

Не всё так плохо, если бы не наша изобретательность!

Существуют две проблемы:

  • GDI-принтеры не совместимы с другими принтерами;
  •  Linux не имеет драйверов под большинство GDI-принтеров.

Один из путей решения – написать свой драйвер принтера. Подобные попытки для некоторых принтеров Canon, Lexmark, Samsung были реализованы в проектах [5-8]. Наиболее информативной и полезной статьёй по созданию собственного драйвера мне показалась статья [7]. Но как быть тем, кто не силён в программировании и его принтер не вошёл в «список счастливчиков» выше? Для них остаётся два пути: первый – проверить, возможно ли купить опциональный PCL или Postcript-аппаратный модуль у производителя принтера, т.е. сделать принтер совместимым. К сожалению, большая часть GDI-принтеров не имеет такой функции и принтер, рассматриваемый в статье (Sharp AR153), также не имеет. Поэтому мне и всем остальным, «невезучим» читателям придётся воспользоваться вторым путём – медиацией.

Как подружить GDI-принтер и Linux? Подобных решений много, например [9]. Важнее разобраться в том, что мы понимаем под словом «подружить». Вышеописанная статья не показалась мне интересной, так как не решает поставленной задачи. Подключить принтер к порту компьютера, получать данные по сети и отправлять их на порт принтера не предоставляется сложным.

Поэтому в качестве основы для медиации было выбрано решение, описанное в [2], где решается именно проблема печати из-под Linux. ОС Linux выступает в роли клиента, а медиатором оказались две программы: – Redirection Port Monitor [3] и Ghostscript [4], запускаемые на Windows.

Печать происходит по следующей схеме: компьютер под управлением ОС Linux отправляет документ в формате PostScript по сети на печать компьютеру с Windows. Программа RedMon перехватывает сообщение и отправляет его на вход программы Ghostscript, которая, используя штатный драйвер принтера под Windows, печатает сообщение от своего имени.

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

Настройка программ на стороне Windows

Для удобства разобьём процесс на две части: установку и настройку.

Установка

C адреса [3] переходим в раздел «Download» и скачиваем архив redmon17.zip, распаковываем и запускаем файл setup.exe. Программа установки RedMon «спрашивает», действительно ли мы хотим установить программу. Отвечаем ей: «Да». Установка проходит быстро, после чего выводится окно завершения процедуры установки.

С адреса [4] переходим в раздел «Windows» и скачиваем архив gs862w32.exe (в нашем случае использовалась 32-битная версия) и запускаем его. Скачанный файл – это самораспаковывающийся архив. Нажимаем кнопку «Setup», после чего на экране появляется небольшое окно, где бежит индикатор прогресса распаковки.

По завершению процесса распаковки появляется диалоговое окно с уточнениями, куда ставить программу и где создавать ярлыки (cм. рис. 1).

Рисунок 1. Диалоговое окно установки GPL Ghostscript

Рисунок 1. Диалоговое окно установки GPL Ghostscript

Оставляем указанные значения без изменений (т.е. программа будет установлена в директорию «C:\Program Files\gs») и нажимаем кнопку «Install». Появляется окно, отображающее log-файл процесса установки, после чего установка GPL Ghostscript завершена.

Настройка

Программы установлены, теперь необходимо их настроить. Создаём текстовый файл winprinter.rsp с помощью блокнота или + в Far. Сохраняя имя «winprinter.rsp» в блокноте, возьмите его в кавычки, иначе у вас получится «winprinter.rsp.txt».

-I"C:\Program Files\gs\gs8.62\lib";"C:\ProgramFiles\gs\gs8.62\fonts"

-sDEVICE=mswinpr2

-dNOPAUSE

-dSAFER

-sPAPERSIZE=a4

-sOutputFile="\\spool\SHARP AR-153E N"

Если у вас версия Ghostscript 8.62, и путь установки вы не меняли, то первую строчку править не нужно. В последней строчке «SHARP AR-153E N» – имя вашего GDI-принтера, скопированное из его свойств. Учтите, лучше скопировать и вставить, т.к. важно правильное написание с учётом пробелов и регистра. Если совершить ошибку, то это выльется в то, что программа Ghostscript каждый раз при печати будет выдавать окно и спрашивать: «На какой принтер печатать?».

Добавляем новый виртуальный принтер. Для этого нажимаем: «Пуск -> Настройка -> Принтеры -> Установка принтера». У вас запустится «Мастер установки принтеров», где нажимаем кнопку «Далее». В следующем окне выбираем «Локальный принтер», галочку «Автоматическое определение ...» снимаем (cм. рис. 2).

Рисунок 2. Выбор способа подключения принтера

Рисунок 2. Выбор способа подключения принтера

Нажимаем «Далее», в появившемся окне выбираем «Создать новый порт», в типе порта указываем «Redirection port» (cм. рис. 3).

Рисунок 3. Выбор порта подключения принтера

Нажимаем «Далее», появляется окошко с именем порта, где оставляем без изменений «RPT1:».

После переходим к окну выбора принтера. Предлагаю установить любой PostScript-принтер, например «HP LaserJet 6P/6MP PostScript», т.к. большинство Linux-дистрибутивов умеет беспроблемно с ними работать.

Замечание: наиболее ленивые пользователи могут найти какой-нибудь PostScript-принтер на букву «А», т.к. он будет в начале списка, я же предпочитаю проверенную модель HP.

Нажимаем «Далее», и в следующем окне придумываем имя нашему виртуальному принтеру. Имя может быть любым, но удобнее взять имя настоящего принтера, дописав к нему буквы PS, означающие, что этот (пусть и виртуальный) принтер может печатать в формате PostScript. В нашем примере имя будет «SHARP153PS». «Использовать этот принтер по умолчанию...» – выбираем «Нет», т.к. «по умолчанию» пусть используется настоящий принтер, а не виртуальный.

Нажимаем «Далее», после чего открываем общий доступ к виртуальному принтеру из сети и придумываем ему имя. Удобнее всего имя оставить тем же «SHARP153PS». Нажимаем «Далее», появляется окно с полями «Размещение» и «Комментарий». Заполните эти поля на ваше усмотрение и нажмите кнопку «Далее». Появляется окно с вопросом о печати пробной страницы. Отвечаем «Нет», т.к. наш виртуальный принтер ещё не настроен. Нажимаем «Далее». Появляется окно завершения работы мастера установки принтеров.

Нажимаем «Готово». В течение нескольких секунд копируются необходимые файлы.

После чего в списке принтеров («Пуск -> Настройка -> Принтеры») появится новый принтер, но он ещё не настроен. Для настройки мы нажимаем правой кнопкой мыши на значке принтера, после чего выскакивает меню, где мы выбираем пункт «Свойства».

В появившемся окне выбираем вкладку «Порты», где находим порт «RPT1:», после чего нажимаем кнопку «Настройка порта...».

Заполняем поля появившегося окна «RPT1: Properties». В поле «Redirect this port to the program» заносим имя программы «C:\Program Files\gs\gs8.62\bin\gswin32c.exe». Удобнее всего это сделать с помощью мыши и кнопки «Browse». Обратите внимание, что существуют два файла: gswin32c.exe и gswin32.exe. Нам нужен первый, т.к. он работает из командной строки. В поле «Arguments for this program are:» заносим имя созданного нами ранее файла «winprinter.rsp» c полным путём и необходимыми ключами:

@"C:\Program Files\gs\winprinter.rsp" –

Имя файла взято в кавычки, перед ним записана «собака», а после имени через пробел стоит дефис. Для «Output» выбираем «Copy temporary file to printer». В поле «Printer» выбираем настоящий принтер – «SHARP AR-153E N». В поле «Run» выбираем «Hidden». Shut down delay – оставляем значение 300 секунд. Ставим галочки «Print errors» и «Run as User». Заполнение завершено (cм. рис. 4).

Рисунок 4. Настройка параметров порта «RPT1:»

Рисунок 4. Настройка параметров порта «RPT1:»

Нажимаем «OК», чтобы сохранить введённые нами значения.

На этом этапе настройка «виртуального» принтера на стороне Windows завершена. Чтобы убедиться в правильности настроек, открываем любой текстовый документ или какое-нибудь приложение, откуда осуществляем печать на «виртуальный» принтер. Выскакивает стандартное окно настроек печати, где мы видим, что принтер подключён к порту RPT1: и его тип HP Laser Jet 6P/6MP PostScript (cм. рис. 5).

Рисунок 5. Проверяем правильность настройки печатью на виртуальный принтер

Рисунок 5. Проверяем правильность настройки печатью на виртуальный принтер

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

Настройка принтера в Linux

На предыдущем этапе мы убедились: в работоспособности нового виртуального принтера теперь осталось малое – настроить рабочие станции Linux и проверить печать с них.

Для этого нажимаем в меню «Система -> Администрирование -> Печать».

Далее, так как мы работаем в X от обычного пользователя, а настраивать принтеры привилегия администратора, дополнительным окном будет запрошен пароль root. Вводим пароль и нажимаем «OK».

В появившемся окне «Настройка принтера» нажимаем на значок «Новый принтер», после чего в следующем окне выбираем тип подключения «Windows Printer via SAMBA», а в поле адреса принтера указываем IP-адрес Windows-машины и после знака «/» сетевое имя виртуального принтера из наших прошлых настроек. В моём примере это будет «192.168.2.3/SHARP153PS». После заносим имя и пароль учетной записи, с которой мы будем подключаться к Windows-машине (cм. рис. 6).

Рисунок 6. Настройка адреса подключения для сетевого принтера в Linux

Рисунок 6. Настройка адреса подключения для сетевого принтера в Linux

Мы не рассматривали разграничение доступа и аутентификацию пользователей принтера на компьютере Windows, т.к. это другая тема, также в тестовой сети было всего два компьютера без подключения к Интернету. Поэтому я не использовал пароли, а в качестве имени был взят «Администратор».

Далее нажимаем кнопку «Проверить». В случае работы сети мы должны увидеть окно «Проверено».

После этого нажимаем кнопку «Далее» и выбираем принтер из базы данных. Фирма – HP.

Нажимаем «Далее», выбираем модель «Laserjet 6P/MP» и единственный драйвер «foomatic-db-ppds/HP/HP_Laserjet_6MP.ppd.gz».

Нажимаем кнопку «Далее» и заполняем название принтера – как он будет виден для приложений Linux. «Описание» и «размещение» заполняете по своему усмотрению (cм. рис. 7).

Рисунок 7. Выбор названия для принтера в Linux

Рисунок 7. Выбор названия для принтера в Linux

После чего нажимаем кнопку «Далее» и видим конечное окно установки принтера, где нажимаем «Применить».

Запускаем какое-нибудь приложение под Linux и проверяем печать. Если все настройки были выполнены правильно, то результат не заставит себя долго ждать.

Описанное решение было реализовано на операционных системах Windows 2000 и Linux Fedora 8.

Заключение

Предлагаемое решение проблемы должно работать для большинства GDI-принтеров. Надеюсь, что в будущем от данного решения и использования Windows-машины в качестве посредника можно будет отказаться, т.к. либо производители принтеров начнут уважать Linux-сообщество и будут выпускать драйверы под Linux, либо эмулятор wine сможет поддержать описанное решение на Linux, либо ваш принтер окажется в списке счастливчиков, для которых энтузиасты предложат альтернативный драйвер. Все три пути имеют шансы быть реализованными, посмотрим, что случится раньше.

Удачи!

  1. Медиация – http://www.gaap.ru/biblio/management/curp/059.asp.
  2. Рецепт «приготовления» Win-принтера для печати из Linux – http://www.nixp.ru/articles/win_printing_in_linux.
  3. RedMon – Redirection Port Monitor – http://pages.cs.wisc.edu/~ghost/redmon/index.htm.
  4. Ghostscript, Ghostview and GSview – http://pages.cs.wisc.edu/~ghost.
  5. CAPT – Linux driver for GDI printers (winprinters) – http://www.opennet.ru/prog/info/2601.shtml.
  6. CAPT Linux driver – http://www.boichat.ch/nicolas/capt/index.html.
  7. GDI printers under Linux – http://members.tripod.com/rpragana/gdiprinters.html.
  8. Установка GDI-принтера Lexmark Z23/33 в Debian – http://www.opennet.ru/base/sys/lexmark_print_install.txt.html.
  9. CUPS – принт-сервер и GDI-принтер – http://www.linuxcenter.ru/lib/articles/soft/cups_gdi.phtml.
  10. Теоретические основы печати в системе Windows – http://www.morepc.ru/net/print/windows_printing.html.
  11. Сайт, посвящённый вопросам печати под Linux – http://www.linuxprinting.org.

Комментарии
 
  25.10.2008 - 10:01 |  anonymous

windows можно держать под виртуальной машиной на unix-машине :)

  17.11.2009 - 02:03 |  Иван

RedMon error report
Помогите при печати выводит на печать вот это сообщенее! Хоть печатаешь с win хоть c linux! Помогите плиз!!
заранее спасибо!

  18.11.2009 - 06:02 |  The 13th Spirit

сними галочку "Prtint Errors"

мне помогло)

  19.11.2009 - 10:24 |  Павел

А вы
@"C:\Program Files\gs\winprinter.rsp" –
и собачку и минус набрали - всё правильно?

  25.11.2009 - 04:17 |  Виктор М.

Павел! Огромное спасибо Вам. Пользуясь Вашими инструкциями сразу же удалось заставить печатать Canon MF3228 из-под Ubuntu 9.04

  25.11.2009 - 08:02 |  Павел

Пожалуйста.

  05.03.2010 - 09:29 |  Денис

Документы все таки не печатаются

Вроде все сделал по инструкции, кроме 1 нюанса:

-I"C:\Program Files\gs\gs8.62\lib";"C:\ProgramFiles\gs\gs8.62\fonts" так вот у меня версия 8.71 и в ней в папке gs8.62 файла fonts нет, зато есть в папке gs8.62\doc -- может из-за этого, для чего нужен fonts?

Причем интересно что, если открыть одновременно очереди печати виртуального и реального принтера, то при отправки на печать прекрасно видно как сначала док попадает к виртуальному, потом к реальному, но никакой печати не происходит, а док просто через 1-1,5 секунды пропадает.. есть идеи?

  05.03.2010 - 09:40 |  Денис

Оказалось что виртульный принтер передат рельному всегда ноль страниц для печати... В чем может быть дело?

  05.03.2010 - 07:37 |  Владимир

Павел, спасибо.

Я уже несколько дней пытаюсь не мытьем так катанием заставить работать свой Canon LBP2900. Чего уже только не перепробовал. А тут подвернулась ваша статья. Не сразу, но у меня в итоге все получилось.

  06.03.2010 - 01:36 |  Павел

Скорее всего, в шрифтах и есть дело.
Предположу, что Ghostscript не имея шрифтов не может создать картинку для печати, вот она и получается нулевой.
> так вот у меня версия 8.71 и в ней в
> папке gs8.62 файла fonts нет
Версия одна, а папка другая. Конечно, название папки не играет роли, но так можно и запутаться.
> зато есть в папке gs8.62\doc
подправьте имя и вперёд
или папку fonts поперемещайте.

Если шаманство не поможет, то вопрос к вам, а оно критично использовать версию 8.71?
И откуда вы её взяли, тут
http://pages.cs.wisc.edu/~ghost/
я вижу только 8.64 released 2009-02-03

Может проще откатиться до 8.62-8.64 или той, где есть директория fonts?
Кстати, ради любопытства открыл архив файла gs862w32.exe и папка fonts там лежит на одном уровне с gs8.62, а не в ней.

Про шрифты RTFM
http://svn.ghostscript.com/ghostscript/trunk/gs/doc/Fonts.htm#Get_fonts
/doc/gs-vms.hlp
...
2 Initialization_files
When looking for the initialization files (gs_*.ps), the files related
to fonts, or the file for the `run' operator, Ghostscript first tries
opening the file with the name as given (i.e., using the current
working directory if none is specified). If this fails, and the file
name doesn't specify an explicit directory or drive, Ghostscript will
try directories in the following order:

1. The directory/ies specified by the -I switch(es) in the command
line (see below), if any;
2. The directory/ies specified by the GS_LIB logical, if any;
3. The directory/ies specified by the GS_LIB_DEFAULT macro in the
Ghostscript makefile.

Each of these (GS_LIB_DEFAULT, GS_LIB, and -I parameter) may be either a single directory, or a list of directories separated by a `:'.

Как видим - шрифты как раз ишутся в этих директориях и в вашем случае, видимо, не находятся.

«  1       »

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru