
Обработка поступающих данных печати и перевод их в приемлемый для печатного механизма вид в любом, даже самом простом принтере осуществляется с помощью встроенного процессора.
В принципе, его можно назвать «контроллером принтера», но суть не в этом.
Любой встроенный процессор (контроллер) принтера обязательно управляется с помощью какого-либо языка описаний команд.
Среди таких языков можно назвать, например, 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.
Драйвер AMD Radeon Software Adrenalin Edition 19.11.3

В драйвере AMD Radeon Software Adrenalin Edition 19.11.3 добавлена поддержка технологии DirectX 12 в игре Fortnite.
Сбой при установке обновлений в Windows 10

При попытке установить обновления из Центра обновления Windows 10 может появиться сообщение: «Сбой обновлений с ошибками: 0x80073701, 0x800f0988».
Пакет драйверов Intel Graphics Windows 10 DCH 26.20.100.7463

14 ноября 2019 г. компания Intel представила пакет графических драйверов версии DCH 26.20.100.7463 для 64-битных систем Windows 10.
Драйвер AMD Radeon Software Adrenalin Edition 19.11.2

Драйвер AMD Radeon Software Adrenalin Edition 19.11.2 включает поддержку новой игры Star Wars Jedi: Fallen Order.
Skype — версия 8.54

