[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по принтерам и печати


Виртуальные принтеры и фильтры форматирования

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

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

Фильтр форматирования состоит из двух компонентов:

Первый компонент - драйвер программы форматирования, не зависящий от устройства, pioformat. Второй компонент - программа форматирования, зависящая от устройства (существует менее 20 разновидностей таких программ). Код называется не зависящим от устройства, если его обработка не зависит от аппаратного обеспечения, например от конкретного физического принтера; в противном случае код называется зависящим от устройства. В фильтре форматирования базовой операционной системы именно зависящая от устройства программа форматирования содержит код, позволяющий учитывать все свойства конкретного физического принтера, включая поддерживаемые потоки данных, escape-последовательности и управляющие коды, уникальные для данного принтера или класса принтеров.

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


Figure print6 not displayed.

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

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

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

Закончив обработку файла, драйвер вызывает функцию restore. Функция restore выводит строку команд, предназначенных для восстановления значений атрибутов принтера по умолчанию из базы данных.

Более подробная информация о том, как программа форматирования принтера взаимодействует с процедурами форматирования, содержится в примере программы форматирования для принтера (Пример программы форматирования печати).


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]