Принтер gdi что это

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

GDI (Graphics Device Interface)

GDI (Graphics Device Interface) — один из трёх основных компонентов или «подсистем», вместе с ядром и Windows API, составляющих пользовательский интерфейс (оконный менеджер GDI) Microsoft Windows.

GDI — это интерфейс Windows для представления графических объектов и передачи их на устройства отображения, такие, как мониторы и принтеры.

GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры. Он не отвечает за отрисовку окон, меню и т. п., эта задача закреплена за пользовательской подсистемой, располагающейся в user32.dll и основывающейся на GDI. GDI выполняет те же функции, что и QuickDraw в Mac OS.

Одно из преимуществ использования GDI вместо прямого доступа к оборудованию — это унификация работы с различными устройствами. Используя GDI, можно одними и теми же функциями рисовать на разных устройствах, таких, как экран или принтер, получая на них практически одинаковые изображения. Эта возможность лежит в центре всех WYSIWYG-приложений для Windows.

Простые игры, которые не требуют быстрой графики, могут использовать GDI. Однако GDI не обеспечивает качественной анимации, поскольку в нём нет возможности синхронизации с кадровым буфером. Также в GDI нет растеризации для отрисовки 3D-графики. Современные игры используют DirectX или OpenGL, что даёт программистам доступ к большему количеству аппаратных возможностей. [Источник 1]

Содержание

Поддерживаемые операции

GDI поддерживает следующие операции рисования:

Контекст устройства

Получение контекста устройства окна

Функция Rectangle принимает следующие аргументы: контекст устройства, координаты левого верхнего угла, координаты правого нижнего угла.

Функция TextOut принимает аргументы: контекст устройства, координаты левого верхнего угла текста, текстовая строка, количество символов в текстовой строке.

Функция Release принимает аргументы: окно, контекст устройства.

Вывод графики в нескольких окнах

Когда заполняется структура WNDCLASS, чтобы зарегистрировать класс окна программы в Windows, заполняется поле style:

Данное поле задаёт стиль класса окон. Значение CS_OWNDC говорит, что для каждого окна данного класса будет создан свой контекст устройства. [Источник 3]

Типы контекста устройства

В GDI существуют пять типов контекста устройства:

Регионы Windows

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

Обновляемый регион (update region), или, как его тоже иногда называют, недействительный регион (invalid region) — это часть окна, которая требует обновления после возникновения тех или иных событий.

Видимый регион (visible region) — та часть окна, которую в данный момент видит пользователь. Система изменяет видимый регион окна и в том случае, когда окно изменяет размеры, и в том случае, когда перемещение другого окна либо закрывает часть данного окна, либо открывает закрытую прежде часть.

Регион отсечения (clipping region) ограничивает область, внутри которой система разрешает отображение графической информации. Когда приложение получает контекст устройства при помощи функции BeginPaint, система устанавливает регион отсечения путем пересечения видимого региона и обновляемого региона. Приложение может ужесточить регион отсечения и ввести дополнительные ограничения при помощи вызова функции SetWindowRgn, SelectClipPath или SelectClipRgn.

Если при создании окна функцией CreateWindow был использован стиль WS_CLIPCHILDREN или WS_CLIPSIBLINGS, то это вносит дополнительные правила в определение видимого региона, исключая из него любое дочернее или любые «сестринские» окна. Благодаря этому рисование не затрагивает отображаемые области таких окон.

GDI принтеры

Non-GDI принтеры требуют аппаратные средства, оборудование и память для рендеринга страницы; принтер GDI использует ЭВМ для этого, что делает его дешевле в производстве, чем подобные Non-GDI принтеры. Некоторые производители выпускают, по сути, один и тот же принтер в версиях, совместимых с языком управления принтера, такие как PCL или PostScript, и дешевле GDI-only версия.

Принтер с собственным языком управления может принимать входные данные от любого устройства с подходящим драйвер; для принтера GDI требуется ПК с операционной системой Windows. В общем принтеры GDI не совместимы с аппаратными принт-серверами, хотя некоторые серверы имеют встроенные возможности обработки, что делает их совместимыми с принтерами GDI. [Источник 5]

