Projet Linux Foundation

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

Résumé du projet

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

Project description

Présentation

Les pilotes d'imprimante classiques constitués de filtres spécifiques à l'imprimante et de fichiers PPD (PostScript Printer Description, décrit les fonctionnalités de l'imprimante et les filtres à appeler) qui doivent être supprimés dans certains répertoires du système de fichiers sont remplacés par les applications d'impression, l'émulation d'une imprimante réseau IPP.

La plupart des imprimantes modernes à usage général sont des imprimantes IPP qui permettent d'imprimer sans pilote. Ils s'annoncent eux-mêmes via DNS-SD, les clients peuvent interroger les informations de capacité les concernant 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 imprimantes anciennes ou spécialisées nécessitent un pilote d'imprimante.

Une application d'imprimante est un daemon qui détecte les imprimantes compatibles et les annonce sur le serveur local en tant qu'imprimantes IPP Everywhere. Printer Applications contient le logiciel permettant d'imprimer les tâches entrantes sur les imprimantes compatibles, en convertissant les données dans la langue maternelle de l'imprimante et en fournissant aux clients, sur demande, des informations sur les fonctionnalités de l'imprimante. L'application Imprimante dispose même d'une interface d'administration Web, comme une véritable imprimante réseau.

Comme nous le savons, Linux passe aux emballages en bac à sable (Snap, par exemple) et l'impression progresse également dans cette direction. Dans un package en bac à sable, nous ne pouvons pas modifier le contenu du répertoire une fois celui-ci créé. Notre système n'est plus modulaire. Impossible de choisir le package de pilote d'imprimante à installer. Les applications d'imprimante répondent à 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 Snaps ne sont pas seulement indispensables pour un CUPS enfichable et une application ancrée, ils fonctionnent également sur des systèmes complètement classiques. À l'inverse, ils sont indépendants de la distribution du système d'exploitation, contrairement aux pilotes empaquetés classiques. Vous créez un pilote d'imprimante Snap qui fonctionne sur toutes les distributions de système d'exploitation qui s'exécutent Snap, sans avoir à empaqueter les pilotes de l'imprimante pour chaque distribution (et version de ces distributions) indépendamment et tomber dans l'enfer des dépendances. L'autre avantage est que le concept ancien de fichiers PPD provenant des imprimantes PostScript est abandonné. En outre, en coupant le système CUPS et le pilote de l'imprimante via une connexion IP au lieu de déposer des fichiers dans le système CUPS, le système CUPS et l'application imprimante peuvent tous deux se trouver dans des packages distincts dans un bac à sable.

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

Le workflow de l'application imprimante peut être résumé à l'aide de l'organigramme suivant:

À la base de la création de telles applications d'imprimante/de scanner, on trouve PAPPL, une bibliothèque fournissant la plupart des fonctionnalités à cet effet, mais aussi des cups-filters contenant du code à utiliser pour les Applications d'imprimante. Le concept est encore en cours de développement, principalement lors de l'événement Google Summer of Code de cette année. Mais à partir du 14 septembre, date de début de la période de rédaction de la documentation, la période de codage du GSoC est terminée. C'est à ce moment-là qu'OpenPrinting a besoin du tutoriel.

Modèle pour les pilotes d'imprimante Définir la structure des données JOB

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

Déclarer des fonctions i) Rappel ou init Fonction booléenne acceptant le nom du pilote, les données du pilote, etc., et définit les attributs du pilote en conséquence. Si les informations fournies sont appropriées, les valeurs "true" et "false" sont renvoyées en cas d'échec.

ii) imprimer une fonction booléenne acceptant la tâche, les options associées et l'appareil. Elle imprime un fichier et affiche "true" en cas de réussite et "false" en cas d'échec.

iii) rendjob Une fonction booléenne acceptant le job, les options associées à cette tâche et l'appareil. Elle met fin à la tâche et affiche "true" en cas de réussite et "false" en cas d'échec.

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

v) rstartjob Une fonction booléenne acceptant le job, les options associées et l’appareil. Il démarre la tâche et affiche "true" en cas de réussite et "false" en cas d'échec.

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

vii) rwrite Fonction booléenne acceptant le job, options pour la tâche, appareil, numéro de ligne et 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 l'identification (facilite l'identification des imprimantes en fonction de l'action fournie), la compression(compression d'une ligne d'éléments graphiques), etc.