IPP 1.1 | Операция Принтера Print-Job (Задание на печать)

IPP 1.1 | Операция Принтера Print-Job (Задание на печать)

Операция Принтера Print-Job (Задание на печать) — это ТРЕБУЕМАЯ операция, которая позволяет Клиенту (Client) отправить задание на печать (Print Job) только с одним документом (Document) и предоставить данные документа (Document data) (а не просто ссылку на данные). В Приложении C из RFC 8011 приведены предлагаемые шаги для обработки запросов на «создание заданий» (Job Creation) и их «операции«, а также «атрибуты шаблонов заданий» (Job Template attributes).

 

Следующие группы атрибутов предоставляются, как часть запроса операции Print-Job (задания на печать):

Natural Language and Character Set (Естественный язык и набор символов)

Natural Language and Character Set (Естественный язык и набор символов) — это атрибуты «attributes-charset» и «attributes-natural-language«, как описано в разделе 4.1.4.1 из RFC 8011. Принтер (Printer) ДОЛЖЕН копировать эти значения в соответствующие атрибуты статуса работы, описанные в разделе 5.3.19 и разделе 5.3.20 из RFC 8011.

Target (Цель)

Target (Цель) — это атрибут операции «printer-uri» (uri), который является целью этой операции, как описано в разделе 4.1.5 из RFC 8011.

Requesting User Name (Запрос имени пользователя)

Requesting User Name (Запрос имени пользователя) — это атрибут «requesting-user-name» (name(MAX)) ДОЛЖЕН быть предоставлен клиентом, как описано в разделе 9.3 из RFC 8011.

 

«job-name» (name(MAX))

