Поделиться через


Порядок выполнения команд

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.

Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.

Команды принтера должны отправляться на оборудование принтера в понятном порядке. Для большинства имен команд, определенных на языке GPD, Unidrv знает, когда следует отправлять escape-последовательность команды на принтер. Имеются два исключения:

Команда выбора параметра

Команды конфигурации принтера

Для обоих этих типов команд необходимо указать порядок выполнения команд.

Порядок выполнения команд состоит из двух компонентов — имени раздела задания и порядкового номера. Драйвер Unidrv делит каждое задание печати на шесть разделов. Для каждого раздела Unidrv отправляет принтер командам, назначенным разделу, в указанной последовательности. Определены следующие разделы:

JOB_SETUP
Команды, назначенные разделу JOB_SETUP, отправляются один раз на задание. Они представляют собой первые команды, отправляемые при запуске нового задания. Эти команды отправляются из реализации функции DrvStartDoc в Unidrv.

DOC_SETUP
Команды, назначенные разделу DOC_SETUP, отправляются перед отправкой первой страницы документа. Команды отправляются из реализации функции DrvStartDoc в Unidrv. (Эти команды также отправляются после вызова приложения функции Сброса Win32. Команды в этом разделе не должны удалять скачанные сведения, такие как мягкие шрифты и шаблоны.)

PAGE_SETUP
Команды, назначенные разделу PAGE_SETUP, отправляются в начале каждой новой страницы перед началом рисования. Эти команды отправляются из реализации функции DrvStartPage в Юнидрве.

PAGE_FINISH
Команды, назначенные разделу PAGE_FINISH, отправляются в конце каждой страницы после завершения рисования. Эти команды отправляются из реализации функции DrvSendPage Unidrv.

DOC_FINISH
Команды, назначенные разделу DOC_FINISH, отправляются после отправки последней страницы документа. Команды отправляются из реализации функции DrvEndDoc в Unidrv. (Команды в этом разделе не должны удалять скачанные сведения, например мягкие шрифты и шаблоны.)

JOB_FINISH
Команды, назначенные разделу JOB_FINISH, отправляются один раз на задание. Они являются последними командами, отправленными при завершении задания. Эти команды отправляются из реализации функции DrvEndDoc в Unidrv.

В каждом из этих разделов команды выполняются в порядке, указанном их порядковым номером.

Чтобы указать раздел команды и порядковый номер, используйте атрибут *Order , описанный в разделе "Атрибуты команд". Формат будет следующим:

*Order: SectionName.SequenceNumber

Где SectionName является одним из JOB_SETUP, DOC_SETUP, PAGE_SETUP, PAGE_FINISH, DOC_FINISH или JOB_FINISH, а SequenceNumber — числовое значение.

Порядковые номера не должны быть последовательными, но каждое число, указанное в разделе, должно быть уникальным. Команды в разделе выполняются из одного с наименьшим порядковым номером до самого высокого. Например, следующие записи указывают, что параметры функций InputBin, PaperSize и Resolution назначаются разделу DOC_SETUP и отправляются в указанном порядке:

*Feature: InputBin
{
    *Option: Auto
    {
        *Name: "Auto Tray"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.50
            *Cmd: "<1B>(1<010014>"
        }
    }
    ...
}
*Feature: PaperSize
{
    *DefaultOption: Letter
    *Option: Letter
    {
        *Name: "Letter size"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.60
            *Cmd: "<1B>(g<0300>n<01>r"
        }
    }
    ...
}
*Feature: Resolution
{
    *DefaultOption: 360dpi
    *Option: 360dpi
    {
        *Name: "360 dpi x 360dpi"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.70
            *Cmd: "<1B>(d<020001>"
        }
    }
    ...
}