GDI+ является улучшенной средой для 2D-графики, в которую добавлены такие возможности, как сглаживание линий (antialiasing), использование координат с плавающей точкой, градиентная заливка, возможность работы изнутри с такими графическими форматами, как JPEG и PNG, куда лучшая реализация регионов отсечения с возможностью использовать в них координаты с плавающей точкой (а не 16-битные целые) и применения к ним World Transform, преобразования двумерных матриц и т. п. GDI+ использует ARGB-цвета. Эти возможности используются в пользовательском интерфейсе Windows XP, а их присутствие в базовом графическом слое облегчает использование систем векторной графики, таких, как Flash или SVG.

Динамические библиотеки GDI+ могут распространяться вместе с приложениями для использования в предыдущих версиях Windows.

GDI+ схож с подсистемой Quartz 2D у Apple и библиотеками с открытым кодом libart и Cairo.

GDI+ есть не более чем набор обёрток над обычной GDI. В Windows 7 появился новый API Direct2D, который есть примерно то же, но реализован «сверху донизу» вплоть до драйвера видеокарты (точнее, использует некие возможности Direct3D в этом драйвере), и может использовать аппаратное ускорение — то есть видеопроцессор трёхмерной графики для рисования некоторых двухмерных объектов (antialiasing и т. д.)

Уязвимости

14 сентября 2004 года была обнаружена уязвимость в GDI+ и других графических API, связанная с ошибкой в коде библиотеки JPEG. Эта ошибка позволяла выполнить произвольный код на любой системе Windows. Патч для исправления уязвимости был выпущен 12 октября 2004 года. [Источник 7]

Источник

18.1.4. GDI-принтеры

GDI-принтеры[4] заслуживают отдельного разговора, поскольку Linux их не поддерживает.

Дело в том, что на обычный аппаратный (не GDI) принтер операционная система отправляет задание, после чего принтер, используя собственный процессор, сам занимается его обработкой и выводом на печать. В GDI-принтере процессор отсутствует, и обработка информации возлагается на центральный процессор компьютера. Делается это с одной целью — удешевления устройства как такового. Ясно, что в GDI-принтере на несколько микросхем меньше, следовательно, он стоит дешевле. Как правило, производители GDI-принтеров не утруждают себя разработкой драйверов для Linux и ограничиваются лишь драйверами для Windows и, иногда, Mac OS. Именно поэтому такие принтеры еще порой называют Win-принтерами — они могут работать только в Windows.

Скорее всего, на прилагаемом к принтеру компакт-диске с драйверами найдутся драйверы для всего семейства Windows, а также для Mac OS, но не для Linux. Далее я приведу список моделей, которые Linux поддерживает явно, но в списке может не быть модели, выбранной вами, и тогда лучше всего спросить у продавца (или прочитать в руководстве по принтеру), сможет ли данный принтер работать в Linux. Можно также поискать отзывы о выбранном принтере в Интернете и узнать, имеются ли у него проблемы с работой в Linux. Если да, то такой принтер лучше не покупать.

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Читайте также

Принтеры и цвет

Принтеры и цвет В секции Оборудование остались неохваченными вниманием два модуля — и описание обоих вполне уместится на одну страницу. Обратившись у пункту Принтеры, я увидел, что у меня нет настроенных принтеров: Поскольку физически у меня имелось МФУ DeskJet 2050, я нажал

Устройства и принтеры

Устройства и принтеры Данный механизм является усовершенствованием механизма Принтеры и факсы, который использовался в предыдущих версиях операционной системы Windows. В отличие от него, новый механизм содержит данные не только о принтерах и факсах, но и о любых других

Принтеры

Принтеры Запрет на удаление установленных в системе принтеровЧтобы запретить пользователю удалять установленные в системе принтеры, используйте ключ °NoDeletePrinter° в разделе HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplоrerСмотри также: Запрет на установку новых принтеров в

Сокрытие пункта Пуск→Настройка→Принтеры

Сокрытие пункта Пуск?Настройка?Принтеры Для того чтобы скрыть пункты меню Пуск?Панель управления, Пуск?Настройка?Принтеры (и соответствующие пиктограммы в папке Мой компьютер), внесите следующие изменения в

Сокрытие пиктограммы Принтеры в панели управления

Сокрытие пиктограммы Принтеры в панели управления Ключ:[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer] Значение:

Принтеры

