Windows gdi или gdi принтер

Что такое GDI-принтер

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

В принципе, его можно назвать «контроллером принтера», но суть не в этом.
Любой встроенный процессор (контроллер) принтера обязательно управляется с помощью какого-либо языка описаний команд.

Среди таких языков можно назвать, например, Postscript, PCL, ESC/P, HPGL, Lineprinter, Xerox XES/UDK, Luminous LN02Plus и множество других.
Другое дело — GDI-принтер.

На самом деле, GDI, или Graphic Device Interface — не что иное, как библиотека определенных функций операционной системы Windows для осуществления вывода информации на графические периферийные устройства, такие как дисплеи или принтеры.

Таким образом, процессор «GDI-принтера» — это как раз тот самый случай, когда в его отношении более уместно определение «контроллер».
В отличие от принтеров с мощным встроенным процессором, контроллер GDI-принтера всего лишь выводит информацию в буферную память принтера.

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

Иными словами, приличная часть работы по подготовке изображения к выводу на печать в случае GDI-модели ложится не на принтер, а на компьютер.

Плюсы такой «организации труда» огромны: вам не приходится переплачивать за достаточно дорогую электронную начинку принтера; для владельцев ПК даже средней мощности вопрос небольшой дополнительной нагрузки на CPU просто незаметен.

Есть, правда, и минусы, хотя в наше время они достаточно условны, если речь не идёт о работе с платформы, отличной от Windows.
Ну кому сейчас, к примеру, понадобится печать из-под DOS?
Ранее у отдельных моделей также были сложности с использованием в качестве сетевого принтера в смешанных сетях.

На практике нередки случаи, когда различные производители указывают в характеристиках принтера в качестве языка управления свои собственные разновидности GDI-системы.
Например, у принтеров компании Samsung это SPL, или SPL-Color — Samsung Printing Language.

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

Почему для конечного пользователя так важно знать, на каком языке его принтер «общается» с системой? Этим вопросом лучше задаться ещё до покупки самого принтера, потому как ответ на него в немалой степени влияет на такие простые и понятные для рядового потребителя параметры, как «скорость печати» и «качество печати». Скорости и качества нам, как водится, охота поболее да подешевле, вот только не появляется скорострельность и точная цветопередача из ниоткуда, равно как и никуда не исчезает. Ferra.ru в очередной раз доказывает простейшие законы физики на примере языков описания страниц.

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

Итак, с чего же всё начиналось? Наверное, все ещё помнят огромные и безумно шумные матричные принтеры, которые в нашем случае можно взять за историческую исходную точку в деле 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 предоставляет широкие возможности максимально качественной цветной печати, он не совсем подходит для «рутинной» печати простых текстовых документов ввиду своей невысокой скорости и некоторых других недостатков.

Читайте также:  Как остановить процесс обновление windows

Различия в способах формирования изображения в растровом формате и PS как раз и объясняют приверженность профессионалов к последнему: кривую в каждой узловой точке можно свободно менять в соответствии с пользовательскими нуждами

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

1-, 2-, 4- и 8-битная монохромная картинка в PS

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

Изначально PS был стандартом де-факто практически во всех моделях лазерных принтеров класса SOHO, однако в настоящее время он почти не применяется в решениях low-end и middle-end из-за дороговизны лицензирования у Adobe необходимых RIP (Raster Image Processor) контроллеров, встраиваемых в принтеры. К примеру, каждый RIP-контроллер с поддержкой PS Level 3 для плоттеров компании HP обходится примерно в $500.

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

TrueType-шрифт Courier New

PCL-принтеры снабжаются некоторым набором TrueType-шрифтов, которые «зашиваются» во внутреннюю память устройства. При печати драйвер напрямую передаёт текст на контроллер принтера, минуя стадию преобразования в изображение (рендеринг шрифта), за счёт чего повышается быстродействие

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

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

Схема работы GDI

Схема работы GDI

