Оптимизируем PPD-файлы::Журнал СА 1.2009
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6195
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6903
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4189
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2989
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3795
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3805
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6299
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3152
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3446
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7263
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10628
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12352
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13983
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9110
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7064
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5375
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4604
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3414
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3145
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3392
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3013
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Оптимизируем PPD-файлы

Архив номеров / 2009 / Выпуск №1 (74) / Оптимизируем PPD-файлы

Рубрика: Администрирование /  Продукты и решения

Иван Коробко ИВАН КОРОБКО

Оптимизируем PPD-файлы

Все основные настройки Post Script-драйверов хранятся в отдельных файлах. Рассмотрим их подробнее.

Перед запуском документа на печать необходимо выбрать принтер и определить ряд обязательных параметров. По умолчанию им уже присвоены значения. Однако не все они отвечают требованиям конечного пользователя. Например, на принтере формата А4 в большинстве случаев по умолчанию установлен формат бумаги letter, хотя необходим А4. В одном случае из ста может возникнуть необходимость распечатать на конверте. Возникает закономерный вопрос: как изменить значение по умолчанию и сократить предлагаемый список форматов бумаги до разумного (см. рисунок). Аналогичная ситуация возникает с качеством печати: зачем на обычном принтере печатать с качеством 1200 точек на дюйм, когда вполне достаточно 300 dpi или 600 dpi.

Список размеров бумаги в настройках драйвера принтера

Список размеров бумаги в настройках драйвера принтера

Все вышеуказанные параметры хранятся в текстовом файле с расширением PPD, который поставляется производителем принтера в комплекте драйверов.

Любой PostScript или PS-драйвер состоит из нескольких библиотек, входящих в комплект операционной системы. Несмотря на это они включаются в дистрибутив драйвера принтера для удобства его установки. В таблице 1 приведен список библиотек стандартного PS-драйвера Windows 2K. После установки все файлы драйвера копируются в папку C:\Windows\System32\spool\drivers\w32x86.

Таблица 1. Библиотеки стандартного PS-драйвера

Файл Название библиотеки Описание
PS5UI.DLL PostScript User Interface Интерфейс драйвера
PSCRIPT5.DLL PostScript Printer Driver PS-драйвер принтера
PSCRIPT.NTF Fonts Бинарный файл, содержащий в себе стандартные шрифты, поддерживаемые устройством
PSCRIPT.HLP Help Файл справки PS-драйвера
*.INF Information Файл-инсталлятор драйвера
*.PPD PostScript Printer Description Описание возможностей принтера: лотки, форматы бумаги, цветность и т.д.

В листинге 1 приведен стандартный INF-файл, обеспечивающий установку PS-драйвера для принтера. На практике производитель создает для драйвера графическую оболочку, которая видоизменяет его до неузнаваемости. Основной недостаток GUI-оболочки заключается в снижении работоспособности драйвера. Иногда ошибки программистов, создавшие графическую оболочку, могут привести к невозможности распечатать документ. Любую GUI-оболочку драйвера можно убрать (см. [1]).

Листинг 1. Шаблон INF-файла стандартного PS-драйвера

[Version]

Signature="$Windows CHICAGO$"

ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318}

Class=Printer

Provider="temp"


[Manufacturer]

%Company%=firm


[firm]

"Product Name" = **********, unique_identifier

 

[**********]

CopyFiles=@*****.PPD,PSCRIPT_NT       ; PPD-файл.

DataSection=PSCRIPT_DATA

DataFile=*****.PPD

Include=NTPRINT.INF     ; инсталляция NTPRINT.INF.

Needs=PSCRIPT.OEM ; инсталляция PSCRIPT.

 

[DestinationDirs]

DefaultDestDir=66000

[SourceDisksNames]

1 = "HP",,,""

[SourceDisksFiles]

HP1200.ppd = 1,,,,,,,11,3

[Strings]

Company = "Firm Name"

Что такое PPD-файл?

PostScript Printer Description или PPD-файл представляет собой текстовый файл в кодировке ASCII. С его помощью обеспечивается программная поддержка принтером различных размеров бумаги, двухсторонняя печать, разбор по копиям в случае необходимости, цветность, значения по умолчанию и другие характеристики.