Принтеры Первоначально печатающие устройства для компьютеров были не более чем модифицированными электрическими печатными машинками. Долгие годы, как во времена мейнфреймов, то есть больших ЭВМ, так и в эпоху персональных компьютеров, распечатки получали

18.1.1. Струйные принтеры

18.1.1. Струйные принтеры Со временем уровень печати, обеспечиваемый матричными принтерами, перестал удовлетворять запросы потребителей — текст они еще печатали, а вот, скажем, графику — уже нет (о цветных фотографиях я вообще молчу). И с появлением на рынке струйных

18.1.2. Лазерные принтеры

18.1.2. Лазерные принтеры Принцип действия лазерного принтера довольно сложен, поэтому здесь мы его рассматривать не станем. Поговорим лучше о потребительских свойствах. Качество печати лазерного принтера очень высокое, скорость печати — тоже. Лазерный принтер нужно

18.1.4. GDI-принтеры

18.1.4. GDI-принтеры GDI-принтеры[4] заслуживают отдельного разговора, поскольку Linux их не поддерживает.Дело в том, что на обычный аппаратный (не GDI) принтер операционная система отправляет задание, после чего принтер, используя собственный процессор, сам занимается его

Принтеры

Принтеры С помощью реестра можно запретить пользователям удаление установленных в системе принтеров. Для этого необходимо в разделе HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer создать REG_DWORD-параметр NoDeletePrinter и присвоить ему значение 1. Ниже приведен текст соответствующего

Глава 9 Принтеры и прочие периферийные устройства

Глава 9 Принтеры и прочие периферийные устройства Реальная стоимость принтера зависит от номинала купюр, которые он способен качественно напечатать. Первое правило фальшивомонетчика В этой главе мы закончим знакомство с периферийными

Современные струйные принтеры Олег Нечай

Современные струйные принтеры Олег Нечай Опубликовано 21 февраля 2011 года В отличие от матричных принтеров, способных лишь на воспроизведение текста и монохромной псевдографики, «струйники» выдавали полноцветные цветные отпечатки с плавными

Устройства и принтеры

Устройства и принтеры Вот простой пример переопределения типа. Рассмотрим понятие устройства, включив предположение о том, что для любого устройства есть альтернатива, так что устройство можно заменить, если оно по каким-либо причинам недоступно:class DEVICE featurealternate:

Домашние лазерные принтеры Олег Нечай

Домашние лазерные принтеры Олег Нечай Опубликовано 28 февраля 2011 года За эти годы лазерная печать, которая ещё совсем недавно была по карману лишь корпоративному заказчику, прочно обосновалась в «домашних офисах» студентов, учёных, юристов,

Принтеры

Принтеры Самыми популярными из вспомогательных устройств являются принтеры, позволяющие переносить информацию с экрана компьютера на бумагу.В настоящее время наиболее распространены два типа принтеров:? лазерные принтеры;? струйные принтеры.Раньше также

Источник

Диалоги о печатных тонкостях: языки описания страниц

История появления

Итак, с чего же всё начиналось? Наверное, все ещё помнят огромные и безумно шумные матричные принтеры, которые в нашем случае можно взять за историческую исходную точку в деле SOHO-печати. Со словосочетанием «матричный принтер» в первую очередь ассоциируется Epson. Собственно, компания Epson и придумала в далёких 70-х язык ESC/P (Epson Standard Code for Printers), который и по сей день поддерживается некоторыми другими производителями (к примеру, Brother) офисно-ориентированных устройств вывода посредством режима эмуляции.

Немногим позже, в 1981 году, IBM представила свою версию языка описания страниц под названием PPDS (Personal Printer Data Stream). Анонс совпал с выходом в свет первого принтера IBM, способного печатать графические изображения. Примерно в это же время на рынке появляется HP с языком PCL (Printer Command Language), который использовался в первых ударных и струйных принтерах. Тремя годами позже был представлен публике и первый релиз PostScript (также известный с постфиксом Level 1), базировавшийся на свободных исходниках Xerox и созданный силами только что основанной компании Adobe. Неудивительно, что и небезызвестная Microsoft включилась в эту софтварную гонку, правда, уже ближе к концу 80-х. Разработанный ею интерфейс GDI (Graphics Device Interface) используется в Windows для вывода текстовой и графической информации на принтеры и мониторы по сей день.

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

PostScript

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

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что это