Типичный пример ультрабюджетного принтера стоимостью чуть более $100 – Samsung ML-1210. Эта модель поддерживает лишь GDI, тогда как старшая и более дорогая ML-1250 уже комплектуется эмуляцией PCL6

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

Резюме

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

Читайте также:  Протестировать ноутбук windows 10

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

PostScript PCL GDI
Популярность 2 3 1
Качество печати 3 2 1
Скорость печати 2 3 1

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

Языки и технологии принтеров

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

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

О языках принтеров

Что такое задание на печать? Это программа, написанная на специальном языке программирования – Page Description Language (PDL).

Печатаемые страницы кодируются в PDL и занимают меньший размер, а значит, передаются быстрее необработанных изображений. PDL не зависят ни от самих устройств, ни от разрешающей способности. Принтеры преобразуют задания на специализированном языке в понятный для устройства формат. Это значит, что принтеры содержат языковые интерпретаторы. Также как у языков программирования «а ля Java», у этих языков не одна версия и каждая работает немного по-своему.

Преобразование PDL в растровые изображения выполняется программой-обработчиком: процессором растровых изображений, Raster Image Processor или просто RIP.

Самые известные PDL языки: Postscript, PCL5, PCL6

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

PostScript – самый распространённый из всех. Первоначально разработан компанией Adobe. Требует наличия лицензии для использования, поэтому на сегодняшний день используется преимущественно в высокопроизводительных устройствах верхнего ценового сегмента. Почти все программы, компонующие страницы, могут генерировать задания на PostScript. Это полнофункциональный язык программирования. Написанные программы можно просматривать с помощью текстового редактора. В них много круглых скобок, а также символов / %!

P.S. Эти символы ищутся интерпретаторами для распознавания заданий на печать.

Также PostScript является стандартом для MAC и профессиональным стандартом.

PCL – или Printer Common Language – альтернатива PostScript от Hewlett Packard (далее HP). Язык понятен принтерам других производителей, некоторые умеют работать только с ним. PCL – не язык программирования, он просто сообщает на принтер как ему следует напечатать страницы. Задания на PCL бинарные и непонятны для человека, зато короче по размеру, чем PostScript.

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

На самом деле, вопрос не только в железе: существует так называемая эмуляция.

Эмуляция PCL – это значит, что разработчик стандарта (т.е. HP) не лицензировал или не тестировал принтер производителя на совместимость с PCL.

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

Чтобы вас окончательно запутать, HP определила два семейства языков PLC5 (5e – черно-белый, и 5c – цветной) и PCL6 (PCL/XL). Новые HP принтеры поддерживают оба. Ранее существовал и PCL4, но сейчас он слишком архаичный. Начиная с PCL5 5e, также были введены такие новшества, как: поддержка разрешения 600 dpi, двунаправленный обмен данными между принтером и компьютером и новые шрифты для Microsoft Windows.

Читайте также:  Стилус для samsung windows

PDF – еще одна разработка Adobe – Portable Document Format. Это формат документов, использующий часть возможностей PostScript, основа издательского дела и программ Office. PDF-документы не зависят от ОС и платформы. Очень часто формат используется для обмена документами с возможностью просмотра и печати. PDF – язык описания документов, а не страниц. Позволяет описывать не только страницы, но и всю структуру документа, главы, взаимосвязь текстовых столбцов друг с другом, правки и так далее. Плюс, куча возможностей мультимедиа.

Есть принтеры, которые интерпретируют PDF напрямую. Есть масса программ-трансляторов и визуальных редакторов с возможностью преобразования PDF, например, в PostScript. Это преобразование даже может быть скрыто от пользователя.

XHTML – появился относительно недавно. Принтер получает поток данных на языке, описывающем XHTML-print веб-страницу, генерирует представление задания (разные принтеры формируют разные задания, также как разные браузеры отражают страницу иначе).

HP-GL/2 – Hewlett-Packard Graphics Language – Служат для печати векторной графики в составе документа.

HPGL – язык поддержки плоттеров. Поддерживается почти всеми HP-принтерами.