«job-name» (name (MAX)): Клиент (Client) МОЖЕТ предоставить, а Принтер (Printer) ДОЛЖЕН поддерживать этот атрибут. Он содержит предоставленное клиентом имя задания. Если этот атрибут предоставляется клиентом, его значение используется для атрибута «job-name» (имя-задания) вновь созданного задания. Клиент МОЖЕТ автоматически включать любую информацию, которая поможет Конечному Пользователю (End User) различать его/её Задания (Jobs), например, название прикладной программы, а также информацию из Документа (Document), такую как имя документа, тема документа или имя исходного файла. Если этот атрибут не предоставлен Клиентом, Принтер (Printer) генерирует имя для использования в атрибуте «job-name» вновь созданного Задания (смотри Раздел 5.3.5 из RFC 8011.

«ipp-attribute-fidelity» (boolean)

«ipp-attribute-fidelity» (boolean): Клиент (Client) МОЖЕТ предоставить, а Принтер (Printer) ДОЛЖЕН поддерживать этот атрибут. Значение ‘true‘ указывает, что требуется полная точность предоставленных клиентом атрибутов и значений шаблона задания (Job Template); в противном случае принтер ДОЛЖЕН отклонить запрос Print-Job (задания на печать). Значение ‘false‘ указывает, что разумная попытка распечатать задание является приемлемой, и принтер ДОЛЖЕН принять запрос Print-Job (задание на печать). Если принтер не указан, предполагается, что это значение равно ’false’. Все принтеры ДОЛЖНЫ поддерживать оба типа обработки заданий. Смотри Приложение C из RFC 8011 для полного описания «ipp-attribute-fidelity» и его связи с другими атрибутами, особенно атрибутом принтера «pdl-override-supported«.

«document-name» (name(MAX))

«document-name» (name(MAX)): Клиент (Client) МОЖЕТ предоставить, а Принтер (Printer) ДОЛЖЕН поддерживать этот атрибут. Он содержит предоставленное клиентом название документа (Document name). Название документа МОЖЕТ отличаться от названия задания (Job name). Как правило, клиентское программное обеспечение автоматически предоставляет имя документа от имени конечного пользователя (End User), используя имя файла или имя, созданное приложением. Если этот атрибут указан, его значение может использоваться способом, определяемым каждой реализацией. Примеры включают следующее: распечатывается вместе с заданием (стартовый лист задания, украшения страниц и т. д.), Используется инструментами управления учетными записями или отслеживания ресурсов или даже сохраняется вместе с Документом в качестве атрибута уровня документа (Document-level).

«compression» (type2 keyword)

«compression» (type2 keyword): Клиент (Client) МОЖЕТ предоставить, а Принтер (Printer) ДОЛЖЕН поддерживать этот атрибут. Предоставленный клиентом атрибут операции «compression» идентифицирует алгоритм сжатия, используемый для данных документа. Существуют следующие случаи:

A. Если Клиент пропускает этот атрибут, Принтер ДОЛЖЕН предположить, что данные не сжаты, то есть Принтер следует приведенным ниже правилам, как если бы Клиент предоставил атрибут «compression» со значением ’none’.

B. Если Клиент предоставляет этот атрибут, но значение не поддерживается принтером, т. е. Это значение не является одним из значений атрибута «compression-supported» принтера, принтер ДОЛЖЕН отклонить запрос и вернуть сообщение где код- состояния ’client-error-compression-not-supported’. Смотри Раздел 4.1.7 для получения подробной информации о возврате неподдерживаемых атрибутов и значений.

C. Если Клиент предоставляет атрибут, а Принтер поддерживает значение атрибута, Принтер использует соответствующий алгоритм распаковки для данных Документа.

D. Если алгоритм декомпрессии (распаковки) завершается неудачно до того, как принтер возвращает ответ об операции, принтер ДОЛЖЕН отклонить запрос и вернуть код состояния ’client-error-compression-error’.

E. Если алгоритм декомпрессии (распаковки) завершается неудачно после того, как Принтер возвращает ответ операции, Принтер ДОЛЖЕН прервать работу и добавить значение ’compression-error’ в атрибут «job-state-reasons«.

F. Если алгоритм декомпрессии (распаковки) завершается успешно, данные документа ДОЛЖНЫ иметь формат, заданный атрибутом «document-format» задания, если он указан (см. Определение атрибута операции «document-format» ниже).

«document-format» (mimeMediaType)

«document-format» (mimeMediaType): Клиент (Client) МОЖЕТ предоставить, а Принтер (Printer) ДОЛЖЕН поддерживать этот атрибут. Значение определяет формат предоставленных данных документа. Существуют следующие случаи:

  • Если Клиент не предоставляет этот атрибут, Принтер предполагает, что данные Документа имеют формат, определенный атрибутом «document-format-default» Принтера (т. е. Принтер следует приведенным ниже правилам, как если бы Клиент предоставил «document-format» со значением, равным значению принтера по умолчанию).
  • Если Клиент предоставляет этот атрибут, но это значение не поддерживается принтером, т. е. это значение не является одним из значений атрибута «document-format-supported» Принтера, Принтер ДОЛЖЕН отклонить запрос и вернуть код состояния ’client-error-document-format-not-supported’.
  • Если Клиент предоставляет этот атрибут и его значение равно «application/octet-stream» (т. е. для автоматического определения; смотри Раздел 5.1.10.1 из RFC 8011), и этот формат не является одним из форматов документа, которые принтер может автоматически определять и эта проверка происходит до того, как принтер возвращает ответ об операции, затем принтер ДОЛЖЕН отклонить запрос и вернуть код состояния ’client-error-document-format-not-supported’.
  • Если Клиент предоставляет этот атрибут и значение поддерживается Принтером, Принтер может интерпретировать данные Документа.
  • Если интерпретация данных документа не удалась до того, как принтер вернет ответ об операции, принтер ДОЛЖЕН отклонить запрос и вернуть код состояния ’client-error-document-format-error’.
  • Если интерпретация данных документа не удалась после того, как принтер вернул ответ операции, принтер ДОЛЖЕН прервать задание и добавить значение ’document-format-error’ в атрибут Задания «job-state-reasons«.

«document-natural-language» (naturalLanguage)

«document-natural-language» (naturalLanguage): Клиент (Client) МОЖЕТ предоставить, а Принтер (Printer) ДОЛЖЕН поддерживать этот атрибут. Значение задает естественный язык содержимого документа для тех форматов документа, которые требуют указания естественного языка для правильного отображения документа.

 

«job-k-octets» (integer(0:MAX))

«job-k-octets» (integer(0:MAX)): Клиент (Client) МОЖЕТ предоставить, а Принтер (Printer) ДОЛЖЕН поддерживать этот атрибут. Предоставленный клиентом атрибут операции «job-k-octets» идентифицирует общий размер документа (ов) в представляемых K-октетах (полную семантику смотри в  разделе 5.3.17.1 из RFC 8011). Если Клиент предоставляет атрибут, а Принтер поддерживает атрибут, значение атрибута используется для заполнения атрибута «job-k-octets» Job Description (Описание задания).

Для этого атрибута и следующих двух атрибутов («job-impressions» и «job-media-sheets«), если клиент предоставляет атрибут, но Принтер не поддерживает атрибут, Принтер игнорирует предоставленное Клиентом значение. Если Клиент предоставляет атрибут, а Принтер поддерживает атрибут, и значение находится в пределах диапазона соответствующего атрибута «xxx-supported» Принтера, Принтер (Printer) ДОЛЖЕН использовать это значение для заполнения атрибута «xxx» Задания. Если Клиент предоставляет атрибут, а Принтер поддерживает атрибут, но значение выходит за пределы диапазона соответствующего атрибута «xxx-supported» Принтера, Принтер ДОЛЖЕН скопировать атрибут и его значение в группу Unsupported
Attributes (Неподдерживаемые атрибуты), отклонить запрос, и вернуть код состояния ’client-error-attributes-or-values-not-supported’. Если клиент не предоставляет атрибут, принтер ДОЛЖЕН заполнить соответствующий атрибут задания, если он поддерживает атрибут и способен рассчитать или распознать правильное значение.

«job-impressions» (integer(0:MAX))

«job-impressions» (integer(0:MAX)): Клиент (Client) МОЖЕТ предоставить, а Принтер (Printer) ДОЛЖЕН поддерживать этот атрибут. Предоставленный клиентом атрибут операции «job-impressions» определяет общий размер числа показов отправляемых документов (смотри Раздел 5.3.17.2 из RFC 8011 для полной семантики).

Смотрите последний абзац под «job-k-octets«.

«job-media-sheets» (integer(1:MAX))

«job-media-sheets» (integer(1:MAX)): Клиент (Client) МОЖЕТ предоставить, а Принтер (Printer) ДОЛЖЕН поддерживать этот атрибут. Предоставленный клиентом атрибут операции «job-media-sheets» идентифицирует общее количество медиа-листов, которые будут созданы для этого задания (смотри Раздел 5.3.17.3 из RFC 8011 для полной семантики).

Смотрите последний абзац под «job-k-octets«.

 

Клиент (Client) МОЖЕТ предоставить набор Job Template attributes (атрибутов шаблона задания), как это определено в разделе 5.2. Если Клиент не предоставляет никаких атрибутов шаблона задания в запросе, Клиент ДОЛЖЕН опустить Группу 2, а не отправлять пустую группу. Однако принтер ДОЛЖЕН быть в состоянии принять пустую группу.

 

Клиент (Client) ДОЛЖЕН предоставить данные Документа для обработки.

Самый простой запрос Print-Job состоит только из атрибутов операции «attributes-charset» и «attributes-natural-language«, целевого атрибута операции «printer-uri» и данных документа. В этом простом случае Принтер:

  1. Создает новое задание, содержащее один документ
  2. Сохраняет сгенерированное имя задания в атрибуте «job-name» на запрашиваемом естественном языке и кодировке (смотри Раздел 4.1.4.1 из RFC 8011) (если они поддерживаются; в противном случае используется стандартный язык и кодировка принтера по умолчанию)
  3. Во время обработки задания использует соответствующие атрибуты значений по умолчанию для поддерживаемых атрибутов шаблона задания (Job Template attributes), которые не были предоставлены клиентом в качестве атрибута IPP или встроенных инструкций в данных документа.

 

Принтер (Printer) ДОЛЖЕН вернуть Клиенту (Client) следующие наборы атрибутов, как часть ответа операции Print-Job (задания на печать):

Natural Language and Character Set (Естественный язык и набор символов)

Natural Language and Character Set (Естественный язык и набор символов): атрибуты «attributes-charset» и «attributes-natural-language«, как описано в Разделе 4.1.4.2 из RFC 8011.

Status Message (Сообщение о статусе)

Status Message (Сообщение о статусе): В дополнение к ТРЕБУЕМОМУ коду состояния, возвращаемому в каждом ответе, ответ МОЖЕТ включать в себя операцию «status-message» (text(255)) и/или «detailed-status-message» (text(MAX)) атрибут, как описано в Приложении B и Разделе 4.1.6 из RFC 8011. Если Клиент предоставляет неподдерживаемые или конфликтующие атрибуты или значения шаблона задания, Принтер ДОЛЖЕН отклонить или принять запрос Print-Job (задания на печать) в зависимости от того, предоставил ли клиент значение ’true’ или ’false’ для операции «ipp-attribute-fidelity» приписывать. Смотри Руководства разработчика [RFC 3196 #] [PWG5100.19] для получения инструкций по обработке запросов на создание заданий.

 

Смотри Раздел 4.1.7 из RFC 8011 для получения подробной информации о возврате неподдерживаемых атрибутов.

Значение «ipp-attribute-fidelity«, предоставленное клиентом, не влияет на то, какие атрибуты принтер возвращает в этой группе. Значение «ipp-attribute-fidelity» влияет только на то, принята или отклонена операция Print-Job (задание на печать). Если задание принято, клиент может запросить задание, используя операцию Get-Job-Attributes, запрашивая неподдерживаемые атрибуты, которые были возвращены в ответе Print-Job, чтобы увидеть, какие атрибуты были проигнорированы (не сохранены в задании) и какие атрибуты хранились с другими (замещенными) значениями.

 

«job-id» (integer(1:MAX))

«job-id» (integer(1:MAX)) (идентификатор задания): принтер ДОЛЖЕН вернуть идентификатор задания в ТРЕБУЕМОМ атрибуте задания «job-id«. Клиент использует этот атрибут «job-id» в сочетании с атрибутом «printer-uri«, который используется в запросе Print-Job (Задание на печать) при управлении операциями Job (Задание) на Принтере.

«job-uri» (uri)

«job-uri» (uri): Принтер ДОЛЖЕН вернуть URI Задания, возвращая содержимое ОБЯЗАТЕЛЬНОГО атрибута задания «job-uri«.

«job-state» (type1 enum)

«job-state» (type1 enum) (задание-состояние): Принтер ДОЛЖЕН возвращать ТРЕБОВАННЫЙ атрибут задания «job-state«. Значение этого атрибута вместе со значением атрибута «job-state-reasons» является «snapshot» (моментальным снимком) состояния нового задания, когда принтер возвращает ответ.

«job-state-reasons» (1setOf type2 keyword)

«job-state-reasons» (1setOf type2 keyword): Принтер ДОЛЖЕН возвратить ОБЯЗАТЕЛЬНЫЙ для задания атрибут «job-state-reasons» (причины-состояния-задания).

«job-state-message» (text(MAX))

«job-state-message» (text(MAX)): Принтер ДОЛЖЕН вернуть РЕКОМЕНДУЕМЫЙ заданием атрибут «job-state-message«. Если принтер поддерживает этот атрибут, он ДОЛЖЕН быть возвращен в ответе. Если этот атрибут не возвращается в ответе, клиент может предположить, что атрибут «job-state-message» не поддерживается и не будет возвращен в последующем запросе Задания.

«number-of-intervening-jobs» (integer(0:MAX))

«number-of-intervening-jobs» (integer(0:MAX)): Принтер ДОЛЖЕН вернуть РЕКОМЕНДУЕМЫЙ заданием атрибут «number-of-intervening-jobs«. Если Принтер поддерживает этот атрибут, он ДОЛЖЕН быть возвращен в ответе. Если этот атрибут не возвращается в ответе, Клиент может предположить, что атрибут «number-of-intervening-jobs» не поддерживается и не будет возвращен в последующем запросе задания.


 

Примечание! Поскольку любая информация о состоянии Принтера, которая влияет на состояние Задания, отражается в атрибутах «job-state» и «job-state-reasons«, достаточно вернуть только эти атрибуты и никаких дополнительных атрибутов состояния Принтера.

Примечание! Самый простой ответ состоит только из атрибутов операции «attributes-charset» и «attributes-natural-language«, а также атрибутов Задания: «job-uri«, «job-id» и «job-state«. В этом простейшем случае код состояния ’successful-ok’ и отсутствует атрибут операции «status-message» или «detailed-status-message«.

 

Ссылки на документы

Читать полную версию документа на русском языке RFC 8011 | Протокол интернет-печати (IPP)/1.1: модель и семантика

Скачать оригинальный документ на английском языке RFC 8011 PDF — Internet Printing Protocol/1.1: Model and Semantics

IPP 1.1 | Операции Принтера

IPP 1.1 | Операции