PS отличается от прочих языков полной независимостью от разрешения принтера или плоттера. Команды PS представлены в виде ASCII (American Standard Code for Information Interchange) кодов, потому, к примеру, для вывода особых пользовательских шрифтов они должны быть преобразованы в совместимый с PS векторный формат. При отправке на печать изображение формируется «полистно», именно потому для профессиональной техники так актуальны большие объёмы кэш-памяти.

Популярный графический формат EPS (Encapsulated PostScript) – это своего рода дополнение к PS. Файлы в этом формате могут содержать как векторные, так и растровые элементы, а особая строгая структура, в соответствии с которой данные упорядочиваются внутри документа, позволяет создавать кросс-платформенные исходники для печати.

В отличие от PS этот язык не может похвастаться полной совместимостью со всеми аппаратно-программными решениями и обладает зависимостью от разрешения печатающего устройства, но в то же время может свободно и совершенно бесплатно использоваться любыми производителями устройств и разработчиками ПО. Последняя версия языка (PCL6), которая разрабатывалась HP в тесном сотрудничестве с Microsoft, характеризуется высокой скоростью преобразования данных из формата прикладного приложения в формат языка описания страниц и обеспечивает ускоренный возврат ответа в приложение, потому идеально подходит для SOHO-сегмента. Также PCL способен работать непосредственно с TrueType-шрифтами, которые применяются по умолчанию в среде Windows.

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

И PS, и PCL подразумевают наличие специального контроллера со стороны принтера, который принимает команды языка описания страниц, а затем преобразует их в бинарные (0/1) коды, управляющие непосредственно самим механизмом печати. Идея GDI состоит в том, чтобы избавить печатающее устройство от дорогостоящего контроллера и переложить его функции на центральный процессор вместе с драйвером. Отсюда же следует первый недостаток GDI: требовательность к системным ресурсам. Этот язык подразумевает конвертацию графической информации и шрифтов в единое растровое изображение, которое затем и отправляется на печать.

Поддержкой исключительно языка GDI обладают лишь самые бюджетные принтеры. В большинстве случаев производители стараются оснастить свои продукты как минимум совместимостью с PCL (не говоря уже о PS) хотя бы через эмуляцию, что, опять же, накладывает определённые требования на ресурсы системы. Также GDI отличается от PS и PCL своими сравнительно скудными возможностями функционирования в рамках локальной сети, а добавить эту опцию можно лишь при помощи дополнительного, далеко не дешёвого сетевого контроллера. Исходя из этого, GDI рекомендуется использовать для индивидуальных домашних нужд.

Резюме

PS и PCL часто называют реальными языками описания страниц, тогда как существуют ещё и своего рода надстройки над ними, которые были созданы для упрощения процесса программирования или реализации дополнительных возможностей. Такие надстройки интерпретируют собственные команды в последовательность команд реального языка описания в соответствии с его синтаксисом. К примеру, надстройка над PCL под названием RPCS (Refined Printing Command Stream) была разработана компанией Ricoh для визуализации программирования своих знаменитых плоттеров посредством графических пиктограмм. При помощи BR-Script фирмы Brother реализуются расширенные функции калибровки цвета, а также эмулируются команды языков PS Level 3 и ESC/P.

Приведём своеобразный рейтинг реальных языков применительно к SOHO-сегменту (чем больше баллов, тем лучше):

Источник

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что этоМедиация Linux и GDI-принтера

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что это ПАВЕЛ ЗАКЛЯКОВ

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

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

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

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

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

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

В этой статье я постараюсь выступить в роли медиатора, решив проблему печати из под ОС Linux на 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-сообществом.

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

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

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

Один из путей решения – написать свой драйвер принтера. Подобные попытки для некоторых принтеров Canon, Lexmark, Samsung были реализованы в проектах 5. Наиболее информативной и полезной статьёй по созданию собственного драйвера мне показалась статья [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).

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что это

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

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

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

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

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

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что это

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

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

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что это

Рисунок 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 полным путём и необходимыми ключами:

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

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что это

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

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

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

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что это

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

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

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

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

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

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

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что это

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

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

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

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

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

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

Принтер gdi что это. Смотреть фото Принтер gdi что это. Смотреть картинку Принтер gdi что это. Картинка про Принтер gdi что это. Фото Принтер gdi что это

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

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

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

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

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

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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