A propos de l’impression Samba CUPS

A propos de l’impression en général

Dans l’impression il y a plusieurs sous parties à prendre en compte :

  • Le document à imprimer, dans un format convenable pour l’impression.

  • Les métadonnées de l’impression (combien de copies, recto-verso ou non, etc).

  • Le transport, comment j’envoie le document.

Dans cette page on parlera indifféremment de photocopieur ou d’imprimante en considérant qu’on parle d’un périphérique d’impression évolué avec une connexion réseau.

Le spool d’impression

Pour éviter de bloquer la machine pendant que le document s’imprime, le document est passé à une queue d’impression, un spool, ou une file d’attente. Une fois le document dans le spool, l’application sur le poste client qui a généré le document pourra continuer à gérer d’autre activités.

Dans un système d’impression standard il y a plusieurs queues d’impression. Il peut y avoir une file d’impression en local, puis une file d’impression côté serveur d’impression, puis une file d’impression côté imprimante. Le serveur reçoit des travaux d’impression depuis plusieurs clients à la fois et les met dans une queue pour les envoyer séquentiellement à la queue suivante, la queue de l’imprimante. En effet les imprimantes ont désormais leur propre serveur d’impression intégré et on peut souvent imprimer directement dessus.

Il y a donc aussi un spool sur les imprimantes réseaux et les photocopieurs. A l’inverse, les imprimantes jet d’encre en USB sont pilotées directement par l’ordinateur auxquels elles sont connectées et n’ont pas forcément de file d’attente en interne. Dans ce cas c’est l’ordinateur qui sert de queue d’impression.

Une fois le job préparé (en GDI ou déjà transformé en PS/PCL), il doit être envoyé au spool suivant.

Les métadonnées

Les périphériques d’impression n’ont pas tous les mêmes capacités. Certains supportent l’impression recto-verso, d’autres l’agrafage, certains ont plusieurs bacs qui contiendront différents types de papier ou des feuilles de tailles différentes (A4, A3, etc).

Dans le cas des photocopieurs il existe beaucoup d’options différentes entre les modèles et même beaucoup d’options pour un même modèle. Dans ce dernier cas il est nécessaire de dire au pilote quels sont les options disponibles (nombre de bacs, tailles des papiers, etc). Beaucoup de pilotes sont capables d’interroger leurs photocopieur ou imprimantes pour savoir quels sont les options et s’autoconfigurer. Pour cela il arrive que le pilote d’impression utilise le protocole SNMP.

Les métadonnées contiennent entre autre le format de papier demandé : A5, A4, A3, letter, etc. Elles contiennent aussi le code département si des méthodes de refacturation analytique ou de comptage existent.

Pilotes universels

Les pilotes universels intègrent un moteur de rendu PS ou PCL et un ensemble d’informations à propos des différents modèles d’imprimante et de photocopieurs du constructeur.

Les différentes types de transports

Plusieurs protocoles existent pour transporter une tâche d’impression entre un client, un serveur, un photocopieur/imprimante :

  • Entre un client Windows et un serveur d’impression, le protocole le plus standard est SMB (Windows share, port 445 ou 139).

  • Entre un poste Linux et un serveur d’impression Linux, le protocole le plus standard est l”IPP, généralement rattaché au port 631.

  • Entre un poste client ou un serveur d’impression et une imprimante, ce sera du JetDirect (protocole assez simple développé par HP), généralement rattaché au port 9100.

Il existe d’autres protocoles plus anciens comme le LPD (port 515), mais qui ne sont plus vraiment utilisés.

Le projet CUPS implémente le support du protocole IPP ainsi que la gestion des queues d’impression, de pilotes, etc.

Dans le cas d’un serveur Samba-CUPS, le poste client a le choix d’envoyer son travail d’impression sur deux protocoles différents : IPP et SMB. En pratique on aura :

  • Les postes Windows utiliseront le transport SMB.

  • Les postes Linux utiliseront le transport IPP.

Anatomie d’un pilote d’impression

Les pilotes d’impression sur un serveur CUPS se présentent différemment sur un poste Windows et la plupart du temps ils ne seront qu’un fichier texte PPD. D’ailleurs, même si il y a le mot PostScript dedans, ce format est générique). Le fichier contient la définition des capacités de l’imprimante ainsi que le moteur de rastérisation à utiliser (PS, PCL, etc).

