CUPS fournit un mécanisme qui permet d’envoyer des travaux d’impression aux imprimantes de manière standard. Les données d’impression vont à un planificateur qui envoie les travaux à un système de filtre qui convertit le travail d’impression dans un format que l’imprimante comprendra. Le système de filtrage transmet ensuite les données à un backend, un filtre spécial qui envoie les données d’impression à un périphérique ou à une connexion réseau. Le système fait un usage intensif de PostScript et du tramage des données pour convertir les données dans un format adapté à l’imprimante de destination.

CUPS offre un système d’impression standard et modulaire qui peut traiter de nombreux formats de données sur le serveur d’impression. Avant CUPS, il était difficile de trouver un système standard de gestion des imprimantes capable de s’adapter à la très grande variété d’imprimantes sur le marché utilisant leurs propres langages et formats d’impression. Par exemple, les systèmes d’impression System V et Berkeley étaient largement incompatibles entre eux, et ils nécessitaient des scripts et des solutions de contournement compliqués pour convertir le format de données du programme en un format imprimable. Souvent, ils ne pouvaient pas détecter le format de fichier envoyé à l’imprimante et ne pouvaient donc pas convertir automatiquement et correctement le flux de données. De plus, la conversion des données était effectuée sur des postes de travail individuels plutôt que sur un serveur central.

CUPS permet aux fabricants d’imprimantes et aux développeurs de pilotes d’imprimantes de créer plus facilement des pilotes qui fonctionnent nativement sur le serveur d’impression. Le traitement se fait sur le serveur, ce qui permet une impression en réseau plus facile qu’avec d’autres systèmes d’impression Unix. Avec Samba installé, les utilisateurs peuvent adresser des imprimantes sur des ordinateurs Windows distants, et des pilotes PostScript génériques peuvent être utilisés pour l’impression sur le réseau.

SchedulerEdit

Le scheduler CUPS met en œuvre le protocole d’impression Internet (IPP) sur HTTP/1.1. Une application d’aide (cups-lpd) convertit les requêtes du protocole Line Printer Daemon (LPD) en IPP. Le planificateur fournit également une interface web pour la gestion des travaux d’impression, la configuration du serveur et pour la documentation sur CUPS lui-même.

Un module d’autorisation contrôle quels messages IPP et HTTP peuvent passer par le système. Une fois que les paquets IPP/HTTP sont autorisés, ils sont envoyés au module client, qui écoute et traite les connexions entrantes. Le module client est également chargé d’exécuter les programmes CGI externes nécessaires pour prendre en charge les imprimantes, les classes, ainsi que le contrôle et l’administration de l’état des travaux sur le Web. Une fois que ce module a traité ses demandes, il les envoie au module IPP qui effectue la validation de l’identificateur de ressources uniformes (URI) pour empêcher un client de contourner les contrôles d’accès ou l’authentification sur le serveur HTTP. L’URI est une chaîne de texte qui indique un nom ou une adresse qui peut être utilisée pour faire référence à une ressource abstraite ou physique sur un réseau.

Le planificateur permet des classes d’imprimantes. Les applications peuvent envoyer des demandes à des groupes d’imprimantes dans une classe, permettant au planificateur de diriger le travail vers la première imprimante disponible dans cette classe. Un module de travaux gère les travaux d’impression, les envoyant aux processus de filtre et de backend pour la conversion finale et l’impression, et surveillant les messages d’état de ces processus.

Le planificateur CUPS utilise un module de configuration, qui analyse les fichiers de configuration, initialise les structures de données CUPS, et démarre et arrête le programme CUPS. Le module de configuration arrête les services CUPS pendant le traitement des fichiers de configuration, puis redémarre le service lorsque le traitement est terminé.

Un module de journalisation gère la journalisation des événements de l’ordonnanceur pour les fichiers journaux d’accès, d’erreurs et de pages. Le module principal gère les délais d’attente et la répartition des demandes d’E/S pour les connexions client, la surveillance des signaux, la gestion des erreurs et des sorties des processus enfants et le rechargement des fichiers de configuration du serveur selon les besoins.

Les autres modules utilisés par l’ordonnanceur comprennent :

  • le module MIME, qui gère un type MIME (Multipurpose Internet Mail Extensions) et une base de données de conversion utilisés dans le processus de filtrage qui convertit les données d’impression en un format adapté à un périphérique d’impression ;
  • un module PPD qui gère une liste de fichiers PPD (Postscript Printer Description) ;
  • un module de périphériques qui gère une liste de périphériques disponibles dans le système ;
  • un module d’imprimantes qui gère les imprimantes et les PPD dans CUPS.

Filtre systemEdit

CUPS permet aux utilisateurs d’envoyer différentes données au serveur CUPS et de faire convertir ces données dans un format que l’imprimante comprendra et pourra imprimer

CUPS peut traiter une variété de formats de données sur le serveur d’impression. Il convertit les données du travail d’impression dans le langage/format final de l’imprimante via une série de filtres. Il utilise les types MIME pour identifier les formats de fichiers.

Bases de données MIMEEdit

