Проект Фонда Linux

На этой странице содержится подробная информация о проекте технического написания, принятом для участия в Google Season of Docs.

Краткое описание проекта

Организация с открытым исходным кодом:
Фонд Linux
Технический писатель:
ПИЮШгоял16
Название проекта:
Учебное пособие и рекомендации по проектированию драйверов принтера/сканера в приложениях принтера
Длина проекта:
Стандартная продолжительность (3 месяца)

Описание Проекта

Обзор

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

Большинство современных принтеров общего назначения — это принтеры IPP, которые позволяют печатать без драйверов. Они рекламируют себя через DNS-SD, клиенты могут запрашивать информацию о своих возможностях через запросы IPP и используют стандартные форматы данных для заданий печати. Принтеры, не обеспечивающие эту функцию, обычно устаревшим или специальным принтерам требуют драйвера принтера.

Приложение принтера — это демон, который обнаруживает поддерживаемые принтеры и объявляет эти принтеры на локальном хосте как принтеры IPP Everywhere. Приложения принтера содержат программное обеспечение для печати входящих заданий на поддерживаемых принтерах, преобразования данных на родной язык принтера и предоставления информации о возможностях принтера клиентам по запросу. Приложение принтера даже имеет интерфейс веб-администрирования, как у настоящего сетевого принтера.

Как мы знаем, Linux переходит на изолированную упаковку (например, Snap), и печать также движется в этом направлении. В изолированном пакете мы не можем изменять содержимое каталога после его сборки. Наша система больше не является модульной. Мы не можем выбрать, какой пакет драйверов принтера установить. Приложения для принтеров решают эту проблему модульности и дают нам ту же свободу, что и в случае с драйверами принтеров.

Драйверы принтера и сканера в Snaps не только являются обязательным требованием для прикрепленного CUPS и прикрепленного приложения, они работают также на полностью классических системах, но в отличие от драйверов, упакованных в классическую упаковку, они не зависят от дистрибутива ОС. Вы создаете драйвер принтера Snap, и он работает на всех дистрибутивах ОС, на которых работает Snapd, нет необходимости упаковывать драйверы принтера для каждого дистрибутива (и их версии) независимо и сталкиваться с адом зависимостей. Другое преимущество заключается в том, что устаревшая концепция файлов PPD, поступающих с принтеров PostScript, больше не используется. Кроме того, связывая систему CUPS и драйвер принтера посредством IP-соединения вместо пересылки файлов в систему CUPS, и система CUPS, и приложение принтера могут находиться в отдельных изолированных пакетах.

Моей задачей будет описать, как разрабатывать драйверы для принтеров и сканеров для этой формы упаковки и как упаковывать их в Snaps. Цель состоит в том, чтобы помочь всем, кто пишет драйверы принтеров или сканеров, особенно производителям оборудования, в будущем делать это правильно.

Рабочий процесс приложения принтера можно резюмировать с помощью данной блок-схемы:

Основой для создания таких приложений принтера/сканера является PAPPL, библиотека, обеспечивающая большую часть функциональности для этого, а также фильтры-чашки, содержащие код, который будет использоваться для приложений принтера. Концепция все еще находится в стадии разработки, в основном в рамках Google Summer of Code в этом году, но 14 сентября, когда начинается период написания документации, период кодирования GSoC уже закончился, и именно тогда OpenPrinting понадобится учебное пособие.

Шаблон для драйверов принтера. Определение структуры данных задания.

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

Объявление функций i) Обратный вызов или инициализация Логическая функция, принимающая имя драйвера, данные драйвера и т. д. и соответствующим образом устанавливающая атрибуты драйвера. Если предоставленные сведения верны, в случае ошибки возвращается true и false.

ii) распечатать логическую функцию, принимающую задание, параметры задания и устройство. Он печатает файл и возвращает true в случае успеха и false в случае неудачи.

iii) Булева функция rendjob, принимающая задание, параметры задания и устройства. Он завершает задание и возвращает true в случае успеха и false в случае неудачи.

iv) Булева функция rendpage, принимающая задание, параметры задания, устройство и номер страницы. Он завершает страницу и возвращает true в случае успеха и false в случае неудачи.

v) Булева функция rstartjob, принимающая задание, параметры задания и устройства. Он запускает задание и возвращает true в случае успеха и false в случае неудачи.

vi) Логическая функция rstartpage, принимающая задание, параметры задания, устройство и номер страницы. Он запускает страницу и возвращает true в случае успеха и false в случае неудачи.

vii) rwrite логическую функцию, принимающую задание, параметры задания, устройство, номер строки и массив символов. Он записывает строку и возвращает true в случае успеха и false в случае неудачи. viii) дополнительные функции, такие как идентификация (помогает идентифицировать принтеры на основе выполняемого действия), сжатие (сжатие строки графики) и т. д.