• # CUPS, Mopria, AirPrint

    Posté par (site web personnel) . En réponse à la dépêche Imprimantes et libertés. Évalué à 10.

    Concernant la mise en réseau d'imprimantes, voici un petit point des différentes technologies.

    Généralité

    Du point de vue d'un logiciel qui lui envoie des données, une imprimante est caractérisée par deux choses :

    • les formats qu'elle accepte : PostScript, PDF, PCL 5, PCL 6, un format raster propriétaire... ;
    • les options d'impression : recto-verso ou pas, A5, A4 ou A3, couleur ou noir et blanc, etc.

    En réalité, jusqu'assez récemment, les imprimantes prenaient en entrée un fichier dans un format qui intégrait les options d'impression.

    Convertir un document à imprimer, avec des options d'impression données, en fichier dans un format accepté par l'imprimant et intégrant ces options, c'est précisément le boulot d'un pilote d'impression.

    Venons-en à la mise en réseau.

    Windows

    Je ne peux pas faire l'impasse sur les principes de mise en réseau d'une imprimante sous Windows, tellement il est amusant d'étudier un truc aussi mal conçu.

    Une imprimante mise en réseau sous Windows, c'est une file d'impression publiée et accessible en SMB. Et ça accepte... la même chose que l'imprimante elle-même, c'est à dire des fichiers dans un format pris en charge par l'imprimante et qui doit intégrer ses options d'impression. Le serveur d'impression ne gère pas les options d'impression et ne fait aucune conversion.

    Pour permettre aux clients de ne pas avoir à choisir et installer eux-même le pilote d'impression, le serveur d'impression peut également fournir ce pilote, sous forme d'un exécutable, en plusieurs versions, par exemple une pour Windows XP, une pour Windows Vista 32 bits, un pour Windows Vista 64 bits, etc.

    CUPS

    De son côté, CUPS, qui s'est imposé depuis des décennies sous *nix, peut rendre des imprimantes accessibles sous forme de services d'impression IPP.

    Une file d'impression IPP, ça accepte des fichiers à imprimer dans des formats standards, typiquement PostScript, PDF, PNG, JPEG ou texte brut. Et des options d'impression spécifiées à part, c'est à dire pas intégrées au fichier à imprimer.

    Par conséquent, l'impression sur une file d'impression IPP ne nécessite pas de pilote local. Tout ce qu'il faut savoir, c'est évidemment l'URL de la file d'impression. Les formats qu'elle accepte et ses options d'impression s'en déduisent en l'interrogeant.

    Lorsqu'un serveur CUPS reçoit une impression, par exemple un fichier PDF et des options particulières, il passe tout ça au pilote de l'imprimante correspondante, qui transforme ça en un fichier intégrant ces options dans acceptable par l'imprimante et lui envoie ça.

    Savoir qu'il y a une file d'impression disponible, c'est le boulot des annonces d'imprimantes. Il y a quelques années, ça se faisait par diffusion sur le réseau local. Aujourd'hui, ça se fait plutôt par annonces DNS-SD.

    Concrètement, pour un utilisateur, dès lors qu'on dispose d'un CUPS local, qui par défaut accepte les annonces d'imprimantes, il suffit d'être sur le réseau local pour voir apparaître les imprimantes qui y sont partagées et pouvoir imprimer dessus sans installer de pilote.

    Mopria et AirPrint

    Ces dernières années, les fabricants d'imprimante se sont enfin rendu compte qu'il était temps d'accepter des impressions dans un format standard et des options de façon séparée. Et de s'annoncer sur le réseau local.

    Concrètement, il y a deux implémentations de cette idée : Mopria et AirPrint. Le concept est le même : l'imprimante s'annonce en DNS-SD, et fournit une file IPP.

    Les conséquences sont très intéressantes pour l'utilisateur : comme avec CUPS, qui a en fait ouvert cette voie, dès lors qu'on dispose d'un client Mopria ou AirPrint, il suffit d'être sur un réseau où des imprimantes sous partagées pour les voir et pouvoir imprimer dessus sans installer de pilote.

    CUPS est un client Mopria et AirPrint, évidemment.

    Concrètement

    Avec une imprimante réseau récente, ça veut dire que vous n'avez pas besoin d'installer un serveur d'impression pour la partager sur votre réseau : elle fait très bien ça toute seule. Vous la connectez à votre réseau et vous pouvez imprimer dessus depuis un poste sous *nix avec CUPS. Et depuis un téléphone sous Android avec un client Mopria installé.