Après que le système CUPS ait attribué le travail d’impression au planificateur, il est transmis au système de filtres CUPS. Celui-ci convertit les données dans un format adapté à l’imprimante. Lors du démarrage, le démon CUPS charge deux bases de données MIME : mime.types qui définit les types de fichiers connus pour lesquels CUPS peut accepter des données, et mime.convs qui définit les programmes qui traitent chaque type MIME particulier.

Le fichier mime.types a la syntaxe suivante :

mimetype { | }

Par exemple, pour détecter un fichier HTML, l’entrée suivante serait applicable :

text/html html htm \

printable(0,1024) + (string(0,"<HTML>") string(0,"<!DOCTYPE"))

La deuxième ligne fait correspondre le contenu du fichier au type MIME spécifié en déterminant que le premier kilo-octet de texte du fichier contient des caractères imprimables et que ces caractères incluent des balises HTML. Si le modèle ci-dessus correspond, alors le système de filtrage marquerait le fichier comme le type MIME text/html.

Le fichier mime.convs a la syntaxe suivante :

source destination cost program

Le champ source désigne le type MIME qui est déterminé en recherchant le fichier mime.types, tandis que le champ destination énumère le type de sortie demandé et détermine quel programme doit être utilisé. Cette information est également extraite du fichier mime.types. Le champ coût aide à la sélection des ensembles de filtres lors de la conversion d’un fichier. Le dernier champ, programme, détermine le programme de filtrage à utiliser pour effectuer la conversion des données.

Quelques exemples:

text/plain application/postscript 50 texttopsapplication/vnd.cups-postscript application/vnd.cups-raster 50 pstorasterimage/* application/vnd.cups-postscript 50 imagetopsimage/* application/vnd.cups-raster 50 imagetoraster

Processus de filtrageEdit

Le processus de filtrage fonctionne en prenant des données d’entrée préformatées avec six arguments :

  1. l’identifiant du travail d’impression
  2. le nom de l’utilisateur
  3. le nom du travail
  4. le nombre de copies à imprimer
  5. les éventuelles options d’impression
  6. le nom du fichier (bien que cela soit inutile s’il a été redirigé depuis l’entrée standard).

Il détermine ensuite le type de données en entrée et le filtre à utiliser grâce à l’utilisation des bases de données MIME ; par exemple, les données d’image seront détectées et traitées par un filtre particulier, et les données HTML détectées et traitées par un autre filtre.

CUPS peut convertir les données fournies soit en données PostScript, soit directement en données matricielles. Si elles sont converties en données PostScript, un filtre supplémentaire est appliqué, appelé préfiltre, qui fait passer les données PostScript par un autre convertisseur PostScript afin qu’il puisse ajouter des options spécifiques à l’imprimante, comme la sélection de plages de pages à imprimer, le réglage du mode n-up et d’autres choses spécifiques au périphérique. Une fois le pré-filtrage effectué, les données peuvent être envoyées directement à un backend CUPS si vous utilisez une imprimante PostScript, ou elles peuvent être passées à un autre filtre comme Foomatic de linuxprinting.org. Elles peuvent également être transmises à Ghostscript, qui convertit le PostScript en un format intermédiaire CUPS-raster. Le format matriciel intermédiaire est ensuite transmis à un filtre final qui convertit les données matricielles dans un format spécifique à l’imprimante. Les filtres par défaut inclus avec CUPS comprennent :

  • raster vers PCL
  • raster vers ESC/P ou ESC/P2 (un langage d’imprimante Epson, maintenant largement remplacé par leur nouveau format ESC/P-Raster)
  • raster vers Dymo (une autre société d’imprimante).
  • raster à Zebra Programming Language ou ZPL (un langage d’imprimante Zebra Technologies)

A partir de 2009, d’autres langages propriétaires comme GDI ou SPL (Samsung Printer Language) sont pris en charge par Splix, un traducteur raster vers SPL.

Cependant, plusieurs autres alternatives peuvent s’intégrer à CUPS. HPLIP (anciennement connu sous le nom de HP-IJS) fournit des pilotes Linux+CUPS pour les imprimantes HP, Gutenprint (anciennement connu sous le nom de Gimp-Print) est une gamme de pilotes d’imprimante de haute qualité pour les imprimantes à jet d’encre (principalement), et TurboPrint pour Linux a une autre gamme de pilotes d’imprimante de qualité pour une large gamme d’imprimantes.

BackendsEdit

Les backends sont les moyens par lesquels CUPS envoie des données aux imprimantes. Il existe plusieurs backends disponibles pour CUPS : les ports parallèles, série et USB, l’impression virtuelle PDF cups-pdf, ainsi que les backends réseau qui fonctionnent via les protocoles IPP, JetDirect (AppSocket), Line Printer Daemon (« LPD ») et SMB.

Un nouveau mdns backend dans CUPS 1.4 fournit une découverte d’imprimante basée sur Bonjour (DNS-SD). Dans CUPS 1.6, la découverte et le partage d’imprimante Bonjour à l’aide d’Avahi est également prise en charge.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.