PJL – Printer Job Language. Язык заданий для принтера, метаязык от HP, описывает какой PDL должен использоваться для задания, каким будет формат бумаги, сколько копий нужно напечатать, симплексное задание или дуплексное и так далее.

О драйверах

Драйвер принтера и поддержка – ПО, преобразующее файл в понятный для принтера. Задачи и функции драйвера отвечают на вопросы: «Что если принтер не поддерживает все языки?», «Имеется задание postscript, а принтер распознает только PCL 5E. Нужно напечатать PDF, что делать, если принтер его не интерпретирует?».

Система сможет сделать все самостоятельно (выяснить язык PDL файла, выполнить преобразования). Вы также можете преобразовать файл вручную. Браузеры умеют преобразовывать HTML в postscript или в PDF. Open Office может преобразовать .doc в PDF. Из postscript можно преобразовать почти в любой формат, в том числе PCL.

GDI – ещё задание на печать можно просматривать и интерпретировать централизованно, на ПК. Также можно отправлять готовые обработанные растровые изображения на принтер «без интеллекта». Именно так и работают многие Windows GDI-принтеры. Такие принтеры обладают весьма незначительным количеством логических инструкций и совсем не обладают интерпретаторами PDL. Вместо этого растеризацию выполняет обслуживающий компьютер. Часть информации для взаимодействия с GDI скрыта в коде Windows под патентами. Эта секретность затрудняет разработку аналогов в системах Linux, и, по сути, является преимуществом. Аналогично ситуация развивается с поддержкой новейших моделей принтеров. Впрочем, ситуация меняется благодаря существованию демона CUPS с поддержкой многих Win Printers с помощью реверс инжиниринга.

О сервере печати

Немного интересного о CUPS и отправке заданий на печать через него. В основе данного сервера печати лежит протокол IPP, который является всем известным HTTP с перегрузкой. Запросы о состоянии принтеров идут как операция HTTP GET, а задания на печать через HTTP POST. Таким образом, CUPS является, фактически, веб-сервером, но взаимодействует исключительно по порту 631, а не 80. CUPS является, пожалуй, самой полноценной реализацией IPP на планете, а его конфигурационные файлы очень похожи на файлы веб-сервера Apache. И, разумеется, позволяет системам печати использовать технологии аутентификации, контроля доступа и шифрования.

В Windows печать через протокол IPP появилась, начиная с Windows 2000. На клиентах с Windows 7 и новее, поддержка протокола IPP, как правило, уже установлена. Также есть Internet Printing – windows реализация сервера печати Internet через IPP. Для его установки необходимо сначала установить службу веб сервера MS IIS

О безопасности для принтеров

Сетевые принтеры, разумеется, поддерживают системы удаленного управления ими, конфигурирование и мониторинг преимущественно осуществляется либо через протокол IPP, либо через SNMP, либо из веб-браузера по HTTP. В частности, имея доступ к принтеру, можно получить такие параметры как: IP-адреса, стандартный шлюз, сервер Syslog, групповое имя (пароль) SNMP, опции протоколов, пароль администратора. Тут возможны несанкционированный доступ атаки по SNMP и DDOS-атаки. Почти все, допускающие удаленное администрирование принтеры, являются незащищенными и используют пароль или SNMP-имя, данное на момент установки.

Какая операционная система используется принтером? Некоторые модели имеют Linux-based дистрибутив на борту. Понять, что же установлено на принтере, либо поменять пароли по умолчанию можно лишь закопавшись в документацию производителя. Неразбериха с операционной системой усугубляется тем, что средства графического администрирования имеют тенденцию сокрытия сведений о различиях производителей.

В заключение хочу еще раз сказать, что проблемы печати многогранны, некоторые из них остались за рамками статьи. В следующий раз надеюсь рассказать о ведении журналов, PPD-файлах и форматах бумаги. О том, как попросить монохромный принтер распечатать двусторонний цветной документ в неизвестном ему формате b4, а также о всевозможных утилитах печати и командах совместимости.

Оцените статью