Лазерный принтер по своей натуре растровое страничное устройство, поэтому, в простейшем случае, поток данных, готовых к печати, должен содержать лишь перечисление координат всех точек, подлежащих закрашиванию. Но даже если исходный документ представлен в формате bitmap, далеко не всегда его можно использовать «как есть», и перенести изображение на бумагу «точка в точку» едва ли получится. Его, как правило и как минимум, придется пересчитать в другое разрешение (масштабировать). Струйные и матричные являются обычно принтерами построчной печати.
Драйверы принтеров в Windows являются частью операционной системы, а не приложения поэтому в системе можно найти драйвер практически к любой модели принтера. Поддержка принтера одной модели в операционных системах Windows реализуется по-разному отсюда необходимость устанавливать драйвер принтера для данной операционной системы. Процесс установки драйвера в этих операционных системах практически одинаков. В окне “Панель управления” (Control Panel) есть пиктограмма “Принтеры” (Printers). С помощью этой пиктограммы устанавливаются все локальные, сетевые и даже физически не подключенные к компьютеру принтеры. При установке принтера, который поддерживает несколько языков описания страниц, следует установить драйвер для каждого поддерживаемого языка (PostScript, PCL). Для печати документа необходимо выбирать соответствующий драйвер. Если компьютер подключен к локальной сети, то необходимо установить драйверы всех принтеров, к которым можно получить доступ через сеть. С помощью пиктограммы «Принтеры» в окне «Панель управления» можно просмотреть ресурсы сети и установить соответствующие драйверы принтеров.
В системах Windows можно разрешить совместное использование принтера в локальной сети. В диалоге используя окно свойств принтера, которое состоит из нескольких вкладок, можно изменять определенные группы параметров драйвера принтера. Количество вкладок и находящиеся в них параметры зависят от типа установленного принтера, однако практически для всех моделей принтеров существует одинаковый набор параметров. Чаще всего это размер и ориентация бумаги, выбор лотка с бумагой и количество копий. Многие драйверы принтеров позволяют управлять печатью графики и шрифтов:
Типовой процесс печати документа на лазерном принтере наиболее сложный и состоит из следующих этапов:
Приблизительно такая последовательность действий выполняется большинством лазерных принтеров. Массовые модели принтеров интенсивно используют в процессе печати компьютер, а более дорогие и совершенные модели большую часть операций выполняют с помощью собственного встроенного аппаратного и программного обеспечения.
При подключении компьютера к принтеру задание печати отправляется на принтер (через параллельный, последовательный порт, или встроенный в принтер сетевой адаптер, или интерфейс USB). Поток данных может быть двунаправленным, т.е. и принтер может посылать компьютеру сигналы, которые информируют его о приостановке или продолжении передачи потока данных. В принтере обычно установлен объем памяти намного меньший, чем объем задания печати. При переполнении буфера принтер сообщает компьютеру о приостановке передачи данных. Как только страница будет напечатана, принтер продолжает считывать данные из буфера и информирует компьютер о возобновлении передачи. Этот процесс называется синхронизацией (handshaking). Для нее используется специальный протокол. Для хранения данных задания печати используется память принтера, а если ее недостаточно, то необходимо добавить дополнительные модули. Некоторые модели принтеров оснащаются встроенным жестким диском для хранения данных печати и коллекций шрифтов. Процесс временного хранения заданий перед их печатью называется спулингом печати (print spooling).
Современные принтеры обладают дополнительными коммуникационными возможностями, позволяя пользователю с помощью программного обеспечения осведомляться о состоянии принтера, конфигурировать параметры, которые ранее можно было установить только с помощью пульта управления на принтере. Для такого типа связи принтера и компьютера, например, необходим порт с расширенными возможностями ( например ЕСР, ЕРР).
После загрузки данных в память принтера его встроенный микропроцессор начинает обработку данных (начинается процесс интерпретации кода ). Часть принтера выполняющая обработку данных называется контроллером или интерпретатором (форматером) и включает программную поддержку языка (или языков) описания страниц. Вначале интерпретатор из поступивших данных выделяет управляющие команды и содержимое документа. Процессор принтера считывает код и выполняет команды, являющиеся частью процесса форматирования, а затем выполняет другие инструкции по конфигурации принтера (например, выбор лотка с бумагой, односторонняя или двухстороння печать и т.д.).
При выполнении форматирования в процесса интерпретации данных выполняются команды, указывающие, как содержимое документа должно располагаться на странице. В низших моделях принтеров основную часть процесса выполняет компьютер, который отправляет принтеру специальные инструкции, описывающие точное расположение каждого символа на странице. Старшие и более дорогостоящие модели принтеров выполняют форматирование самостоятельно и делают это намного быстрее, чем массовые принтеры. Точность отображения зависит от драйвера принтера. Принтер формирует документ путем интерпретации набора команд, которые определяют размер бумаги, расположение полей страницы, интервал между строками. Затем контроллер принтера помещает текст и графику в этот макет страницы и выполняет такие сложные процедуры, как выравнивание текста.
Процесс форматирования включает и процедуру преобразование контуров шрифтов из векторной графики в растр. При появлении команды, задающей использование шрифта определенного типа и размера, контроллер обращается к контуру шрифта и генерирует растровое изображение набора символов необходимого размера. Эти растровые изображения символов помещаются во временный кэш шрифтов, откуда извлекаются по мере необходимости для непосредственного использования в том или ином месте документа. В результате процесса форматирования с помощью детального набора команд определяется точное расположение каждого графического изображения и символа на странице документа.
В конце процесса интерпретации данных наступает этап растеризации. Контроллер выполняет команды для создания массива точек, которые затем будут перенесены на бумагу. Созданный массив точек помещается в буфер страницы и находится там до момента переноса на бумагу. Эффективность процесса растеризации зависит от количества установленной в принтере памяти и используемого разрешения в текущем задании печати. При монохромной печати каждая точка - это один бит памяти и разрешения 300 dpi необходимо больше 1 Мбайт памяти. При разрешении 600 dpi необходимый объем памяти равен уже 4 Мбайт.
В ряде моделей принтеров если памяти недостаточно используются буферы полосы. Принтеры разделяют страницу на несколько горизонтальных полос. Контроллер выполняет растеризацию данных одной полосы, отправляет ее на печать, очищает буфер и приступает к обработке следующей полосы. Таким образом, страница по частям попадает на фоточувствительный барабан или другое печатающее устройство, но такой тип буферизации больше подвержен ошибкам, и при печати возможно несовпадение изображения на напечатанной странице. В некоторых драйверах принтеров предусмотрена возможность управления видом графики, в котором она будет отправляться на принтер (векторный или растровый). Векторная графика обеспечивает лучшее быстродействие по сравнению с растровой. При появлении проблем с векторной графикой можно использовать растровую, установив в окне свойств принтера соответствующий переключатель.
В настоящее время существует два основных языка описания страниц - PCL и PostScript, ставших фактическим стандартом в компьютерной индустрии. Принтеры, не поддерживающие язык описания страниц, используют последовательность escape-кодов (escape code sequence) для управления свойствами принтера в комбинации со стандартным текстом ASCII для передачи содержимого документа. Это обеспечивается драйвером принтера, который распознает передаваемые символы - escape-коды или язык описания страниц. Неважно, в какой программе был создан документ и в каком формате файла он был сохранен, но данные для печати должны быть преобразованы в поток данных языка описания страниц или поток ASCII-текста с escape-кодами. После растеризации изображение страницы сохраняется в памяти, а затем передается печатающему устройству, которое физически выполняет процесс печати.
Скорость работы принтера и его производительность во многом зависят от блока обработки изображения (форматера данных), который предназначен для обработки цифрового изображения, принятого в его оперативную память. Обработка принятого изображения может быть очень сложной, например, часто используются сложные алгоритмы обработки, обеспечивающие повышенное качество печати за счет сглаживания зубчатых и неровных краев при печати шрифтов, слежения за обеспечением высокой четкости печати векторных элементов; выполняется интеллектуальный анализ типа линий, автоматически различаются фотографии, текст и рисунки в пределах одной страницы; в зависимости от характера задания используются разные алгоритмы печати; осуществляется управление размером точки для обеспечения разрешения класса 2400 dpi из реальных 600 dpi путем пошагового (1-16 стадий) горизонтального контроля размера каждой точки и т. д.
Плата форматера по своему составу аналогична системной плате персонального компьютера. На ней находится достаточно мощный быстродействующий универсальный 32-х или 64-х разрядный микропроцессор с тактовой частотой 200-800 МГц. Микросхема используемая на форматере обычно является заказной, в качестве ее ядра используется достаточно мощный процессор, например, аналогичный Intel 960, Pentium, или Power PC 405CR и др., кроме того в микросхеме имеется ряд специализированных портов ввода/вывода.
Этот микропроцессор и элементы, обеспечивающих его работу, являются основой платы форматера. На плате обычно размещают микросхемы DRAM, ПЗУ с «прошитой» в ней управляющей программой и программой обработки страниц, принятых для печати. В памяти форматера хранятся и различные используемые при печати шрифты, стандартные формы, которые необходимо часто печатать. Как правило, форматере мощного принтера имеется возможность расширять объем памяти и поэтому на плате обычно имеются специальные разъемы, в которые и устанавливаются модули расширенной памяти. Результаты «интеллектуальной обработки» в форматере изображения страницы (точечный растр) должны быть преобразованы в аналоговый вид, пригодный для управления включением луча лазера. Это преобразование выполняет цифро-аналоговый преобразователь (ЦАП) блока обработки изображения, который осуществляет управление лазером и преобразует цифровой сигнал изображения в одноканальный аналоговый сигнал управления яркостью свечения лазера на этапе формирования «скрытого изображения».
Современный лазерный принтер немыслим без возможности сохранения его настроек, таких как размер бумаги, выбранный шрифт, качество печати и ряда других. Поэтому на плате форматера, как правило, должна быть микросхема энергонезависимой памяти, которая и предназначена для хранения всех этих установок. В современной микроэлектронной технике в качестве энергонезависимой памяти применяются микросхемы электрически-перепрограммируемого ПЗУ, которые получили название флэш-памяти (Flash).
Для работы любой микропроцессорной системы естественно имеется кварцевый синхрогенератор, который формирует тактовые импульсы, в соответствии с которыми осуществляются все циклы работы микропроцессора (в большинстве случаев синхрогенератор является встроенным в корпус микросхемы микропроцессора).
Для связи, платами второго уровня управления, дополнительными устройствами (например с HDD, с компьютером), плата форматера имеет схемы подключения к одному или нескольким стандартным интерфейсам (например, PCI, SPI, I2C и т. п.)
Наличие жесткого диска позволяет существенно сократить длительность подготовительного этапа печати. Обычно диск устанавливается там, где его применение оправдано. Как правило, в мощных принтерах опционально используют встроенный жесткий диск, хотя возможно и внешнее подключение. На жестких дисках обычно хранится системная информация, графические файлы, растрированные изображения для печати копий.
Эффективность коллективной работы может быть существенно повышена благодаря реализации таких функций, как конфиденциальная печать (конфиденциальная печать осуществляется после введения смарт-карты в специальное устройство набора кода), печать контрольного экземпляра, резервирование и повторная печать. Конфиденциальная печать, находящегося па жестком диске, производится только после того, как владелец пароля наберет персональный идентификационный код на панели принтера.
Для заполнения электронных форм на жесткий диск загружают уже обработанную для печати форму, фактически несколько текстовых полей, причем ее структура может быть очень сложной. Форма хранится на жестком диске в растрированном виде, а контекст передается со сканера в результате печать идет значительно быстрее. Это удобная функция для печати накладных. Например, в компании Xerox такая технология называется VIPP-печать переменных данных, a хранилищем электронных форм служит жесткий диск объемом до нескольких гигабайт.
Тиражирование файлов также требует установки жесткого диска. Для этого применяется технология тиражирования RIP Once Print Many (ROPM). Если на печать ежедневно отправляется множество копий сканированного документа, то, готовый к печати документ один раз посылается на жесткий диск. С помощью утилиты администрирования и управления жестким диском с пульта копира, можно, введя пароль, посмотреть все содержимое жесткого диска, все защищенные файлы в режиме Preview, получить доступ к истории печати документа, узнать, когда, кем и сколько раз он был отпечатан. Утилита предоставляет практически все возможности, которые имеет пользователь при работе с файлом в среде Windows, вплоть до его удаления. Жесткий диск эффективно применяется и в многофункциональных цветных копировальных аппаратах. На диск помещается растрированное задание и только потом печатается необходимое количество копий. Жесткий диск имеет свой особый мини-контроллер, который вставляется в свободный слот и после автоматической инициализации он готов к работе.
Для сетевого принтера определяющими являются такие параметры, как наличие сетевого адреса и скорость печати, чтобы он был в состоянии обслуживать ту рабочую группу, для которой установлен. Сетевым принтером может быть устройство уровня небольших офисов, или самые мощные аппараты, оснащенные одним или несколькими слотами для встроенного принт-сервера в виде сетевой карты с поддержкой сетевых протоколов. Как правило, в них тоже используется лазерная или светодиодная технология с высоким разрешением. Современные сетевые принтеры - это информационные устройства, которые способны преобразовывать и передавать информацию. Они в состоянии не только распечатать жесткую копию файла, но также принять и разослать ее по множеству адресов. Компьютерный мир меняется быстро, и название «периферия» по отношению к сетевым принтерам представляется уже не совсем точным. В сетевой среде современный принтер является вполне автономным устройством, которое имеет те же компоненты, что и компьютер. В нем устанавливают системные платы со все более быстрым процессором, оперативную память, жесткий диск, сетевую карту, возможно подключение внешнего жесткого диска, есть вход для монитора. Поэтому справедливо эти устройства рассматривают в качестве компьютерных узлов в локальной, или глобальной сети.
Многие производители комплектуют свои устройства флэш-памятью в виде дополнительной микросхемы, благодаря которой можно сэкономить время на подготовку документа к печати. Она представляет собой энергонезависимое запоминающее устройство (флэш-модуль объемом до 2 Мбайт) и обеспечивает многократную «прошивку» микрокоманд. Обычно в ней хранятся расширенные версии шрифтов, макеты заголовков, стандартные таблицы, настройки принтера и многое другое. С помощью соответствующего программного сервиса, по желанию администратора, можно автоматически обновлять, например, записанный в такую память интерпретатор языков и даже менять язык сообщений меню.
Компания Epson еще в 70-х годах прошлого века придумала язык ESC/P (Epson Standard Code for Printers), который и по сей день поддерживается некоторыми другими производителями (к примеру, Brother) в офисно-ориентированных устройствах вывода посредством режима эмуляции. В 1981 году, IBM представила свою версию языка описания страниц под названием PPDS (Personal Printer Data Stream). Фирма HP, примерно в это же время, предложила язык описания страниц PCL (Printer Command Language), который использовался в первых ударных и струйных принтерах. В 1984 году был представлен публике PostScript (известный с постфиксом Level 1), который базировался на свободных исходниках Xerox и был создан силами только что основанной компании Adobe.
Фирма Microsoft тоже приняла участие в разработке языков описания страниц (ближе к концу 80-х). Разработанный ею интерфейс GDI (Graphics Device Interface) используется в Windows для вывода текстовой и графической информации на принтеры и мониторы по сей день. Разработчики Windows для упрощения проблем с драйверами создали между программным обеспечением и принтерами интерфейс, не зависящий от конкретного типа принтера (рис. 1). Идея GDI состоит в том, чтобы избавить печатающее устройство от дорогостоящего контроллера и переложить его функции на центральный процессор вместе с драйвером. Отсюда же следует первый недостаток GDI: требовательность к системным ресурсам. Этот язык подразумевает конвертацию графической информации и шрифтов в единое растровое изображение, которое затем и отправляется на печать. Поддержкой исключительно языка GDI обладают лишь самые бюджетные принтеры. В большинстве случаев производители стараются оснастить свои продукты как минимум совместимостью с PCL (не говоря уже о PS) хотя бы через эмуляцию, что, опять же, накладывает определённые требования к ресурсам системы. GDI отличает и сравнительно скудные возможности функционирования в рамках локальной сети, а добавить эту опцию можно лишь при помощи дополнительного, далеко не дешёвого сетевого контроллера. Поэтому принтеры GDI рекомендуется использовать для индивидуальных домашних нужд.
GDI является подсистемой Windows, используемой программами для рисования графических изображений на экране. GDI позволяет рисовать на экране, принтере, графопостроителе или на других устройствах отображения с помощью драйверов. Главное в работе GDI - сделать программы в меру независимыми от реальной аппаратуры. В простых операционных системах типа MSDOS, программы должны были подключать свои собственные драйверы устройств. Всякий раз с появлением нового поколения аппаратных средств программное обеспечение либо получало новые драйверы, либо устаревало. С помощью GDI набор драйверов для аппаратуры обновляет прикладные программы. Интерфейс GDI выполняет и другую важную функцию. Он определяет набор операций, которые программа может выполнять. GDI поддерживает следующие операции рисования:
Поэтому команды рисования, представленные простейшими рисующими программами, например, такими как входящая в Windows программа Paintbrush, в основном отражают функции GDI. Более сложные рисующие программы, например CorelDRAW, выполняют команды, реализующие более сложные операции типа закрашивания (заливки) фонтаном и рисования сложных кривых и т. п.
Под управлением Windows прикладные программы печатают страницу, используя тот же интерфейс графических устройств (GDI), что и для рисования на экране монитора. GDI посылает команды драйверу принтера, который транслирует их в понятный принтеру язык и с помощью драйвера коммуникационного порта посылает принтеру. Из-за сложности взаимодействия программ и интерфейса GDI проектировщики принтеров вынуждены были усложнять конструкции принтеров. Если бы битовый образ всей страницы составлялся непосредственно центральным процессором, то процесс печати резко замедлился бы из-за пересылки принтеру очень большого объема данных для каждой страницы даже при обработке самого простого текста (особенно при печати в сети). Разработчики поступили иначе – они переложили все, что связано с обработкой растрового изображения, на процессор принтера, но для этого пришлось использовать язык для описания сложных задач, выполняемых интерфейсом GDI.
Первый этап интерпретации данных выполняет собственно программа, отправляющая задание на печать. В Windows любое приложение описывает изображение с помощью стандартного набора команд GDI (модуль Windows, интерпретирующий свои универсальные команды печати в инструкции, понятные драйверам различных устройств ввода-вывода, например, драйверу принтера). В своей работе GDI может пользоваться файлом-буфером в формате EMF или RAW - первый обеспечивает чуть большую производительность и занимает меньше места на диске, второй имеет смысл выбирать лишь при возникновении проблем с печатью (сделать это можно в «Свойствах принтера»). Далее инструкции подхватывает драйвер, алгоритм его работы напрямую зависит от используемого принтером языка описания объектов печати.
Рис. 1. «Программный» GDI-принтер.
Так называемые GDI-принтеры (рис. 1) обитают в низу принтерной иерархии, их легко узнать по чисто символическому объему памяти, как правило, без возможности наращивания. Работают они только под Windows, и всю рутину по преобразованию объектов в стройные шеренги пикселов (образ страницы) выполняет драйвер при поддержке центрального процессора. Что, впрочем, не бог весть как напрягает последний, ведь недорогие принтеры (к ним преимущественно и относятся GDI-модели) работают не быстро и в мощном входном потоке не нуждаются. Для таких принтеров нет ничего страшного в том, что часть страницы не уместится в памяти, в этом случае организуется динамическая подкачка данных во время печати (фактически собственная память принтера служит лишь сглаживающим буфером, на случай временного захвата центрального процессора ресурсоемким заданием).
К следующему, и самому многочисленному классу принтеров относятся модели, «обученные» языку PCL (Printer Control Language). Этот язык разработала компания Hewlett-Packard для своих струйных DeskJet и лазерных LaserJet, но он оказался очень удачным компромиссом между полностью «программными» моделями и дорогими PostScript-принтерами и был поддержан большинством производителей. В зависимости от версии PCL растеризацией может заниматься как драйвер (PCL 3), так и процессор принтера (современные версии - PCL 5 и PCL 6). PCL-принтеры обычно имеют буфер памяти объемом до 8–16 Мбайт, чего вполне хватает даже для печати сложных документов в разрешении до 1200 dpi, поскольку язык PCL весьма экономичен. Преимущество перед программной растеризацией имеется даже при печати исходно растровых изображений, поскольку в PCL предусмотрен эффективный алгоритм компрессии, ускоряющий передачу данных.
Рис. 2. Принтер с поддержкой языков PCL и/или PostScript.
Версия языка (PCL6), которая разрабатывалась HP в тесном сотрудничестве с Microsoft, характеризуется высокой скоростью преобразования данных из формата прикладного приложения в формат языка описания страниц и обеспечивает ускоренный возврат ответа в приложение, потому идеально подходит для SOHO-сегмента. Также PCL способен работать непосредственно с TrueType-шрифтами, которые применяются по умолчанию в среде Windows. PCL-принтеры снабжаются некоторым набором TrueType-шрифтов, которые «зашиваются» во внутреннюю память устройства. При печати драйвер напрямую передаёт текст на контроллер принтера, минуя стадию преобразования в изображение (рендеринг шрифта), за счёт чего повышается быстродействие печати. При использовании PCL показатели скорости и качества печати напрямую зависят от драйвера устройства, потому всякого рода несовместимости аппаратной и программной составляющих значительно влияют на количество ошибок при печати. По этому параметру PCL не может сравниться с универсальным PS. Тем не менее PCL на данный момент является, пожалуй, самым распространённым языком, применяемым в офисной и домашней среде.
Язык PCL совершенствовался с развитием возможностей принтеров.