Quand on a un grand nombre d’options d’impression, il est pratique que celles-ci soient bien présentées, avec logique avec si possible une image du photocopieur pour mieux identifier les différentes options. Sous Windows cela est fourni dans le pilote d’impression par une DLL qui est exécutée par l’interface graphique du pilote d’impression.

Les différentes options contenues dans le fichier PPD ne disposent pas forcément d’informations pour bien présenter les différentes options d’impression, ce qui peut expliquer pourquoi on se trouve souvent avec une liste de menus déroulants pas très pratiques.

Sous Windows le pilote d’impression contient à la fois le moteur (PS, PCL, etc.), la définition des capacités du périphérique d’impression, ainsi qu’une DLL qui rajoute des options au panneau d’impression Windows.

Préparation du job côté serveur ou côté client

Historiquement dans les environnements Windows la transformation se faisait côté serveur, mais dans les versions plus récentes de Windows, elle se passe désormais par défaut du côté des clients car les postes clients ont désormais des CPU et des capacités mémoire capables et disponibles pour traiter de gros travaux d’impression.

Rastérisation finale

Les formats PS et PCL restent des formats vectoriels. Il peuvent intégrer des images au format JPEG ou RAW, mais ils sont avant tout des formats vectoriels comme le format PDF. Avant de faire l’impression finale le photocopieur devra faire la rasterization, c’est à dire transformer le fichier vectoriel en tableau de pixels, qui pourra alors être envoyé au mécanisme d’impression. La rasterization est un process qui n’est pas simple et qui peut nécessiter beaucoup de RAM et de CPU.

Follow me

Les systèmes de follow-me comme PaperCut ou Gestpage ont un système de configuration des queues d’impression locales sur les postes pour permettre de faciliter la gestion des sites distants sans serveur d’impression.

Format de papier

À faire

Parler des formats de papier

Impression et sécurité

Isoler les imprimantes du réseau

Les microgiciels des imprimantes et des photocopieurs sont rarement mis à jour, et les constructeurs ne fournissent pas non plus toujours de mises à jour. Les périphériques d’impression sont de nos jours des vrais serveurs, la plupart du temps sous Linux, avec des failles de sécurité béantes.

Isoler les périphériques d’impression sur un VLAN séparé permet d’éviter que la compromission d’une imprimante puisse être exploitée pour compromettre tout le réseau.

Installer des pilotes d’impression et considération de sécurité

Les pilotes d’impression fonctionnent avec des niveaux de droits assez élevés. Historiquement Windows a été très mauvais pour l’isolation des pilotes qui rastérisent des jobs d’impression. A l’époque NT4, les pilotes d’impression tournaient directement dans le Kernel Windows, et un plantage d’un pilote plantait la machine. Avec les années, l’isolation du gestionnaire des queues d’impression s’est améliorée, mais cela reste du code exécuté sur la machine. C’est pourquoi installer un pilote d’impression n’est pas un acte anodin et il faut valider que le pilote choisi n’est pas compromis.

Lors de la connexion d’une queue d’impression réseau, le client Windows va essayer de télécharger le pilote depuis le serveur d’impression, s’il ne l’a pas déjà. La correspondance entre les pilotes d’impression se fait uniquement sur le nom du pilote (par exemple HP Color LaserJet M4320) et sur un GUID particulier. Vu que l’acte d’installer un pilote n’est pas anodin, il faut autoriser au préalable le poste à télécharger le pilote avec une configuration GPO, sinon le poste refusera de télécharger automatiquement le pilote (si l’utilisateur est administrateur, il se verra quand même l’option de l’installer). Si le téléchargement est autorisé par GPO, le pilote pourra s’installer même si l’utilisateur est en droits restreints.

Intérêts du serveur d’impression

Le serveur d’impression permet de centraliser la configuration et l’inventaire des imprimantes et photocopieurs. Cela permet de faciliter globalement la gestion au quotidien de l’administrateur système.

L’usage de serveurs d’impression est toutefois pas toujours pertinent sur les petits sites distants qui ne disposent pas forcément d’un environnement serveur adéquat. Passer les impressions par le site du siège à travers les VPN est souvent trop lent. La seule option est alors l’impression directe.

De plus, les serveurs d’impression ont une forte tendance à bugger et à nécessiter le redémarrage du gestionnaire des files d’impression ou bien du serveur lui-même.

La configuration et le paramétrage des queues d’impression peut être effectué à l’aide d’un outil de gestion de configuration comme WAPT. C’est une option avantageuse qui peut grandement faciliter la gestion des impressions au quotidien.