Программа Skype версии 8.54 получила ряд улучшений в части перевода разговоров на разные языки.
© 2000-2019
GDI (Graphics Device Interface, Graphical 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, что даёт программистам доступ к большему количеству аппаратных возможностей.
Содержание
Содержание
Краткое описание [ править | править код ]
Для определения атрибутов текста и изображения, которые выводятся на экран или принтер, используется программный объект под названием «контекст устройства» (Device Context, DC). DC, как и большинство объектов GDI, инкапсулирует подробности реализации и данные в себе и к ним нельзя получить прямой доступ.
Для любого рисования нужен объект HDC (Handle DC). При выводе на принтер HDC получается вызовом CreateDC, и на нём вызываются специальные функции для перехода на новую страницу печатаемого документа. При выводе на экран также можно использовать CreateDC, но это приведёт к рисованию поверх всех окон вне их границ, потому обычно для рисования на экране используются вызовы GetDC и BeginPaint, принадлежащие уже не GDI, а USER, и возвращающие контекст, ссылающийся на регион отсечения окна.
- вывод одними и теми же вызовами на экран, принтер, «экран в памяти» (доступный приложению по указателю и созданный им bitmap в памяти, также возможно выделение bitmapов в памяти видеокарты — CreateCompatibleBitmap — и рисование на них, такие битовые карты не доступны по указателю, но дальнейшая перерисовка с них на физический экран происходит очень быстро без нагрузки процессора и шины, и особенно быстро в случае Remote Desktop).
- вывод в метафайл — запоминание последовательности команд рисования в файле, который можно «проиграть» заново, векторный графический файл .wmf есть именно этот метафайл с небольшим дополнительным заголовком в начале.
- вывод текста различными шрифтами, в том числе TrueType и OpenType, а также шрифтами, вшитыми в принтер (при изображении документа на экране используется ближайший похожий программно реализованный шрифт). Буквы всегда заливаются одним цветом («текущий цвет»), промежутки между ними либо остаются прозрачными, либо же заливаются другим цветом («текущий цвет фона»). Не поддерживается расположение букв по кривой.
- богатый набор операций с битовыми картами (битмапами), включая масштабирование, автоматическое преобразование из типичных форматов в текущий формат экрана без усилий со стороны программиста (StretchDIBits), рисование на битмапах нескольких типичных форматов, находящихся в памяти, и огромное количество логических операций комбинирования цветов 2 битмапов — уже имеющегося на устройстве назначения и вновь рисуемого.
- богатый набор операций векторной графики (примерно тот же, что в PostScript, но используется другой вид кривых). Проводимая линия имеет атрибуты — толщину, рисунок пунктира и цвет (собраны вместе в т. н. объекте PEN) и способ сглаживания углов многоугольников. Заливка может быть одноцветной, одной из штриховок на выбор или же битмапом 8 на 8 (эти атрибуты собраны в «объекте BRUSH»). В Windows NT также появились кривые Безье.
- все цвета в вызовах — всегда в RGB, независимо от системы цветов текущего устройства. Исключение — отдельные пикселы внутри битмапов, которые могут быть и в виде, определённом устройством.
- поддержка регионов отсечения и всех основных логических операций над ними. Координаты в них — 16-битные целые (что ограничивало размер экрана Windows, даже довольно поздних версий, до 32K пикселов).
- поддержка матрицы поворотов/растяжений — World Transform, не поддерживается для регионов отсечения, только для векторной графики.
Реализация [ править | править код ]
В Windows 9x и более ранних реализована в 16-битной GDI.DLL, которая, в свою очередь, подгружает выполненный в виде DLL драйвер видеокарты. Драйвер видеокарты первоначально и был обязан реализовать вообще всё рисование, в том числе рисование через битмапы в памяти в формате экрана. Позже появилась DIBENG.DLL, в которой было реализовано рисование на битмапах типичных форматов, драйвер был обязан пропускать в неё все вызовы, кроме тех, для которых он задействовал аппаратный ускоритель видеокарты.
Драйвер принтера подгружался таким же образом и имел тот же интерфейс «сверху», но «снизу» он вместо рисования в памяти/на аппаратуре генерировал последовательности команд принтера и отсылал их в объект Job. Эти команды, как правило, были либо двоичные и не читаемые человеком, либо PostScript.
В Windows NT GDI была полностью переписана с нуля заново, причём на C++ (по слухам, у Microsoft тогда не было компилятора этого языка и они использовали cfront). API для приложений не изменился (кроме добавления кривых Безье), для драйверов — обёртки на языке Си вокруг реализованных на C++ внутренностей (вроде BRUSHOBJ_pvGetRbrush).
Сама GDI была размещена сначала в WINSRV.DLL в процессе CSRSS.EXE, начиная с NT4 — в win32k.sys. Драйверы загружались туда же. DIBENG.DLL была переписана заново и перенесена туда же, как совокупность вызовов EngXxx — EngTextOut и другие. Логика взаимодействия драйвера-GDI-DIBENG осталась примерно та же.
GDI32.DLL в режиме пользователя реализована как набор специальных системных вызовов, ведущих в win32k.sys (до NT4 — как обёртки вокруг вызова CsrClientCallServer, посылавшего сообщение в CSRSS.EXE).
В Windows Vista появилась модель драйверов WDDM, в которой была отменена возможность использования аппаратуры двухмерной графики. При использовании WDDM все GDI-приложения (то есть все обычные системные части Windows UI — заголовки и рамки окон, рабочий стол, панель задач и другое) используют GDI-драйвер cdd.dll (Canonical Display Driver) [1] , который рисует на некоторых битмапах в памяти, своих для каждого окна (содержимое окна стало запоминаться в памяти, до того Windows никогда так не делала и всегда перерисовывала окна заново, кроме неких специальных окон с флагом CS_SAVEBITS). Изображения из cdd.dll извлекаются процессом dwm.exe (Desktop Window Manager), который является Direct3D-приложением и отрисовывает «картинки окон» на физическом экране через Direct3D.
Сам же WDDM-драйвер поддерживает только DirectDraw и Direct3D и не имеет отношения ни к GDI, ни к win32k.sys, сопрягаясь с модулем dxgkrnl.sys в ядре.
Критика [ править | править код ]
Крайне сильно критикуется подсистема печати Windows, особенно в случае сравнения её с CUPS.
Причины: бинарный формат потока задания печати (в CUPS это PostScript) и реализация обработки этого потока в виде нескольких DLL внутри одного процесса SPOOLSV.EXE (CUPS вместо этого использует обычный конвейер из нескольких процессов вроде pstoraster | rastertoepson | parallel, который можно при желании запустить из обычного UNIX shell). Таким образом, CUPS поддерживает разработку фильтров заданий печати (например, для платных принтеров в отелях) даже на скриптовых языках вроде Perl.
Однако тут речь скорее о компонентах, лежащих ниже GDI.
Однако CUPS имеет серьёзные проблемы с поддержкой WinPrinterов вроде всех дешёвых лазерных принтеров Hewlett-Packard. Так как они не поддерживают распространённый формат PCL, для них надо ставить огромные, сложные в настройках и построении пакеты, такие, как HP OfficeJet (порт «hpoj» во FreeBSD). При этом CUPS прекрасно поддерживает струйные принтеры, дорогие модели лазерных принтеров Hewlett-Packard и принтеры PostScript.
Примерные аналоги [ править | править код ]
Нижние уровни технологии X11, используемой в UNIX-подобных ОС, таких, как Linux.
При этом X11 беднее возможностями, чем GDI (например, есть проблемы с реализацией независимых от устройства цветов), и для получения полного аналога GDI необходимо добавить ещё ряд библиотек, таких, как SDL.
GDI+ [ править | править код ]
| компонент Windows | |
| Microsoft Windows GDI+ | |
|---|---|
| Тип компонента | программное обеспечение и компонент Microsoft Windows [d] |
| Включён в | Windows XP Windows Server 2003 Windows Vista Starter |
| Заменил | Microsoft Windows GDI |
| Был заменён | Desktop Window Manager |
С выходом Windows XP появился потомок подсистемы, GDI+, основанной на C++ [2] . Подсистема GDI+ доступна как «плоский» набор из 600 функций, реализованных в gdiplus.dll. Эти функции «обёрнуты» в 40 классов C++. Microsoft не планирует оказывать поддержку для кода, который обращается к плоскому набору напрямую, а не через классы и методы C++. .NET Framework предлагает набор альтернативных C++ обёрточных классов, входящих в пространство имён System.Drawing ..
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 года [3] .

В предыдущих обзорах мы часто упоминали в характеристиках принтеров, с какой они поддержкой: PCL или GDI. Пришло время рассказать, в чём различие между принтерами с поддержкой PCL/PostScript и принтерами GDI
В чем разница принтеров с поддержкой GDI и поддержкой PCL/PostScript? Вот и нам стало интересно, из-за чего в столовой, во время всеобщего чаепития незанятых и не очень занятых коллег началась дискуссия, в которой товарищ Вяземская хотела доказать Александру Александровичу, что профессор Преображенский, тяготея к PCL , в корне неправ. И тут две стороны дискуссии пришли к однозначному решению, что рассматривать нужно способ работы принтера и место обработки данных. И тут же начали рассматривать массив точек, из которого и состоит изображение, которое нужно воспроизвести на бумаге. И тут прозвучало умное слово «растеризация», на несколько минут охладившая пыл обоих сторон. Так как слово, влетевшее в дискуссию, было выпущено мимо проходящим
неприсоединившимся представителем. И тут многие вспомнили, что одна из основных функций печатающего устройства – процесс создания массива точек, а по-научному «растеризация»! После чего всё покатилось по накатанной. В принтерах, которые работают под управлением PCL и Postscript (сокращенно PS ) , растеризация осуществляется непосредственно в принтере.
Для этого в принтер встроен растровый процессор Raster Image Processor ( RIP ). Принтер получает и интерпретирует команды языка разметки страниц PCL или PostScript, по которым и строит растеризацию. Результат построения – отпечаток на бумаге.
В отличии от PCL принтеров в случае с GDI принтерами, то есть Graphical Device Interface, как эта аббревиатура читается в полный рост, растеризацию выполняет аналог растрового процессора – драйвер принтера, установленный на компьютере. Именно в драйвере происходит преобразование образов в растр для печати. По мере формирования растра он передается на принтер, который, в свою очередь, начинает его печать. В этом случае принтеру не нужна большая память, так как наличная память фактически является неким буфером по передаче данных. Какие плюсы от таких особенностей? На GDI принтере можно печатать любые по размеру задания, вплоть до вёрстки с большим количеством векторов в формате A 3 в дуплексе. Или даже 50 мегапиксельные панорамные фотографии. Печатать будет до тех пор, пока в компьютере не кончится виртуальная память.
Класс! — воскликнули приверженцы лагеря GDI . Вот и превосходство над PS , который наверняка захлебнётся от информации по ошибке «out of memory». К тому же RIP процессор внутри PS принтера раза в 4 слабее принтера компьютера. В основном распространены RIP с тактовой частотой 500 Мгц. Значит и скорость построения в GDI будет выше. Ну вот и ложка дёгтя: пока не наступит сбой связи между компьютером и принтером. Результат – недопечатанный лист или вертикальные полосы различной ширины. Кроме того, если у вас «дохлый» компьютер с минимумом оперативной памяти … Далее представить мучения и потоки ругательств даже из уст рафинированных секретарш вы можете сами.
Теперь добавим мёду PS принтеру. Меньше «тормозит» приложения компьютера при печати большого файла, компьютер менее «тормозит», меньший траффик в сети, если принтер подключен к ней. А уж такая возможность, как печать из профессиональных графических приложений с использованием PPD файлов (PostScript Printer Description*)? Что даёт? А это даёт практически управление всеми параметрами печати: линеатура и угол наклона растра, форма растровой точки и т.д. Такого в GDI нет.
И вот еще одна разница между PS принтерами и остальными. Они могут получать на печать данные как в формате CMYK , так и в RGB . А вот принтеры PCL и GDI только с RGB . А это значит, что требуется преобразование из CMYK в RGB . И только после этого строится массив. Это дополнительное преобразование даст искажения и потери в цветопередаче.
Итак, прежде чем купить принтер, кроме анализа его технических характеристик, таких как скоромть печати, ёмкость лотка, доступность расходников, легкость заправки и т.д., необходимо уяснить, с какими файлами вам предстоит работать как по объему, так и по формату.
ЭТО ОБЗОР, А РЕШЕНИЕ ПРИНИМАТЬ ВАМ !
*PPD-файл (PostScript Printer Description) – принтерный файл в текстовом формате ASCII производства компании Adobe Systems или фирм, выпускающих продукт под ее маркой (OEM), – описывает заводские характеристики и особенности конкретной модели печатающего PostScript-устройства.





