Projet Linux Foundation

Cette page contient les détails d'un projet de rédaction technique accepté pour la Google Season of Docs.

Résumé du projet

Organisation Open Source:
The Linux Foundation
Rédacteur technique:
PIYUSHgoyal16
Nom du projet:
Tutoriel et consignes de conception pour les pilotes d'imprimante/de scanner dans les applications d'impression
Durée du projet:
Durée standard (trois mois)

Project description

Présentation

Les pilotes d'imprimante classiques, qui se composent de filtres spécifiques à l'imprimante et de fichiers PPD (Postscript Printer Description, qui décrivent les fonctionnalités de l'imprimante et les filtres à appeler) qui doivent être placés dans certains répertoires du système de fichiers, sont remplacés par des applications d'imprimante, qui émulent une imprimante réseau IPP.

La plupart des imprimantes polyvalentes modernes sont des imprimantes IPP qui permettent l'impression sans pilote. Ils diffusent des annonces via DNS-SD, les clients peuvent interroger leurs informations de capacité via des requêtes IPP et ils utilisent des formats de données standards pour les tâches d'impression. Les imprimantes qui ne proposent pas cette fonctionnalité, généralement les anciennes ou les imprimantes spécialisées, nécessitent un pilote.

Une application d'impression est un daemon qui détecte les imprimantes compatibles et les annonce sur l'hôte local en tant qu'imprimante IPP Anywhere. Le logiciel d'applications d'impression contient le logiciel permettant d'imprimer les travaux entrants sur les imprimantes compatibles et de convertir les données dans la langue maternelle de l'imprimante. Il fournit également des informations sur les capacités de l'imprimante aux clients, sur demande. L'application d'imprimante dispose même d'une interface d'administration Web, comme une imprimante réseau réelle.

Comme nous le savons, Linux migre vers un packaging en bac à sable (Snap, par exemple), et l'impression va également dans ce sens. Dans un package en bac à sable, nous ne pouvons pas modifier le contenu du répertoire une fois qu'il est compilé. Notre système n'est plus modulaire. Impossible de choisir le pilote d'imprimante à installer. Les applications d'imprimante résolvent ce problème de modularité et nous offrent la même liberté que dans le cas des pilotes d'imprimante.

Les pilotes d'imprimante et de scanner dans les Snaps ne sont pas seulement requis pour un CUPS et une application Snap, mais ils fonctionnent également sur des systèmes complètement classiques. Contrairement aux pilotes empaquetés de manière classique, ils sont indépendants de la distribution de l'OS. Vous créez un pilote d'imprimante Snap et il fonctionne sur toutes les distributions d'OS qui exécutent snapd. Vous n'avez donc pas besoin de créer des packages de pilotes d'imprimante pour chaque distribution (et version de celle-ci) indépendamment et de vous retrouver dans l'enfer des dépendances. L'autre avantage est que l'ancien concept de fichiers PPD provenant d'imprimantes PostScript est abandonné. En outre, en associant le système CUPS et le pilote de l'imprimante via une connexion IP au lieu de placer des fichiers dans le système CUPS, le système CUPS et l'application d'imprimante peuvent se trouver dans des packages distincts en bac à sable.

Ma tâche consistera à décrire comment concevoir les pilotes pour les imprimantes et les scanners pour ce type de packaging et comment les empaqueter dans des Snaps. L'objectif est d'aider les personnes qui écrivent des pilotes d'imprimante ou de scanner, en particulier les fabricants de matériel, à le faire correctement à l'avenir.

Le workflow de l'application d'imprimante peut être résumé par le diagramme suivant:

La base de la création de ces applications d'imprimante/de scanner est PAPPL, une bibliothèque fournissant la plupart des fonctionnalités à cet effet, mais aussi des filtres cups contenant du code à utiliser pour les applications d'imprimante. Le concept est toujours en cours de développement, principalement dans le Google Summer of Code de cette année. Toutefois, le 14 septembre, lorsque la période de rédaction de la documentation commencera, la période de codage du GSoC sera déjà terminée, et c'est à ce moment-là qu'OpenPrinting aura besoin du tutoriel.

Modèle pour les pilotes d'imprimanteDefinir la structure des données JOB

Déclarer un tableau de constantes pour les tailles multimédias

Déclarer des fonctions i) Rappel ou initialisation Fonction booléenne acceptant le nom du pilote, ses données, etc., et définissant les attributs du pilote en conséquence. Si les détails fournis sont appropriés, la méthode renvoie la valeur "true" et "false" en cas d'échec.

ii) Fonction booléenne d'impression acceptant la tâche, les options de la tâche et l'appareil. Il imprime un fichier et renvoie "true" en cas de réussite et "false" en cas d'échec.

iii) Fonction booléenne rendjob acceptant la tâche, les options de la tâche et l'appareil. Elle met fin à la tâche et renvoie la valeur "true" en cas de réussite et "false" en cas d'échec.

iv) Fonction booléenne rendpage acceptant la tâche, les options de la tâche, l'appareil et le numéro de page. Il termine la page et renvoie "true" en cas de réussite et "false" en cas d'échec.

v) Fonction booléenne rstartjob acceptant la tâche, les options de la tâche et l'appareil. Il démarre le job et renvoie la valeur "true" en cas de réussite et la valeur "false" en cas d'échec.

vi) Fonction booléenne rstartpage acceptant la tâche, les options de la tâche, l'appareil et le numéro de page. Il démarre la page et renvoie la valeur "true" en cas de réussite et "false" en cas d'échec.

vii) Fonction booléenne rwrite acceptant la tâche, les options de la tâche, l'appareil, le numéro de ligne et le tableau de caractères. Il écrit la ligne et renvoie "true" en cas de réussite et "false" en cas d'échec. viii) Fonctions facultatives telles que "identify" (aide à identifier les imprimantes en fonction de l'action fournie), "compress" (compresse une ligne de graphiques), etc.