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


Написание ФАЙЛА GPD PCL XL

Внимание

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

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

В этом разделе приведены общие сведения о написании ФАЙЛА PCL XL GPD, например о том, какие файлы должны включать GPD-файл, как включить PCL XL в файле GPD и порядок заказов команд PCL XL в потоке PCL XL.

Пакет драйверов Windows (WDK) содержит пример файла PCL XL GPD (p6sample.gpd) в каталоге \src\print\mini\mdw\vector\pcl6. (Этот ресурс может быть недоступен на некоторых языках и странах.)

Файлы для включения

Чтобы написать мини-driver на основе GPD, используйте директиву препроцессора *Include, чтобы указать следующие файлы GPD:

pclxl.gpd — содержит макросы для операторов PCL XL, чтобы можно было писать код GPD, который проще читать и понимать. Например, можно написать =BeginPage вместо <43>.

p6disp.gpd — содержит макросы для строк ресурсов, содержащихся в pcl5eres.dll и pclxl.dll.

p6font.gpd — содержит макросы для шрифтов, содержащихся в pclxl.dll.

pjl.gpd — содержит макросы для команд PJL.

Помимо предыдущих файлов, включите стандартные файлы GPD, stdnames.gpd и ttfsub.gpd.

В следующем примере показано, как эти файлы будут включены в GPD-файл.

*Include: stdnames.gpd
*Include: ttfsub.gpd
*Include: pclxl.gpd
*Include: p6disp.gpd
*Include: p6font.gpd
*Include: pjl.gpd

Включение поддержки PCL XL в файле GPD

Чтобы включить поддержку вектора PCL XL, необходимо задать только атрибут *Personality. Это делается следующим образом:

*Personality: = PERSONALITY_PCLXL

Константа PERSONALITY_PCLXL определена в stdnames.gpd.

Пример файла GPD, p6sample.gpd, включен в WDK, чтобы помочь разработчикам создавать мини-накопители PCL XL.

Упорядочение команд PCL XL

Порядок команд более важен в PCL XL, чем в PCL-5. Небольшая ошибка в потоке PCL не может повлиять на задание, но команды PCL XL допустимы только в определенных точках потока, поэтому любая ошибка в PCL XL (PCL-6) приводит к возникновению страницы ошибок XL. Например, невозможно отправить оператор BeginPage перед отправкой оператора BeginSession.

Поток PCL XL имеет форму, аналогичную следующей. (Показанная отступа используется только для подчеркивания точки, в которую эти операторы входят в пары.)

PJL commands
BeginSession
  OpenDataSource
    BeginPage
      <page data>
    EndPage
  CloseDataSource
EndSession
PJL commands

Поток PCL XL предшествует командам PJL. Поток PCL XL начинается с оператора BeginSession и заканчивается оператором EndSession. В этой паре операторов существует еще одна пара операторов: OpenDataSource и CloseDataSource. В этой паре операторов приходит одна или несколько пар операторов BeginPage/EndPage, одна пара для каждой страницы, отправляемой на принтер. Данные страницы, описывающие, как отрисовывается отдельная страница, закоблена парой операторов BeginPage/EndPage.

Подробные сведения обо всех операторах PCL XL см . в документации по классу протокола 2.0 .

Дополнительные сведения о ФАЙЛАх GPD PCL XL

В ФАЙЛАх XL GPD PCL имя атрибута *FontFormat, указывающее способ загрузки шрифтов, ограничено двумя значениями: HPPCL_OUTLINE и HPPCL_RES. Первое значение указывает, что Unidrv — скачать данные структуры TrueType. Второе значение указывает, что Unidrv — скачать данные мягкого шрифта растрового изображения.

IHV может уменьшить использование памяти принтера, ограничив количество загруженных шрифтов или ограничив количество символов, которые нужно скачать в заданном шрифте. Имена атрибутов *MinFontID и *MaxFontID используются для информирования Unidrv для скачивания мягких шрифтов, идентификаторы которых находятся в пределах диапазона, заданного этими значениями. Аналогичным образом имена атрибутов *MinGlyphID и *MaxGlyphID используются для ограничения количества глифов в заданном шрифте для скачивания в определенный диапазон.

Unidrv работает в соответствии с предположением, что каждый файл GPD содержит собственную матрицу дизера. Кроме того, рекомендуется использовать собственную матрицу дизера для каждого устройства. Матрица дизера указана в параметре *Feature: Dither настраиваемой функции.