Структура PPD-файла

Прежде чем приступить к чтению PPD-файла, необходимо сказать несколько слов о синтаксисе: любой файл состоит из строк, каждая из которых начинается с символа звездочки «*». Строка может состоять из нескольких подстрок. В этом случае строка не начинается с символа «*», комментарий начинается с «*%».

В общем виде строка строится по следующему шаблону:

*command:value

где command – зарезервированная команда (см. [2]), value – его значение.

Заголовок PPD-файла

В любом файле присутствует несколько обязательных команд, список и описание которых приведены в таблице 2.

Таблица 2. Обязательные команды PPD-файла

Название команды Значение Комментарий
*PPD-Adobe 4.3 Версия PPD. Сейчас используется версия 4.3, вышедшая 09 февраля 1996 года
*FileVersion 1.004 Версия файла
*FormatVersion 4.3 Версия PPD. Значение совпадает со значением параметра *PPD-Adobe
*LanguageEncoding ISOLatin1, Cyrillic Кодировка, используемая в драйвере. Для английского языка ISOLatin1, для русского – Cyrillic
*LanguageVersion English, Russian Язык, используемый в настройках драйвера
*Manufacturer HP Производитель оборудования
*ModelName HP LaserJet 1200 Series Модель принтера. Назначается производителем
*NickName HP LaserJet 1200 Series PS Локальное имя принтера, задаваемое при установке устройства мастером. В нем также обычно указывается версия драйвера. Длина не ограничена
*ShortNickName HP LaserJet 1200 Series PS Локальное имя принтера, задаваемое при установке устройства мастером. В отличие от *NickName длина ограничена 31-м символом
*Product (HP LaserJet 1200 Series) Уникальное Название продукта. По этом полю система определяет установлен ли драйвер в системе и предлагает один из вариантов действия: заменить, пропустить
*PSVersion (2014.108) 1 Версия драйвера
*PCFileName HP1200_7.PPD Название PPD-файла (этого файла). Значение *PCFileName состоит из 8 символов имени и 3- расширения (PPD). Первые 2 символа имени – производитель, а оставшиеся 6 – уникальный идентификатор модели

В листинге 2 приведен текст стандартного заголовка PPD-файла:

Листинг 2. Типичный заголовок PPD-файла

*PPD-Adobe: "4.3"

*% ======================================================

*% Printer Description File

*% Copyright 1992-2001 Hewlett-Packard Company

*%=======================================================

*% PPD for HP LaserJet 1200 Series

*%=======================================================

 

*% === PPD File Version Information ====

*FileVersion: "1.004"

*FormatVersion: "4.3"

*LanguageEncoding: ISOLatin1

*LanguageVersion: English

*PCFileName: "HP1200_7.PPD"

 

*% === Product Version Information ====

*ModelName: "HP LaserJet 1200 Series"

*ShortNickName: "HP LaserJet 1200 Series PS"

*NickName: "HP LaserJet 1200 Series PS"

*Product: "(HP LaserJet 1200 Series)"

*Manufacturer: "HP"

*PSVersion: "(2014.108) 1"

Необходимо отметить, что все вышеперечисленные параметры обязательны. Более того, порядок их взаимного расположения также имеет значение.

Решение типовых задач

Для удобства восприятия рассмотрим примеры решения задач, которые могут встретиться вам на практике. Приведу некоторые из них:

  •  Управление форматами бумаги.
  •  Назначение размера бумаги по умолчанию.

Управление форматом бумаги

За формат бумаги отвечает параметр PageSize. Список, задаваемый в блоке его описания, отображается конечному пользователю (см. рисунок). Рассмотрим подробнее фрагмент файла (см. листинг 3). Описание блока начинается со строки *?PageSize:, а заканчивается – *End. Сам блок при этом заключен в кавычки. Перед описанием списка необходимо зарезервировать пункты с помощью команды dict. В листинге 2 присутствует команда «17 dict». Это обозначает, что пользователь сможет выбрать один из 17 предложенных форматов бумаги. Допустим, необходимо обеспечить выбор одного из 2 форматов бумаги: A4 и Postcard (стандартный конверт). В этом случае требуется указать количество пунктов в выпадающем меню, равное двум: «2 dict». Каждый из пунктов меню описывается командой Dup и Put. Описание одного пункта списка выглядит следующим образом:

Dup [x y] string Put

где х и y – размеры в pt (point, пункт), string – текст, отображаемый в меню.

Например, размер для бумаги формата A4 – 210х297 мм. В файле указывается величина бумаги в миллиметрах, умноженная на коэффициент, равный 2,83 (1 mm = 2,8346 pt). После округления получим 595х842 pt (см. листинг 3). Таким образом, для описания 2 вышеупомянутых форматов бумаги после удаления описаний лишних форматов листинг 3 будет видоизменен (см. листинг 4).

Листинг 3. Описание поддерживаемых форматов бумаги

*?PageSize: "

save

currentpagedevice /PageSize get aload pop

2 copy gt {exch} if

(Unknown)

17 dict

dup [612 792] (Letter) put

dup [522 756] (Executive) put

dup [612 1008] (Legal) put

dup [595 842] (A4) put

dup [420 595] (A5) put

dup [297 420] (A6) put

dup [499 709] (ISOB5) put

dup [516 729] (B5) put

dup [612 936] (w612h936) put

dup [284 419] (Postcard) put

dup [419.5 567](DoublePostcard) put

dup [297 684] (Env10) put

dup [279 540] (EnvMonarch) put

dup [312 624] (EnvDL) put

dup [459 649] (EnvC5) put

dup [499 709] (EnvISOB5) put

dup [558 774] (w558h774) put

{ exch aload pop 4 index sub abs 5 le exch

5 index sub abs 5 le and

{exch pop exit} {pop} ifelse

} bind forall

= flush pop pop

restore

"

*End

Листинг 4. Описание поддерживаемых форматов бумаги

*?PageSize: "

save

currentpagedevice /PageSize get aload pop

2 copy gt {exch} if

(Unknown)

2 dict

dup [595 842] (A4) put

dup [284 419] (Postcard) put

{ exch aload pop 4 index sub abs 5 le exch

5 index sub abs 5 le and

{exch pop exit} {pop} ifelse

} bind forall

= flush pop pop

restore

"

*End

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

Листинг 5. Описатели формата бумаги

*PageRegion string1/string2: "

<</PageSize [х y] /ImagingBBox null>> setpagedevice"

*End

где string1 – сокращенное название формата бумаги, а string2 – полная форма. В большинстве случаев значения обеих строк равны. x и y – размер бумаги в дюймах.

Назначение размера бумаги по умолчанию

Размер бумаги по умолчанию назначается с помощью параметров *DefaultPageSize, *DefaultPageRegion, значения которых должны совпадать. Значение по умолчанию задается в одноименных блоках.

Рассмотрим изменение размера по умолчанию на примере параметра *DefaultPageSize. Отмечу, что назначение размера бумаги по умолчанию идет перед описанием форматов бумаги. Как и в описании формата бумаги, в ее размере задается только сокращенное название (см. листинг 6).

Листинг 6. Назначение формата бумаги по умолчанию

*OpenUI *PageSize: PickOne

*OrderDependency: 30 AnySetup *PageSize

*DefaultPageSize: Letter

*PageSize Letter/Letter: "

<</PageSize [612 792] /ImagingBBox null>> setpagedevice"

*End

……

Заключение

Достаточно подробно изучив вопрос коррекции списков и значений по умолчанию на примере форматов бумаги, читатель сможет с помощью этой статьи и документации (в случае необходимости) оптимизировать драйвер для своих целей.

  1. Коробко И. Сетевое сканирования с помощью МФУ от HP. //Системный администратор, №12, декабрь 2008 г. – С. 44-48.
  2. PostScript® language reference, third edition – http://www.adobe.com/products/postscript/pdfs/PLRM.pdf.
  3. PostScript Printer Description File Format Specification – http://www.adobe.com/devnet/postscript/pdfs/5003.PPD_Spec_v4.3.pdf.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru