  Printing-HOWTO
  Grant  Taylor  <gtaylor+pht@picante.com>,  traduction  Jean-
  Michel        VANSTEENE        <J.M.Vansteene@frcl.bull.fr>,
  <vanstee@worldnet.fr>
  12 Novembre 1997

  11..  IInnttrroodduuccttiioonn

  Le  Printing-HOWTO devrait  contenir  tout ce  dont  vous avez  besoin
  pour mettre  en   place   les    services   d'impression  sur    votre
  systeme  Linux.  Comme  vous  vous  en  doutez  peut-etre, ceci est un
  tantinet plus complique  que le ``simple''  _c_l_i_c  du  monde  _M_i_c_r_o_s_o_f_t
  et _A_p_p_l_e, mais  en   contre-partie,    c'est beaucoup  plus     souple
  et  certainement   plus   facile      a   administrer    pour      les
  grands reseaux.

  Ce document est  organise de facon  a ce que la lecture de la premiere
  moitie suffise  a la mise en place d'un systeme     qui    ``tourne''.
  Les    choses   plus  obscures voire particulieres sont    concentrees
  dans la   deuxieme moitie. Vous pouvez vous referer  a  la  table  des
  matiere pour les details.

  Depuis  la  version  3.x, ce  document a ete completement reecrit   et
  un    certain    nombre     d'informations   ont  ete  retirees.    La
  principale  raison est  que l'ancien document faisait  une soixantaine
  de  pages   et  contenait  pas  mal  de  parties  redondantes    voire
  inutiles.   Ainsi  fait,    la sanction est tombee: vous trouverez ici
  un document sensiblement plus  concis.  S'il  manque  une  information
  qui   vous   semble   importante,   nous    vous  encourageons  soit a
  parcourir l'ancien HOWTO,  soit  a  nous  envoyer  un   courrier  nous
  proposant  d'ajouter ladite   information.   L'adresse du site  de  G.
  Taylor est http://www.picante.com/~gtaylor/pht/.

  En vous souhaitant comme  a l'accoutumee, moulte satisfaction dans vos
  recherches    et   pleine  reussite  dans  la   configuration de votre
  imprimante  (Note : Desole  : ca  vouloir   dire   nous  esperer   toi
  reussir configurer imprimante :-)).

  Les   HOWTOs  francais  peuvent etre trouves  en France, notamment sur
  les sites

             ftp.lip6.fr             (/pub/linux/french/docs/HOWTO)
             ftp.univ-angers.fr      (/pub/linux/french/docs/HOWTO)

  11..11..  HHiissttoorriiqquuee

  Ce   document  est   le  troisieme    du   nom,  c'est   a  dire    la
  troisieme version  completement revue (en esperant que sa    structure
  se  stabilise un    peu).   L'histoire  du  PHT  peut etre  brievement
  decrite ainsi :

  J'ai  commence    a    ecrire    le premier   HOWTO    en reponse a un
  nombre assez consequent de  questions  qui  avaient  ete  posees  dans
  comp.os.linux.   C'etait  en   fait  une     FAQ   que  j'avais nommee
  HOWTO.   Cette   version etait disponible uniquement en ASCII.

  Le  PHT a  ensuite ete  regroupe  avec  la FAQ  de   LPD  ecrite   par
  Brian    McCauley   <B.A.McCauley@bham.ac.uk>,  nous avons    continue
  ce document   de   concert  pendant  a peu  pres    deux   ans.   Nous
  avons   alors    ajoute a notre document  les  travaux  de Karl   Auer
  <Karl.Auer@anu.edu.au>.  Cette version du  PHT  etait  disponible   en
  TeXInfo, PostScript, HTML, ASCII et Info.

  Apres  avoir   un peu laisse le  PHT vieillir pendant une bonne annee,
  sans avoir pu trouver quelqu'un souhaitant le maintenir,  j'ai  decide
  de   le   reecrire.   Cette   version    est  conforme au ``standard''
  Linuxdoc-SGML.

  11..22..  CCooppyyrriigghhtt

  Ce document est  sous Copyright (C)  1996  par   Grant  Taylor.   Vous
  pouvez  le  copier  et   le  distribuer   tel  quel   comme   vous  le
  souhaitez.    Par contre aucune  modification  ne  peut   etre   faite
  sans  le  consentement    de  l'auteur  sauf  si   vous   supprimez du
  document   toute   marque  qui  lui    fait  reference,   ainsi  qu'au
  traducteur    et  a toutes  les personnes  citees   (y     compris les
  adresses   de     courrier electronique) et que vous  le  diffusez  en
  votre  nom.   L'auteur  (et  le  traducteur) ne sauraient etre   tenus
  responsables de propos qui  ne sont pas les leurs.

  Le     coordinateur     des    HOWTOs   est       actuellement    Greg
  Hankins   <gregh@sunsite.unc.edu>.    Veuillez  quand    meme  ne  pas
  encombrer  sa boite aux lettres de questions sauf  de  la  plus  haute
  importance.   En  France,  le       coordinateur      est         Eric
  Dumas     <dumas@freenix.fr, dumas@Linux.EU.Org>.

  22..  QQuu''eesstt--ccee qquuee ll''iimmpprreessssiioonn ssoouuss UUNNIIXX ??

  Je me permets de consacrer un petit chapitre au B.A.BA de l'impression
  sous  UNIX  et   donc  sous Linux. Les gourous  trouveront ce chapitre
  inutile et je les invite  a   passer   au  suivant.    Les   debutants
  trouveront  l'information  suffisante,  je  l'espere, pour  comprendre
  comment  les  donnees   sont     vehiculees    vers     leur     chere
  imprimante.

  La  facon   la plus simple d'imprimer sous   Unix (et donc  Linux) est
  d'envoyer les donnees directement au pilote de l'imprimante.

        ls >/dev/lp0

  Cette methode  a neanmoins un gros inconvenient : elle  ne  tire   pas
  parti des caracteristiques  multi-taches du systeme d'exploitation. En
  effet  vous devrez attendre que le tampon de l'imprimante ait  absorbe
  toutes les donnees pour  pouvoir continuer a travailler.

  Une   meilleure    methode     consiste    a   utiliser    un    spool
  d'impression,   dont   le   role   est   de   collecter  les   donnees
  temporairement  dans  des fichiers afin  de  les envoyer, en tache  de
  fond, a l'imprimante.  Lorsque  plusieurs fichiers sont  soumis,   ils
  seront   imprimes dans  l'ordre  de soumission (premier entre, premier
  sorti). La zone  de spool est donc  bien une ffiillee.  On  dit  que   les
  travaux  sont   dans     la ffiillee  dd''iimmpprreessssiioonn.      Cette methode met
  en jeu  deux acteurs : le client  (_l_p_r)  permet  a  tout   utilisateur
  de  soumettre  des    travaux    d'impression.  Le serveur quant a lui
  (_l_p_d) les prend en charge en tache de fond.  Il recupere  les  donnees
  dans le spool ainsi que des informations   qui   lui  sont necessaires
  pour    l'impression proprement dite.

  Nous  verrons dans  un chapitre  un  peu plus loin comment  tout  cela
  interagit.   Arretons-nous  la  pour  le  moment et penchons-nous deja
  sur  le plus important:  les peripheriques du systeme.

  33..  CCoommmmeenntt IImmpprriimmeerr

  Si  le   demon   d'impression de  votre  machine    est   correctement
  configure, vous pouvez lire le  _P_r_i_n_t_i_n_g_-_U_s_a_g_e _H_O_W_T_O

  <http://www.loria.fr/services/linux/HOWTOFRENCH/Printing-Usage-
  HOWTO/Printing-Usage-HOWTO.html

  qui  traite plus  particulierement  de   la  commande  lpr  et  de  la
  manipulation des files d'impression.

  Si,  par   contre, vous venez  d'installez un nouveau systeme  (un qui
  marche,   quoi...)  vous   souhaitez   certainement    configurer  les
  services  d'impression.   Restez sur cette chaine :-) ne zappez pas et
  allons-y.

  33..11..  LLeess ppeerriipphheerriiqquueess dd''iimmpprriimmaanntteess ddaannss llee ssyysstteemmee

  Les imprimantes  sont  souvent rattachees  (surtout   les  imprimantes
  personnelles)   au   port   parallele.   Elles  sont  gerees  par  les
  peripheriques de type /dev/lp?.

  Si  vous  disposez   d'une imprimante  serie,  vous  utiliserez   bien
  sur    /dev/ttyS?   (ou   /dev/ttys?),    et   non    pas  /dev/lp? ni
  /dev/cua?.   Le majeur de /dev/ttyS?  est 4, celui de /dev/cua? est 5.

  33..22..  LLee ppeerriipphheerriiqquuee llpp

  33..22..11..  NNooyyaauuxx aanntteerriieeuurrss aa 22..11..3322

  Si  vous  utilisez une  imprimante parallele, vous devez disposer d'un
  noyau    Linux   compile       avec    les    gestionnaires         de
  peripheriques d'impression lp.  Verifiez-le a l'aide de la commande

             cat /proc/devices

  qui  doit  vous montrer un ou plusieurs  peripheriques lp.  De plus le
  repertoire    /dev  doit  comporter  la     liste   des  peripheriques
  /dev/lp0, /dev/lp1, ...

  Sur  un  systeme    de type XT,   LPT1:  correspond a /dev/lp0 (majeur
  6,  mineur  0),  alors  que   sur un  AT,  LPT1: correspond a /dev/lp1
  (majeur 6, mineur 1).

            Nom     Majeur  Mineur  Port
            lp0     6       0       0x3bc
            lp1     6       1       0x378
            lp2     6       2       0x278

  Le  port  parallele   peut  etre gere par le  pilote du  noyau de deux
  manieres.  D'une part  par polling  (scrutation), d'autre  part    par
  interruption.     La   methode de    gestion  par interruption est  en
  theorie plus  efficace, puisque le gestionnaire n'est  sollicite   par
  une  interruption qu'au    moment ou un travail est   a effectuer.  En
  pratique,  il  semble que  ce  soit  dependant  de  la  machine.  Dans
  beaucoup de cas, il n'y  a pas tant de difference que cela.

  Un   certain   nombre   d'utilisateurs   se sont    plaints  que  leur
  port  parallele  bidirectionnel    n'etait   pas  detecte   lorsqu'ils
  utilisent  un  vieux  cable unidirectionnel. Verifiez que le votre est
  recent.

  Vous ne pourrez pas utiliser les pilotes plip et  lp  en  meme  temps.
  Vous   pouvez  cependant  charger  l'un ou l'autre soit  manuellement,
  soit   par kerneld   version  2.x (et   noyaux  au   moins 1.3.x).  En
  configurant     les     interruptions       avec    attention,    vous
  pourrez theoriquement  utilisez plip   sur  un    port   et  lp    sur
  l'autre.   Quelqu'un  l'a fait en  modifiant les pilotes...  J'attends
  avec  impatience que quelqu'un    me dise comment    faire   a  partir
  d'une  simple et ingenieuse commande.

  Un petit utilitaire appele  tunelp vous permet, sous  le compte super-
  utilisateur,      de     regler    les         interruptions      d'un
  peripherique  lp, le mode de fonctionnement du pilote, la frequence de
  scrutation, et plein d'autres options...

  Avec  LILO  et  LOADLIN,  vous  pouvez  configurer   les  adresses  et
  interruptions utilises par le pilote.

            Syntaxe:      lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]

            Par exemple:   lp=0x378,0   ou   lp=0x278,5,0x378,7 **

  (**) le  port lp0 en 0x3bc n'est  plus utilise  sur les PC recents.

  Si     cette      caracteristique   est     utilisee,    vous    devez
  specifier tous  les ports que vous  souhaitez utiliser, il n'y  a  pas
  de  valeurs  par defaut. Vous  pouvez invalider un pilote en indiquant
  lp=0.

  Lorsque le pilote est charge en tant que module  (version noyau  2  et
  1.3.x),    il   est  egalement  possible    de  specifier  les  lignes
  d'interruption    utilisees        soit     dans   le          fichier
  /etc/conf.modules,  soit   sur  la   ligne  de  commande de insmod  en
  utilisant   la      meme    syntaxe.      Les      parametres     sont
  io=port0,port1,port2  et    irq=irq0,irq1,irq2.    Lisez  les mages de
  manuel de insmod pour plus d'information.

  Le   code source   du pilote   de  port  parallele   se  trouve   dans
  /usr/src/linux/drivers/char/lp.c.

  33..22..22..  ppaarrppoorrtt..  NNooyyaauuxx  ppoosstteerriieeuurrss   aa 22..11..3322:: llee ppeerriipphheerriiqquuee

  Depuis   le  noyau  2.1.33  (il  existe    un  patch pour   la version
  2.0.30), le peripherique   lp    est     simplement  un    client   du
  nouveau  peripherique    parport.    L'ajout de  ce    parport corrige
  un certain     nombre  de   problemes  dont    etait affuble lp  -  il
  peut  partager  le port avec d'autres pilotes, il met dynamiquement en
  relation les   ports  paralleles  disponibles  avec  les   numeros  de
  peripheriques   plutot    que  de  forcer  une correspondance statique
  entre addresse d'entre/sortie et numero de port, ...

  Une  prochaine version de  ce  document  devrait  couvrir  le  parport
  lorsque  j'en  aurai  utilise un, mais  en attendant, vous pouvez lire
  le fichier Documentation/parport.txt dans les  sources  du  noyau,  ou
  aller          sur          le          site         _p_a_r_p_o_r_t         a
  http://www.cyberelk.demon.co.uk/parport.html

  33..33..  LLeess ppeerriipphheerriiqquueess sseerriiee

  Les  peripheriques    serie              utilisables    sont   appeles
  /dev/ttyS?     (les    peripheriques /dev/cua? sont  aussi  serie mais
  pas utilisables  dans ce  domaine).    L'utilitaire  stty  permet   de
  visualiser  ou  de  modifier  les  caractertiques   d'un  port  donne.
  setserial  permet  de controler   et configurer les  IRQ   et adresses
  d'entree/sortie   si  besoin est.  Referez-vous  au _S_e_r_i_a_l_-_H_O_W_T_O  pour
  de plus amples renseignements.

  Si  vous utilisez une imprimante serie   lente  avec  le  controle  de
  flux,   vous  constaterez  peut-etre   que certaines  impressions sont
  tronquees.  Ceci  est  certainement   du  au  port   serie   dont   le
  comportement    par   defaut  est    de     purger   son   tampon  des
  caracteres   non   transmis   dans   les    30  secondes  apres     sa
  fermeture.   Une  imprimante  trop   lente  n'aura pas  le temps de le
  vider. Le tampon peut contenir 4096 caracteres.

  Si la  commande cat file > /dev/ttyS2   produit  une  sortie  correcte
  pour  les   fichiers courts et  tronquee pour les longs fichiers, vous
  etes peut-etre dans ce cas.

  Le   delai  de    30   secondes  peut   etre  ajuste   a  l'aide    du
  parametre  ``closing_wait''   (attente  fermeture)    de  la  commande
  setserial (version 2.12 et ulterieure).

  Notez   que   les   ports  serie    sont  generalement  configures  au
  demarrage  de  la machine grace a un appel a setserial dans le fichier
  /etc/rc.d/rc.serial.  Vous pouvez  rajouter  toute  option  necessaire
  dans ce fichier.

  44..  LLeess iimmpprriimmaanntteess ssuuppppoorrtteeeess

  Le  noyau   Linux supporte quasiment toutes  les imprimantes que  vous
  pouvez physiquement connecter  au port  serie  ou parallele. Il  y   a
  neanmoins   des   petites    choses  a  savoir,   notamment  certaines
  imprimantes     a      eviter       bien        qu'elles      puissent
  (electriquement  parlant)  communiquer avec Linux. En premier lieu, il
  existe    toute    une    generation   d'imprimantes     incompatibles
  s'appuyant  sur   le ``Windows Printing System''  et qui  repondent au
  label ``pour   Windows''. Ces imprimantes  ne fonctionnent   pas  avec
  Linux.  Elles  font  travailler   l'unite  centrale pour    des taches
  normalement  laissees    au   microprocesseur   de       l'imprimante.
  Malheureusement  ces  taches  ne  peuvent   etre effectuees que par le
  pilote  du  constructeur   qui    ne  tourne    que   sous    Windows.
  Conclusion n'achetez pas ce genre d'imprimante pour Linux.

  Evidemment,  sous  Linux, comme d'ailleurs sous tout autre systeme, le
  meilleur   choix est d'avoir  une  imprimante    PostScript.  Presquer
  tous  les  logiciels Unix produisent du _P_o_s_t_S_c_r_i_p_t  et bien evidemment
  le mieux  est   d'avoir une  imprimante   qui    le  comprend.    Cela
  simplifie.    Malheureusement   _P_o_s_t_S_c_r_i_p_t   n'est   pratiquement  pas
  disponible en dehors du domaine des imprimantes laser. Et c'est  cher.
  Rassurez-vous, vous pouvez utiliser toute autre imprimante.

  Si  vous  ne  comptez pas avoir de PostScript  a imprimer, vous pouvez
  connecter une   simple imprimante matricielle retrouvee    dans  votre
  grenier.   Sinon,  comme   nous  le  verrons,  il faudra passer par un
  logiciel d'interpretation du  _P_o_s_t_S_c_r_i_p_t (le   plus  celebre  est   le
  logiciel   gratuit   _G_h_o_s_t_S_c_r_i_p_t    de   _A_l_l_a_d_i_n  _s_o_f_t_w_a_r_e).  Utilisez
  alors une imprimante reconnue par ce logiciel.

  Voir    http://www.cs.wisc.edu/~ghost/printer.html      pour       des
  informations   mises  a  jour selon  les  versions disponibles et  les
  pilotes en test.

  Les imprimantes supportees sont:

       Canon BubbleJet BJ10e
       Canon BubbleJet BJ200
       Canon BubbleJet BJC-210 (4.01) N/B seulement
       Canon BubbleJet BJC-240 (3.33, 4.03) N/B seulement
       Canon BubbleJet BJC-600
       Canon BubbleJet BJC-610 (3.53) 360dpi seulement, N/B & couleur. Voir correctif bjc610.
       Canon BubbleJet BJC-4000
       Canon BubbleJet BJC-4100 (4.01) pas couleur.
       Canon MultiPASS C2500
       Canon BJC-240 (5.01)
       Canon BJC-70 (5.01)
       Canon BubbleJet BJC-800

       HP DeskJet (3.33)
       HP DeskJet Plus (3.33)
       HP DeskJet 500 (3.53)
       HP DeskJet Portable (4.01)
       HP DeskJet 400 (3.33, 4.03) N/B teste seulement.
       HP DeskJet 500C (3.53)
       HP DeskJet 540C (3.53)
       HP DeskJet 690C (4.03) 1bit/pixel et 32bit/pixel
       HP DeskJet 693C (4.03)
       HP DeskJet 550C (3.53)
       HP DeskJet 560C (3.53)
       HP DeskJet 600 (3.53) N/B teste seulement (1bit/pixel or 32bit/pixel)
       HP DeskJet 660C (3.53)
       HP DeskJet 682C (4.01) Utiliser gamma=0.3
       HP DeskJet 683C (3.33, 4.03)
       HP DeskJet 693C (4.03) 24bit/pixel
       HP DeskJet 850 (3.53) 300dpi
       HP DeskJet 870Cse (4.03) (16 ou 32 bits/pixel)
       HP DeskJet 850
       HP DeskJet 870Cse (4.03)
       HP DeskJet 870Cxi (4.03)
       HP DeskJet 680 (5.01)
       HP DeskJet 500C (3.53)
       HP DeskJet 500C (3.53)
       HP DeskJet 510 (3.53)
       HP DeskJet 520 (3.53)
       HP DeskJet 540C (3.53)
       HP DeskJet 693C (4.03)
       HP DeskJet 600 (3.53)
       HP DeskJet 600 (3.53) marges incorrectes
       HP DeskJet 870Cse (4.03)
       HP LaserJet 5 (4.01) 300dpi ou 600dpi
       HP LaserJet 5L (4.03) 300dpi ou 600dpi Marges incorrectes dans GS 3.33. Correct dans GS 4.03.
       Oki OL410ex LED printer (4.03) 300dpi ou 600dpi
       HP PaintJet XL300
       HP DeskJet 600 (3.53) 300dpi OK, 600 dpi tres lent
       HP DeskJet 1200C (3.53)
       HP DeskJet 1600C (4.03) 24bit/pixel. -dShingling=2 -dDepletion=1 -dPrintQuality=1
       Ricoh 4081 laser printer (3.53)
       Ricoh 6000 laser printer (3.53)
       Epson Stylus Color (3.53)
       Epson Stylus Color II (3.53) -r360 -dMicroweave voir devices.txt et GS stcolor FAQ
       Epson Stylus 500 (4.03) -r360 or -r720, -dMicroweave voir les notes
                               d'Alan Williams sur GS. (Ne marche pas avec 3.33.)
       Epson Stylus 800 (3.53) -sModel=st800

  55..  QQuueell ddeemmoonn dd''iimmpprreessssiioonn ??

  Jusque recemment, le  choix  sous Linux etait simple  puisque tout  le
  monde  disposait    du seul demon lpd    sorti tout droit   et presque
  tel quel  du   code    BSD   Net-2.   Aujourd'hui     la  plupart  des
  fournisseurs  proposent    ce  logiciel.  Mais    les  choses  sont en
  train  de changer.  Les  systemes SVR4  tels  que  Sun   Solaris  sont
  fournis  avec  un  paquetage logiciel d'impression centre sur lpsched.
  D'autre part,  sous  Linux, quelques  fournisseurs   proposent  LPRng,
  une  implementation     beaucoup     plus   recente     et  disponible
  gratuitement.   LPRng  est   tres  facilement administrable  notamment
  sur  des  plate-formes  importantes  et  contient du code plus robuste
  (moins farfelu??)  que lpd.

  A l'heure actuelle malgre toutes ces nouveautes, lpd est  certainement
  ce  qui  convient le mieux a la plupart des utilisateurs.  Meme  si ce
  n'est  pas le  fin  du  fin,  il  tourne  bien  une    fois  configure
  et,      chose  importante,  il     est tres   bien documente dans les
  livres sur Unix.

  Pour   plus    d'information     sur     LPRng,   allez     voir   sur
  http://ltpwww.gsfc.nasa.gov/ltpcf/about/unix/Depotdoc/LPRng/.

  66..  LL''iimmpprreessssiioonn,, ccoommmmeenntt ccaa mmaarrcchhee

  Nous  considerons  ici  que  vous utilisez la suite logicielle lpd que
  nous decrirons  d'ailleurs. Elle est  la plus repandue  et  fonctionne
  tres bien.

  66..11..  IImmpprreessssiioonn llooccaallee eett iimmpprreessssiioonn ddiissttaannttee

  L'impression    locale   permet     aux  utilisateurs  d'envoyer   des
  travaux d'impression  a  l'imprimante directement   rattachee  a  leur
  machine.

  L'impression   distante,  par     contre,   permet  de soumettre   des
  travaux d'impression   depuis  une  machine, a  une    autre   machine
  sur le reseau, sur laquelle est connectee une imprimante.

  66..22..  DDee qquuooii aavveezz vvoouuss bbeessooiinn

  Nous  supposons  que vous savez editer un  fichier texte sous Linux et
  que  vous avez   une bonne  comprehension   des  notions   de   droits
  d'acces et de propriete (chmod, chown).

  Nous   supposons   egalement   que  votre   systeme  Linux  fonctionne
  correctement.   En  particulier,   si    vous  souhaitez   faire    de
  l'impression distante, que votre reseau fonctionne deja.

  Consultez  a  ce propos les  nombreuses documentations disponibles sur
  le sujet  (comme  on dit: RTFM, ce   qui  en bon  francais veut   dire
  LLBD :-)).

  66..33..  LLeess pprrooggrraammmmeess iimmppoorrttaannttss

  Le  systeme   d'impression Unix comprend (au  moins) 5 programmes. Ils
  doivent se trouver a  l'endroit  decrit (c'est le  mieux)  ou dans  un
  repertoire  accessible   (avec   la variable PATH),  appartenir a root
  (groupe lp), et avoir les permissions suivantes :

                    -r-sr-sr-x      root    lp      /usr/bin/lpr
                    -r-sr-sr-x      root    lp      /usr/bin/lpq
                    -r-sr-sr-x      root    lp      /usr/bin/lprm
                    -r-xr-sr-x      root    lp      /usr/sbin/lpc
                    -rwxr--r--      root    lp      /usr/sbin/lpd

  Les quatre  premiers   sont  utilises  pour  soumettre,    visualiser,
  annuler,  controler les   travaux   d'impression. Le dernier    est le
  demon.

  Il existe bien  entendu  des  pages  de  manuel   en  ligne  pour  ces
  commandes que vous  pourrez consulter  pour    plus d'information.  Le
  point   important a noter  est    que   les commandes    lpr,     lpq,
  lpc  et    lprm operent   sur une    imprimante par defaut nommee  lp.
  La    variable   d'environnement PRINTER    peut contenir le nom    de
  l'imprimante  que vous  avez choisie.  La  specification du nom  d'une
  imprimante sur la ligne de commande  surchargera ces definitions  (les
  imprimantes de l'exemple sont hors-ligne):

            # echo $PRINTER
                                       (vide)
            #
            # lpq
            waiting for lp to become ready (offline ?)
            ...
            # export PRINTER=mon_imprimante
            # lpq
            waiting for mon_imprimante to become ready (offline ?)
            ...

            # lpq -Plpr0
            waiting for lpr0 to become ready (offline ?)
            ...

  66..33..11..  LLee cclliieenntt eett llee sseerrvveeuurr

  Voici ci-dessous les interactions client - demon

                                                     _________
                                                   +/BlaBla  /+
                                                  //________//|
                                                 /          / +
       +----------------+                       +----------+ /
       |      LPR       |                       |=      oo |/
       +----------------+                       +----------+
               |                                 Imprimante
               |                                     ^
               V                                     |
       +----------------+                  +------------------+
       |      LPD       |------>------>----|        LPD       |
       +----------------+                  +------------------+

                   Soumission d'un requete d'impression

       +----------------+
       |      LPQ       |
       +----------------+
                         \
                          \_______>______
                                         \
       +----------------+                 \+------------------+
       |      LPD       |                  |        LPD       |
       +----------------+                  +------------------+

                   Soumission d'une demande d'information

  Lorsque       le   systeme     demarre,   lpd     est charge.   Il lit
  le   fichier   /etc/printcap (dont  vous  trouverez   une  explication
  plus  loin) qui  decrit  les imprimantes connues.

  66..33..22..  LLeess ffiicchhiieerrss ssoouummiiss ppaarr llee cclliieenntt

  Lorsqu'un   programme    client    soumet  un   travail  d'impression,
  il genere deux fichiers qu'il ecrit dans le spool:

  +o   Un fichier de donnees qui  contient une copie des donnees que vous
     souhaitez  soumettre a l'imprimante. Il s'agit bien d'une copie, ce
     qui signifie  que toute modification  ulterieure de  votre  fichier
     n'alterera pas l'impression.

  +o   Un fichier de description du travail a effectuer.

  66..33..33..  LLaa ccoommmmaannddee llpprr

  La  commande  lpr  soumet  un travail d'impression.  Elle se charge de
  mettre les  donnees   a  imprimer  dans   un  fichier  dans  le  spool
  d'impression.  Ces  donnees  peuvent provenir  soit d'un fichier  (les
  donnees    sont         dupliquees      et     toute      modification
  ulterieure  du   fichier d'origine n'affectera pas l'impression), soit
  de    l'entree  standard   (stdin).    Le    demon   est   averti   de
  l'existence   d'un  nouveau fichier et   envoie, des que possible, les
  donnees vers l'imprimante physique (ou la machine distante).

  La  taille   du   spool   est   bien   entendu  limitee  a   la  place
  disponible  sur  votre  disque  dans /usr/spool/ ou a la taille limite
  specifiee  dans  le fichier  de configuration   printcap.  Vous pouvez
  neanmoins  imprimer  un  gros  fichier  en  demandant a lpr de ne  pas
  dupliquer le fichier.     Le  demon d'impression ira   alors  chercher
  le  fichier  que  vous  indiquez dans la ligne de commande et non plus
  dans le spool.

  66..33..44..  LLaa ccoommmmaannddee llppqq

  La commande lpq  affiche le contenu du   spool,  pour  une  imprimante
  donnee.      Une  des   informations    importantes fournies   est  le
  numero  du  travail (job).  C'est   lui  qui pourra  servir a  annuler
  un  des    travaux  soumis, y  compris  celui  en  cours d'impression.
  Parmi tous  les travaux soumis, l'indication   ``active''  indique  le
  travail  en  cours   d'impression   (ou   que  lpd  essaie   d'envoyer
  a l'impression).

  66..33..55..  LLaa ccoommmmaannddee llpprrmm

  La commande lprm enleve  un travail de la  file (et  donc  le  fichier
  du  spool).   Vous  pouvez soit  specifier un numero de job,  soit  un
  tiret    permettant   de   supprimer   tous     les     travaux   vous
  appartenant.    Si    vous   etes  root,    tous    les  travaux  sont
  supprimes.    Pour   supprimer    les   travaux     d'un  utilisateur,
  specifiez son nom.

            # lprm 1
            dfA001Aa00484 dequeued
            cfA001Aa00484 dequeued
            #

  Le   premier fichier contient les  donnees  a imprimer.  Il a ete cree
  par  lpr. Le deuxieme contient des informations que le  demon  utilise
  pour  savoir que faire des donnees (impression  locale, distante, ...)
  Consultez le manuel en ligne : lpd(8).

  66..33..66..  LLaa ccoommmmaannddee llppcc

  La commande lpc  permet de  controler  les  travaux  en   cours  ainsi
  que    l'imprimante,  et certains     aspects de son   utilisation. En
  particulier,  vous pouvez demarrer ou  stopper la sortie  des  travaux
  du    spool    pour   l'impression,     valider    ou   invalider  une
  imprimante, et meme modifier   l'ordre   d'impression  des   fichiers.
  Les   commandes  suivantes   permettent   d'invalider l'impression sur
  mon_imprimante, de valider le spool sur ton_imprimante, et   de  faire
  passer le job 37 en debut de file:

            lpc down mon_imprimante
            lpc enable ton_imprimante
            lpc topq 37

  lpc  peut   fonctionner  en interactif  si aucun  parametre ne lui est
  passe. Vous pouvez  lire les pages  du manuel en  ligne  pour  obtenir
  des  instructions completes. A noter que certaines actions de lpc sont
  reservees au super-utilisateur (root).

  66..44..  LLeess rreeppeerrttooiirreess iimmppoorrttaannttss

  Le repertoire le plus  important est le  repertoire  de   spool,  dans
  lequel   les  donnees  vont   etre stockees  avant d'etre   imprimees.
  Typiquement,    un  systeme   sera  configure     pour     avoir    un
  repertoire        de  spool par imprimante. Cela rend la gestion  plus
  facile.   Sur  mon  systeme,  par  exemple,      le         repertoire
  /usr/spool/lp  est    le repertoire   principal. Sous ce   repertoire,
  on  y trouve le sous-repertoire     lpr0, correspondant       a     la
  declaration  que   j'ai faite  dans   /etc/printcap pour le repertoire
  de spool de mon imprimante.

  NDT: Ce  qui va suivre decrit  une facon  de  faire  pour  donner  les
  bons       droits      d'acces     aux      repertoires     de  spool.
  Differentes   methodes  sont   possibles,  sachant  que,  comme   sous
  Un*x,  beaucoup  de  choses   sont   possibles  dans   ce  domaine, il
  convient de  faire  attention de  ne   pas offrir de failles    a   la
  securite de l'ensemble.

  Le repertoire de spool doit appartenir a root, et au groupe lp,   avec
  les  droits  de lecture/d'ecriture  pour  utilisateur  et  groupe,  et
  lecture seule pour le reste du monde.

               chmod ug=rwx,o=rx lpr0
               chgrp lp lpr0

            drwxrwxr-x   2 root     lp           1024 Feb 11 10:51 lpr0/

  Un  autre   repertoire  doit  egalement  etre present : /usr/spool/lpd
  avec  les memes  droits.   Vous aurez plus d'informations  plus  avant
  dans ce document.

  66..55..  LLeess ffiicchhiieerrss iimmppoorrttaannttss

  En     dehors     des   programmes  que      nous  avons  deja evoques
  precedemment, quatre  fichiers   doivent  se   trouver    dans  chaque
  repertoire  de  spool.   Avec les versions recentes des  gestionnaires
  d'impression,  vous n'avez pas  a vous soucier de ces  fichiers.   Ils
  sont  crees  automatiquement  s'ils  n'existent    pas :  .seq,  errs,
  lock et status.       Ces      fichiers      doivent      avoir    les
  droits  -rw-rw-r--.   Le   fichier   .seq  contient  un compteur  pour
  l'affectation des numeros de  jobs.  Le  fichier  status  contient  le
  message   devant    etre   emis   par    la   commande    lpc stat. Le
  fichier  lock est utilise par le  demon  pour  qu'il  n'imprime  qu'un
  fichier  a   la  fois.  Le fichier errs contient les erreurs survenues
  sur l'imprimante.

  Le fichier errs n'est pas obligatoire.  De  plus,  il  peut  s'appeler
  comme  vous  le  souhaitez,  pourvu  que  son nom soit declare dans le
  fichier /etc/printcap que nous decrirons dans la suite.

  77..  CCoonnffiigguurreerr lleess sseerrvviicceess dd''iimmpprreessssiioonn

  La   configuration minimale pour   un systeme d'impression  permet  de
  mettre  des   fichiers   en  file d'impression   puis de les imprimer.
  Il ne prete  aucune  attention  au  fait que   votre imprimante puisse
  les  imprimer   (les  comprendre  meme)   et   ne  vous  permettra pas
  d'imprimer des choses extraordinaires.  Neanmoins,  c'est  un  premier
  pas.

  77..11..  LLee ffiicchhiieerr //eettcc//pprriinnttccaapp

  Le  fichier   /etc/printcap  decrit  toutes  les imprimantes que votre
  systeme    doit  connaitre.      Il    peut  etre modifie  avec  votre
  editeur prefere, doit appartenir a root et avoir les droits suivants:

            -rw-r--r--   1 root     system        164 Oct 25 21:23 /etc/printcap

  Le contenu  du    fichier semble  assez    incomprehensible a premiere
  vue.    Il    respecte    effectivement   une    syntaxe  particuliere
  et   malgre les  apparences, assez simple lorsque l'on connait !    Il
  n'y  a  pas  toujours de manuels   concernant   ce  fichier,  et  cela
  complique un peu les choses.  Un  petit conseil en passant :  essayez,
  dans la  mesure  du  possible   de  rendre  votre   fichier  le   plus
  lisible  possible,  avec des  commentaires.  Vous pouvez consulter les
  pages du manuel en   ligne concernant printcap(5) (ou   empressez-vous
  de  les  recuperer    si   vous  ne   les avez  pas).   Plus loin sont
  decrits les parametres importants.

  Une   entree   de  printcap    decrit   une  imprimante,  c'est-a-dire
  une correspondance nom  logique -  imprimante physique, puis decrit la
  facon de transmettre les  donnees. Par exemple, une entree  va decrire
  le  peripherique  physique  a  utiliser,  le repertoire  de spool, les
  traitements a effectuer sur  les donnees avant  impression,  ou encore
  le  repertoire   dans  lequel    seront  notifiees   les erreurs. Vous
  pouvez aussi limiter la quantite  de donnees pour  un  job,   ou  meme
  limiter   l'acces   d'une   imprimante   a  une classe d'utilisateurs.
  Vous trouverez dans  la partie suivante la description des champs.

  Il    est  tout   a   fait    possible   d'avoir  plusieurs    entrees
  decrivant       differentes      facons d'envoyer   des donnees a  une
  meme  imprimante physique.  Par exemple,  une  imprimante     physique
  peut  supporter  les    formats    HP   LaserJet  et  PostScript,   en
  fonction  de   la  sequence   de  caracteres envoyee au   debut   d'un
  travail.    Vous  definirez  donc  deux  entrees, l'une permettant  de
  traiter  le   format  HP,  l'autre  le  format   _P_o_s_t_S_c_r_i_p_t.       Les
  programmes      generant  des  donnees   ``HP''  les     enverront   a
  l'imprimante  HP,     ceux  generant  des    donnees   _P_o_s_t_S_c_r_i_p_t  les
  enverront  a  l'imprimante _P_o_s_t_S_c_r_i_p_t. Toutes les deux representent la
  meme imprimante physique.

  Les   programmes  qui modifient  les  donnees  avant  de les envoyer a
  l'imprimante physique sont des filtres.

  Exemple d'entree d'un fichier /etc/printcap:

            # LOCAL djet500
            lp|dj|deskjet:\
                    :sd=/var/spool/lpd/dj:\
                    :mx#0:\
                    :lp=/dev/lp0:\
                    :sh:

  Ceci  definit  une  imprimante  dont les  noms sont   lp (par defaut),
  dj  et deskjet.   Les  deux   derniers  sont  des  alias  de  la  meme
  imprimante.    La  file  (on  dit  tres  souvent  le  spool,  meme  en
  francais...)   de cette  imprimante  de  trouve  dans   le  repertoire
  /var/spool/lpd/dj (sd signifie spool   directory).    Le  peripherique
  utilise  est /dev/lp0.      La     page  d'en-tete    est    supprimee
  (sh) et   aucune limite de  taille   de fichier n'est fixee (mx)

  Notez que la meme entree pourrait s'ecrire:

            lp|dj|deskjet:sd=/var/spool/lpd/dj:mx#0:lp=/dev/lp0:sh:

  mais c'est moins beau.

  Vous pouvez consultez la page de manuel de printcap sur

  http://www.picante.com/~gtaylor/pht/man/printcap.html.   Toutes    les
  options y sont decrites.

  Tous les champs exceptes les noms d'imprimantes sont entoures de deux-
  points  et   reperes par  un  symbole de  deux  lettres suivi du signe
  egal.   Ensuite  est  indiquee  la  valeur  qui  peut  etre   de  type
  numerique,  booleenne ou chaine de caracteres:

            champ           type            signification

            lp              string          designe le peripherique d'impression
            sd              string          designe le repertoire de spool
            lf              string          designe le fichier de rapport d'erreurs
            if              string          specifie le nom du filtre d'entree
            rm              string          designe le nom d'un site d'impression distant
            rp              string          designe le nom d'une imprimante distante
            sh              booleen         indique s'il faut supprimer les en-tetes
            sf              booleen         indique s'il faut supprimer les sauts de pages
                                            de fin de travaux
            mx              numerique       indique la taille maximum d'un job
                                            (en blocs = 1Ko sous linux)

  77..11..11..  DDeettaaiillss ssuurr llee cchhaammpp llpp

  Si           vous         specifiez          /dev/null           comme
  peripherique, tous  les   traitements se  feront,  mais  tout  partira
  a  la  poubelle. Ca semble ridicule, mais cela vous permet par exemple
  de  tester une configuration.   Lisez le chapitre ``Imprimantes qui ne
  sont     pas  de  simples   peripheriques''.      Si vous designez une
  imprimante  distante avec  rp et  rm, lp doit contenir :lp=:.

  Ne laissez  pas ce champ  vide en cas  d'impression locale,  le  demon
  signalerait une erreur.

  77..11..22..  DDeettaaiillss ssuurr llee cchhaammpp llff

  Tout     fichier  specifie   ici   doit  exister,   sinon  le  rapport
  d'erreurs ne se ferait pas.

  77..11..33..  DDeettaaiillss ssuurr llee cchhaammpp iiff

  Les     filtres  d'entree sont   des    utilitaires  transformant  les
  donnees  qu'il  recoivent  sur  leur  entree  standard  en  un  format
  particulier qu'il sortent sur leur sortie standard.   Typiquement,  la
  conversion   texte -  _P_o_s_t_S_c_r_i_p_t deja mentionnee.

  Si  vous   specifiez     un  filtre    d'entree,   le   demon n'envoie
  pas    directement     les        donnees       au  peripherique.   Il
  execute le  filtre  en dirigeant les donnes sur son   entree  standard
  et en  designant  le peripherique de sortie comme sortie standard.

  77..11..44..  DDeettaaiillss ssuurr lleess cchhaammppss rrmm eett rrpp

  Envoyer des   donnees   a une   imprimante   rattachee a   une machine
  distante   est   tres  simple:   il  suffit de specifier   le nom   de
  la    machine avec  rm    et     le  nom  de  l'imprimante   avec  rp.
  S'assurer  que  l'entree  lp  est vide. A noter que les donnees seront
  d'abord mises dans le spool local  avant  d'etre   transferees.   Meme
  si  votre imprimante est distante, il faudra egalement un spool local.

  77..11..55..  DDeettaaiillss ssuurr lleess cchhaammppss sshh eett ssff

  Les  bannieres    concernent  eventuellement   les    utilisations   a
  plusieurs personnes. Elles identifient les jobs.

  La  suppression de ces  bannieres vous permet d'economiser  du papier.
  Par   contre     la gestion  des   sauts    de     page   sera    plus
  interessante,  surtout  si vous utilisez des traitements de textes qui
  formatent toujours des  pages pleines.  Dans ce  cas,  pas  besoin  de
  saut  de  page supplementaire.  Vous auriez sinon une page  blanche en
  fin de chaque travail.   Si  vous  utilisez  des  listings  ou  autres
  documents,  ajouter  un  saut  de  page  garantit  que  chaque travail
  commancera bien en debut de page.

  77..11..66..  DDeettaaiill ssuurr llee cchhaammpp mmxx

  Ce champ permet de limiter la taille des donnees pour chaque  job.  Le
  nombre  a  specifier  est en blocs de BUFSIZE (pardon, de 1 Ko)   sous
  Linux.  La valeur   0  rend  la   taille    illimitee,  permettant  la
  soumission  de   travaux limitee uniquement a  la taille    du disque.
  Notez   que   la   limite concerne   la   taille des donnees mises  en
  spool,    et    non   pas   les      donnees envoyees a   l'imprimante
  physique.   Si  la   limite   est depassee,    le   fichier        est
  tronque    avec  l'emission d'un  message disant: lpr: <fichier>: copy
  file is too large.

  Cela  peut etre interessant pour  des imprimantes  physiques  en  mode
  texte,  notamment  si   des  utilisateurs  ou  des  programmes  creent
  accidentellement des donnees trop volumineuses.

  Si vous manquez de memoire de masse, pourquoi  n'inventeriez-vous  pas
  un   filtre  qui    decompresse  ce qu'il a   a envoyer a l'imprimante
  ?      Vous    soumettriez     alors   des    donnees compressees.

  88..  LLeess ffiillttrreess

  Si   avec   les   explications  precedentes,   tout    marche    c'est
  formidable, mais en regle general, cela ne suffit pas.  Regardez   ci-
  dessous ce que l'on  obtient   sur  la  DeskJet 500,  lorsque j'envoie
  un fichier texte:

       Ceci est la premiere ligne.
                                  Celle-ci est la deuxieme.
                                                           Voici la troisieme.

  Et alors l'impression    d'un fichier _P_o_s_t_S_c_r_i_p_t...   Vous obtenez  le
  listing complet    du   code  _P_o_s_t_S_c_r_i_p_t   avec     les   meme  effets
  d'escalier. Une horreur.

  Il  faut donc quelque chose de plus et c'est  le role des filtres. Les
  plus  observateurs    d'entre   vous   auront    peut-etre    remarque
  l'existence  des  parametres  if  (input filter) et of (output filter)
  dans le fichier printcap.  Pour l'instant nous avons besoin de if.

  Un filtre  est    un  simple  programme  executable  qui     lit   les
  donnees   sur  son entree  standard  et sort le resultat sur sa sortie
  standard.

  Commencons par  ecrire   un    script que vous      appellerez  filtre
  et qui ajoute des retours chariot avant chaque caractere fin de ligne.
  Ceci elimine l'effet d'escalier.

            #!/usr/local/bin/perl
            # La ligne ci-dessous doit contenir le chemin complet vers perl
            # Ce script doit etre executable: chmod 755 filtre
            while(<STDIN>){chop $_; print "$_\r\n";};
            # Vous pouvez aussi vouloir terminer avec une fin de page: print "\f";

  Dans   /etc/printcap,   l'entree  est  modifiee   en consequence:

       lp|dj|deskjet:\
                    :sd=/var/spool/lpd/dj:\
                    :mx#0:\
                    :lp=/dev/lp0:\
                    :if=/var/spool/lpd/dj/filtre:\
                    :sh:

  Essayez  d'ecrire le filtre en shell  qui sera  plus efficace  que  de
  charger perl. Bon allez, je vous aide un peu:

            #!/bin/sh
            if [ "$1" = -c ]; then
              cat
            else
              sed -e s/$/^M/
            fi
            # echo -ne suppose que /bin/sh correspond a bash
            echo -ne \\f

  Notez  que   '^M' symbolise le caractere  retour-chariot et non pas un
  `^' suivi d'un 'M'. Dans emacs, pour saisir  ce caractere,  entrez  la
  sequence  C-q   C-m,     alors  que   sous  vi, entrez   C-v C-m.   Le
  test  de $1   permet    d'invalider l'insertion du retour-chariot  par
  la  commande   lpr   -l  A savoir que  lpr genere  des  parametres qui
  sont  passes   au filtre. Par defaut  il passe -w0.   Si  l'option  -l
  est  donnee,  il   passe  -c.   Ce script est traditionnellement nomme
  /usr/lib/lpf.  Si vous avez   plusieurs  scripts  de   la  sorte,  une
  bonne idee consiste  a  les  mettre tous dans  un sous-repertoire, par
  exemple /usr/lib/lpd.

  Il se peut aussi que votre  imprimante  puisse  passer  dans  un  mode
  permettant  l'ajout   de   retour-chariots   grace    a une   sequence
  d'echappement. Voici   un  exemple de filtre  utilisant   la  commande
  echo -ne pour envoyer cette sequence:

            #!/bin/sh
            # Filtre pour imprimantes HP, permettant de traiter LF comme CRLF
            # La commande echo -ne suppose que /bin/sh correspond a bash
            echo -ne \\033&k2G
            cat
            echo -ne \\f

  Vous pouvez compliquer  les filtres  comme bon  vous  semble. Le mieux
  est d'avoir un  filtre qui  reconnait le   fichier   d'entree  et   le
  convertit    au bon format   pour   votre imprimante.   Un  tel filtre
  est appele  filtre magique.   Ne  vous embetez   pas   a   les  ecrire
  vous-meme,   il     en     existe   surement deja  un  qui        vous
  convient.                Allez                voir                 sur
  tsx-11.mit.edu:/pub/linux/sources/usr.bin/magic-filter-x.y.tar.gz.

  99..  LLeess ffiicchhiieerrss,, lleeuurr eemmppllaacceemmeenntt eett lleess ddrrooiittss dd''aacccceess

  Les  differences  qui existent entre les nombreuses distributions font
  que l'on ne  peut ici etre exhaustif.  Je  pense que beaucoup de  gens
  utilisent  maintenant  les distributions type   slackware  et on  peut
  raisonnablement s'appuyer sur cet exemple.

  Pensez a  inclure lpd dans le  fichier  rc.local  apres  le  demarrage
  eventuel  de   syslogd.   Voici  les  fichiers  tels que l'on peut les
  trouver:

            -r-sr-xr-x   1 root     lp           9308 Aug 23 21:45 /usr/bin/lpq*
            -r-sr-xr-x   1 root     lp          10056 Aug 23 21:45 /usr/bin/lpr*
            -r-sr-xr-x   1 root     lp           8900 Aug 23 21:45 /usr/bin/lprm*
            -r-x------   1 root     lp           1596 Aug 23 21:45 /usr/bin/lptest*

            -r-xr-sr-x   1 root     lp          17160 Aug 23 21:45 /usr/sbin/lpc*
            -rwxr--r--   1 root     lp          34072 Aug 23 21:45 /usr/sbin/lpd*

  et pour chaque repertoire de spool:

            /usr/spool/lp/lpr0/
            total 5
            drwxr-xr-x   2 root     lp           1024 Feb 12 15:15 ./
            drwxr-xr-x   3 root     lp           1024 Sep  2  1993 ../
            -rw-r----x   1 root     lp              4 Feb 12 15:15 .seq
            -rw-r--r--   1 root     lp              3 Feb 13 20:46 lock
            -rw-rw-r--   1 root     root           27 Feb 12 15:15 status

  Ces  trois   fichiers    sont  crees  par     lpr et lpd. Ils  peuvent
  etre  absents  si  vous    ne  les  avez  encore  jamais  lances. Avec
  d'anciennes  versions il fallait executer touch sur   ces fichiers  ou
  bien  modifier  leurs  droits. Les  bugs concernant ces  fichiers  ont
  maintenant  ete corriges dans les versions recentes.

  Il est   a noter  egalement   que  le   groupe   d'appartenance  etait
  daemon  avec  d'anciennes  versions, et   est maintenant lp.

  Ne     soyez  pas    surpris  de  trouver     des   choses  legerement
  differentes sur  votre systeme. D'un autre cote, si quelque  chose  ne
  fonctionne   pas, pensez a soupconner ces droits avant   d'affoler nos
  boites   aux  lettres   (Si   vous  saviez  le  nombre  de   courriers
  electroniques recus  et dont la  solution se trouve la !).

  On peut trouver le programme lpr avec ou sans  le bit setuid(root). En
  fait ce  n'est  pas si   evident que  cela.   Tout depend  des  droits
  et  permissions des repertoires de spool. Autant que je sache, il  y a
  une totale  securite  avec lpr, meme si il est setuid(root).  Donc,  a
  la  limite,   positionnez  le  bit pour ne pas vous soucier des droits
  d'acces au repertoire de spool.

  Vous etes libre  de mettre les  binaires   dans  les  repertoires  que
  vous  voulez,  bien  qu'ils  se   trouvent couramment dans /usr/bin ou
  /usr/sbin.   (lpc  et lpd peuvent  se  trouver  par     exemple   dans
  /etc).       Certaines    commandes  etant  interessantes   pour  tout
  utilisateur, il  est bon de les laisser aux endroits habituels.

  Attention  toutefois, car les  gens qui concoivent  les  distributions
  sont   egalement   libres   de  choisir.   Pensez   a  supprimer   les
  anciennes versions, si vous changez de distribution.

  L'emplacement du  fichier  de  verrouillage  principal  du  demon  lpd
  (lpd.lock),  est  fixe    en  dur  dans  le  code.   Il se trouve dans
  /var/spool/lpd/lpd.lock.  Donc,  vous  devrez  prevoir  un  repertoire
  /var/spool/lpd    meme     si        votre  repertoire   de  spool est
  different.   Les  binaires   anciens   mettaient   ce   fichier   dans
  /var/spool/lpd.lock/

  Typiquement, chez moi, on trouve

            /var/spool/lpd/
            drwxr-xr-x   4 root     lp           1024 Aug 18  1994 ./
            drwxr-xr-x  18 root     root         1024 Aug 17  1994 ../
            -rw-r--r--   1 root     root            3 Feb 14 20:12 lpd.lock

            /var/spool/lp/lpr0
            drwxr-xr-x   2 root     lp           1024 Feb 12 15:15 ./
            drwxr-xr-x   3 root     lp           1024 Sep  2  1993 ../
            -rw-r----x   1 root     lp              4 Feb 12 15:15 .seq*
            -rw-r--r--   1 root     root            3 Feb 14 20:12 lock
            -rw-rw-r--   1 root     root           27 Feb 12 15:15 status

  Etant   donne   que l'on  jongle  en permanence entre /usr et /var, il
  est clair  qu'un  lien  doit   exister  entre  les  deux.   Soit  vous
  definissez       vos         repertoires        dans /usr/spool/... et
  definissez  le lien   /var vers /usr,  soit vous  mettez   tout   sous
  /var/spool/lpd... et definissez le lien /usr/spool vers /var/spool.

  Si  vous  avez,  comme  moi,  une partition root  (/) et une partition
  /usr, les deux cas  ne sont pas  identiques.  Dans  le   premier,  vos
  fichiers  seront  stockes  dans    la    partition  de  root,     /var
  etant cree sous /, dans l'autre,  ce  sera  dans  la  partition  /usr,
  puisque  /usr   est  monte.    Vous  pouvez  aussi avoir un systeme de
  fichiers /var reserve.

  Le fichier de configuration principal  est  /etc/printcap.  Il  existe
  aussi,   pour l'impression  distante, les fichiers /etc/hosts.allow et
  /etc/hosts.lpd.

  Desormais,  le   repertoire       /etc   est      le  repertoire    ou
  sont     situes  les    fichiers   de configuration.   Vous     pouvez
  choisir de  les    mettre  ailleurs, mais definissez  toujours un lien
  symbolique  de /etc  vers vos fichiers.  Si votre systeme comporte des
  binaires qui vont toujours chercher leur configuration  dans  /usr/etc
  ou  /etc/inet, ils  sont  surement tres  anciens   et vous gagneriez a
  mettre votre systeme a jour.

  1100..  OOuu ttrroouuvveerr ddeess ffiillttrreess dd''iimmpprreessssiioonn ??

  Pas  mal  de filtres   sont  deja  rediges   et disponibles        sur
  _S_u_n_s_i_t_e                      ou                _l_i_p_6               dans
  /pub/sunsite/linux/system/printing.

  1100..11..  LLeess ffiillttrreess mmaaggiiqquueess

  Titre:          magicfilter
  Version:        1.1b
  Date-entree:    04APR95
  Description:    Un filtre d'impression automatique, extensible, parametrable.
                  Detecte tout type de fichier pour lequel existe un utilitaire
                  de conversion. Ce filtre est ecrit en C et completement controle'
                  par un fichier de configuration externe. Cette version
                  apporte la creation "automagique" de ce fichier
                  d'apres les logiciels installes sur votre systeme
                  grace a 'GNU Autoconf'.
                  Cette version corrige les bogues de la version 1.1/1.1a;
                  En plus: filtres pour imprimantes PostScript non-ASCII
  Auteur:         H. Peter Anvin <hpa@zytor.com>
  Site-initial:   sunsite.unc.edu
                  53000 /pub/Linux/system/printing/magicfilter-1.1b.tar.gz
  licence-copie:  GPL

  1100..22..  LLeess ffiillttrreess AAPPSS

       Titre:          apsfilter
       Version:        4.9.1
       Date-entree:    Lundi, 10. Juillet 1995, 21:22:35  MET DST
       Description:    magicfilter for lpd with auto filetype detection
       Mots-cles:      lpd magicfilter aps apsfilter
       Site-initial:   sunsite.unc.edu
                       /pub/Linux/system/printing/
                       211KB aps-491.tgz
       Platformes:     C-Compiler, gs Postscript emulator, pbmutils
       Licence-copie:  GPL

  Les  filtres APS  se    configurent  dans  l'entree   _i_f  du   fichier
  /etc/printcap  et   convertissent  la  plupart  des  types de fichiers
  connus   (texte,   _P_o_s_t_S_c_r_i_p_t,   dvi,   gif,    ...)     en  commandes
  comprehensibles par votre imprimante.

  1100..33..  LLeess ffiillttrreess EEZZ--mmaaggiicc

  Titre:          ez-magic printer filter
  Version:        1.0.5
  Date-entree:    26 Janvier 1997
  Description:    ez-magic est un filtre d'impression supportant 8 formats
                  de fichiers (txt,ps,gif,bmp,pcx,png,jpg,tif).
                  Il permet l'impression via un reseau (SMB), ou vers une
                  imprimante locale. Lit depuis un fichier, STDIN ou lpd.
                  Simple a utiliser et a configurer. Seul un fichier 'script'
                  est necessaire, pas de multitudes de manuels et pilotes.
                  Necessite des programmes de conversion (tels que netpbm et
                  ghostscript). Ecrit en 'bash'. Ajout de nouveaux formats
                  facile. Preconfigure pour HP DeskJet 870Cse en reseau.
                  Comparable a apsfilter et autres.
  Mots-cles:      magic filter, print, graphics, samba, network, smb,
                  ghostscript, postscript, gif, jpg, simple
  Auteur:         toby@eskimo.com (Toby Reed)
  Maintenu-par:   toby@eskimo.com (Toby Reed)
  Site-initial:   http://www.eskimo.com/~toby/ez-magic-1.0.5.tar.gz
                  38 kb ez-magic-1.0.5.tar.gz
  Site-secondaire:sunsite.unc.edu /pub/Linux/system/printing
                  38 kb ez-magic-1.0.5.tar.gz
  Licence-copie:  Copyright, droits complets de manipulation sauf 1 ou 2
                  restrictions.

  1111..  LLeess llooggiicciieellss dd''iimmpprreessssiioonn

  Les    logiciels   d'impression  sont    disponibles   en  France  par
  exemple sur ftp://ftp.lip6.fr/pub/linux/sunsite/system/Printing.

  1111..11..  GGhhoossttSSccrriipptt

  _G_h_o_s_t_S_c_r_i_p_t est un  logiciel majeur pour  l'impression  sous Linux. En
  effet   la   plupart   des  logiciels  generent  du   _P_o_s_t_S_c_r_i_p_t.   Ce
  logiciel, gratuit,   est capable de    convertir   le   _P_o_s_t_S_c_r_i_p_t  en
  langage  comprehensible  par   votre   imprimante (si le    pilote est
  disponible).  Il  joue   le role de   filtre  afin que vous   puissiez
  considerer   votre    imprimante   comme    _P_o_s_t_S_c_r_i_p_t.    Ceci   vous
  simplifie grandement la vie.

  _G_h_o_s_t_S_c_r_i_p_t est disponible sous deux formes.  Une version commerciale,
  appelee  _A_l_l_a_d_i_n _G_h_o_s_t_S_c_r_i_p_t, peut etre   utilisee librement pour  des
  besoins   prives  mais  ne   doit   pas   etre  distribuee  par    les
  distributions  payantes   de    Linux.   Elle   est  generalement   en
  avance  d'une annee sur   la version gratuite.

  La  version gratuite est  sous licence   GNU  et n'est  rien   d'autre
  qu'une version plus ancienne de _A_l_l_a_d_i_n _G_h_o_s_t_S_c_r_i_p_t.

  1111..11..11..  UUttiilliisseerr GGhhoossttSSccrriipptt

  gs  est  le  nom  de l'executable. gs -help vous donne une aide rapide
  sur  les  parametres disponibles.  (La   liste   des  pilotes  est  la
  liste des pilotes compiles avec  la version et non la liste complete.)
  Quoi que vous fassiez avec gs, il est  conseille  d'invalider  l'acces
  aux     fichiers    (par    -dSAFER).     En   effet _P_o_s_t_S_c_r_i_p_t est un
  langage  pleinement  operationnel  et  un   fichier   _P_o_s_t_S_c_r_i_p_t   peu
  scrupuleux  peut  endommager  vos  fichiers et vous donner un terrible
  mal de crane..

  Exemple de ligne de commande pour un imprimante Stylus 800

       gs -dNOPAUSE -sDEVICE=escp2 -sPAPERSIZE=a4 -sOutputFile=/dev/lp1 fichier.ps

  1111..11..22..  RReeggllaaggeess

  La  taille,   l'aspect et la    situation d'une image   sur  une  page
  sont  regles  par  le   pilote  de  l'imprimante dans _G_h_o_s_t_S_c_r_i_p_t.  Si
  vous   trouvez   que  vos   impressions    sont    tronquees   ou  mal
  cadrees     il     faudra    soit  retoucher  le      code   du pilote
  (deconseille),   soit  modifier   les    fichiers   de   configuration
  (gs_init.ps, gamma.ps)

  1111..11..33..  GGaammmmaa,, ttaaiilllleess ddee ppooiinnttss,, ......

  Il  se  peut que vous trouviez  vos   impressions trop  sombres.  Ceci
  peut arriver si votre imprimante n'a pas  une  definition  suffisante.
  Dans  ce  cas vous devez  creer votre  propre  fonction de  transfert.
  Pour  ceci,  creez  le  fichier   gamma.ps  dans  le   repertoire  des
  librairies   de  _G_h_o_s_t_S_c_r_i_p_t  et   appelez le fichier  sur la ligne de
  commande de  gs  avant  le  fichier  a  imprimer.  Pour  eclaricir  le
  resultat,   vous     devez     diminuer   les    valeurs    indiquees.
  Notamment si votre pilote utilise l'algorithme de _F_l_o_y_d_-_S_t_e_i_n_b_e_r_g pour
  rasteriser   les  couleurs, des  valeurs comprises  entre  0.15 et 0.2
  sont mieux adaptees.

            ---8<---- gamma.ps ----8<---
            %!
            %transfer functions for cyan magenta yellow black
            {0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer
            ---8<------------------8<---

  Vous  pouvez     aussi   modifier   les    dominantes    de   couleurs
  (voir   le repertoire /examples de  _G_h_o_s_t_S_c_r_i_p_t  qui contient une page
  de test des couleurs).

  1122..  LL''iimmpprreessssiioonn aa ddiissttaannccee

  Une des caracteristiques de lpd est qu'il  supporte  l'impression  sur
  des   imprimantes   rattachees  a   d'autres   machines  que la votre.
  Avec, en  plus,  une  combinaison   de  filtres  soignee,  vous  aurez
  un systeme   d'impression  transparent,    reparti et performant.
  1122..11..  VVeerrss uunn hhoottee UUnniixx//llppdd

  Pour    que      des    machines    distantes      puissent   utiliser
  l'imprimante attachee a   votre machine, le   nom   de  ces   machines
  doit  etre  reference      soit  dans    le    fichier /etc/hosts.lpd,
  soit   dans le  fichier   /etc/hosts.equiv.   Ce  sont   des  fichiers
  textes   normaux,  dans  lesquels  on   indique un  nom de machine par
  ligne.

  Il  est  preferable  de  declarer les   machines  dans  /etc/hosts.lpd
  qui   est   specialement   reserve   a   l'impression,   le    fichier
  /etc/hosts.equiv  donnant des droits plus etendus.

  Vous  pouvez restreindre les droits  d'acces distants  par  groupe  ou
  par  utilisateur.    Les     groupes  autorises sont    indiques grace
  au        parametre    :rg=:      du    fichier   printcap:   rg=admin
  restreint       l'utilisation          aux   utilisateurs   du  groupe
  admin.  Le   parametre booleen :rs=:  du  meme    fichier    restreint
  l'acces  aux utilisateurs ayant un compte sur votre machine.

  1122..11..11..  AAvveecc llppdd

  Pour   imprimer  vers  une  autre   machine,  vous  devez  creer   une
  entree printcap telle que:

            # REMOTE djet500
            lp|dj|deskjet:\
                    :sd=/var/spool/lpd/dj:\
                    :rm=machine.out.there.com:\
                    :rp=printername:\
                    :lp=/dev/null:\
                    :sh:

  Vous noterez qu'il doit  bien exister un  repertoire de  spool   local
  gere   par  votre lpd  local. Les fichiers soumis y seront copies puis
  envoyes vers la machine distante.

  1122..11..22..  AAvveecc rrllpprr

  Vous pouvez utiliser  rlpr  pour soumettre une  impression directement
  a  la  machine  distante  sans  passer  par un demon local et toute sa
  configuration.   C'est  particulierement  interessant   lorsque   vous
  imprimer rarement et vers differentes imprimantes.

  rlpr   s'appuie   sur  TCP/IP.   Il  n'est  pas  necessaires  que  les
  imprimantes soient connues   explicitement.   N'ayant  pas  besoin  de
  fichier  printcap, il est plus facile a gerer.  Il est compatible avec
  lpr.

  1122..22..  LLaannMMaannaaggeerr oouu SSaammbbaa..  IImmpprriimmeerr vveerrss  uunnee  iimmpprriimmaannttee   aattttaacchheeee
  aa   WWiinnddoowwss  9955,, NNTT,,

  Il  existe un   mini-document  (Printing   to   Windows   HOWTO)   qui
  decrit ceci tres bien.

  Il est possible de rediriger une file lpd vers un service d'impression
  SMB       grace           au            programme            smbclient
  (http://www.picante.com/~gtaylor/pht/man/smbclient.html).        Samba
  contient un script (smbprint) qui fait cela.   Vous  devez  mettre  un
  fichier  de   configuration   pour  l'imprimante   en  question   dans
  le repertoire de spool  et decrire le programme smbprint en  tant  que
  filtre dans /etc/printcap:

            lp|remote-smbprinter:\
                :lp=/dev/null:sh:\
                :sd=/var/spool/lpd/lp:\
                :if=/usr/local/sbin/smbprint:

  Vous    pouvez  egalement  utiliser     le  programme  smbclient  pour
  soumettre un fichier directement a un  service d'impression  SMB  sans
  impliquer  lpd.   Lisez  la  documentation de tous ces programmes pour
  plus d'information.

  1122..33..  VVeerrss uunnee iimmpprriimmaannttee NNeettWWaarree

  La suite     logicielle ncpfs  contient    un utilitaire appele nprint
  qui  fournit  les  memes fonctionnalites que smbprint pour    NetWare.
  Vous               pouvez               l'obtenir                  sur
  ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/.        Avec
  ncpfs vous pouvez  monter  des volumes    du  serveur  NetWare    sous
  Linux.    Vous   pouvez egalement  soumettre  des travaux d'impression
  vers  NetWare ou mettre  des  travaux  d'impression   de   NetWare  en
  file  sur  votre  systeme Linux.    Vous devez disposer   d'un  noyaux
  1.2.x  ou 1.3.54   et ulterieur.   ncpfs NNEE fonctionne   PPAASS  avec  un
  noyau 1.3.x (x < 54).

  Pour  que   nprint  fonctionne  via  lpd,  vous devez ecrire un shell-
  script    pour   diriger  stdin   sur    l'imprimante  NetWare.   Vous
  l'installerez  comme   un    filtre   (if)  d'une file    d'impression
  lpd. Vous obtiendrez :

       sub2|remote-NWprinter:\
                    :lp=/dev/null:sh:\
                    :sd=/var/spool/lpd/sub2:\
                    :if=/var/spool/lpd/nprint-script:

  le script nprint-script ressemble a quelque chose comme :

            #! /bin/sh
            # Essayez en premier le compte invite (guest)sans mot de passe!
            /usr/local/bin/nprint -S net -U name -P passwd -q printq-name -

  1122..44..  VVeerrss uunnee iimmpprriimmaannttee EEtthheerrTTaallkk

  Le     paquetage  logiciel netatalk    contient l'equivalent de nprint
  et      smbclient.         Referez-vous      au  Netatalk-HOWTO   dans
  lequel      est  bien   decrite   la procedure  d'impression  vers  et
  depuis un reseau _A_p_p_l_e.

  1122..55..  VVeerrss uunnee iimmpprriimmaannttee HHPP oouu aauuttrree iimmpprriimmaannttee EEtthheerrnneett

  Certaines  imprimantes    (HP  et  autres)    sont fournies  avec  une
  interface  Ethernet  que  vous   pouvez  directement  adresser    pour
  soumettre  vos  travaux d'impression.    Conformez-vous    au   manuel
  du    constructeur.    En general,  ces imprimantes  font  ``tourner''
  un   lpd  et fournissent une ou  plusieurs files vers  lesquelles vous
  pouvez imprimer.  Une imprimante  HP, par exemple, pourra  fonctionner
  avec une entree printcap telle que:

       lj-5|remote-hplj:\
                    :lp=/dev/null:sh:\
                    :sd=/var/spool/lpd/lj-5:\
                    :rm=printer.name.com:rp=raw:

  Les     imprimantes  LaserJet    HP  avec  une   interface   JetDirect
  ont  en general deux files  incorporees; l'une ``raw'' accepte le  PCL
  (et  peut-etre  le  PostScript),  l'autre ``text'' accepte l'ascii pur
  (et    s'arrange     pour   resoudre     d'elle-meme    les  problemes
  d'effets d'escalier).

  Dans   un   environnement   dans    lequel  plusieurs  imprimantes  ne
  supportent pas le  _P_o_s_t_S_c_r_i_p_t,  il  peut etre   bon  de configurer  un
  serveur  d'impression dedie vers lequel  toutes les machines enverront
  leurs travaux et sur lequel GhostScript tournera.

  1122..66..  VVeerrss dd''aanncciieennnneess HHPP

  Certaines anciennes imprimantes HP ne  supportent qu'un protocole  mal
  foutu  s'appuyant  sur    des    connexions     TCP,  notamment    les
  premiers modeles a base de cartes JetDirect (et quelques JetDirectEx).
  Pour   imprimer  vers  de  telles   imprimantes, vous devez ouvrir une
  connexion  TCP   vers   un  port  dedie   (9100)   et  envoyer   votre
  impression vers cette connexion. Voici le script Perl correspondant :

       #!/usr/bin/perl
       # Thanks to Dan McLaughlin for writing the original version of this
       # script (And to Jim W. Jones for sitting next to Dan when writing me
       # for help ;)

       $fileName = @ARGV[0];

       open(IN,"$fileName") || die "Can't open file $fileName";

       $dpi300     = "\x1B*t300R";
       $dosCr      = "\x1B&k3G";
       $ends = "\x0A";

       $port =  9100 unless $port;
       $them = "bach.sr.hp.com" unless $them;

       $AF_INET = 2;
       $SOCK_STREAM = 1;
       $SIG{'INT'} = 'dokill';
       $sockaddr = 'S n a4 x8';

       chop($hostname = `hostname`);
       ($name,$aliases,$proto) = getprotobyname('tcp');
       ($name,$aliases,$port) = getservbyname($port,'tcp')
           unless $port =~ /^\d+$/;;

       ($name,$aliases,$type,$len,$thisaddr) =
               gethostbyname($hostname);
       ($name,$aliases,$type,$len,$thataddr) = gethostbyname($them);
       $this = pack($sockaddr, $AF_INET, 0, $thisaddr);
       $that = pack($sockaddr, $AF_INET, $port, $thataddr);

       if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) {
       #    print "socket ok\n";
       }
       else {
           die $!;
       }
       # Give the socket an address.
       if (bind(S, $this)) {
       #    print "bind ok\n";
       }
       else {
           die $!;
       }

       # Call up the server.

       if (connect(S,$that)) {
       #    print "connect ok\n";
       }
       else {
           die $!;
       }

       # Set socket to be command buffered.

       select(S); $| = 1; select(STDOUT);

       #    print S "@PJL ECHO Hi $hostname! $ends";
       #    print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends";
       #    print S $dpi300;

       # Avoid deadlock by forking.

       if($child = fork) {
           print S $dosCr;
           print S $TimesNewR;

           while (<IN>) {
               print S;
           }
           sleep 3;
           do dokill();
       } else {
           while(<S>) {
               print;
           }
       }

       sub dokill {
           kill 9,$child if $child;
       }

  1122..77..  LLeess ffiillttrreess dd''eennttrreeee ppoouurr ddeess iimmpprriimmaanntteess ddiissttaanntteess

  Une  des   bizarreries  de   lpd  est  que le   filtre   d'entree (if)
  n'est pas    execute    pour  des    imprimantes  distantes.  Si  vous
  devez  absolument  passer  par  un   filtre,   il vous faudra utiliser
  deux  files,   la    premiere    redirigeant   vers      la  deuxieme.
  Par exemple :

            lj-5:remote-hplj:\
                    :lp=/dev/null:sh:\
                    :sd=/var/spool/lpd/lj-5:\
                    :if=/usr/lib/lpd/filter-lj-5:
            lj-5-remote:lp=/dev/null:sh:rm=printer.name.com:\
                    :rp=raw:sd=/var/spool/lpd/lj-5-raw:

  et le filtre filter-lj-5 (exemple):

            #!/bin/sh
            gs <options> -q -dSAFER -sOutputFile=- - | \
                    lpr -Plj-5-remote -U$5

  L'option  -U  ne fonctionne que si  lpr est lance en tant  que  demon.
  Elle   positionne  correctement   le    nom    du  soumissionnaire  du
  travail    dans   la  deuxieme   queue.     Il serait d'ailleurs mieux
  d'utiliser   une  methode  plus  sure   pour recuperer ce  nom car  ce
  n'est pas toujours  le 5eme parametre.

  1122..88..  IImmpprriimmeerr ddeeppuuiiss WWiinnddoowwss

  L'impression  depuis  un  client  Windows  vers  un   serveur Unix est
  directement supporte  par SMB en  utilisant le  paquetage  SAMBA  (qui
  supporte  egalement  le  partage   de  fichiers du systeme de fichiers
  Linux vers les clients Windows).

  Samba est fourni avec une documentation  complete.  Vous  pouvez  soit
  installer un  filtre magique sur Linux et  imprimer du _P_o_s_t_S_c_r_i_p_t soit
  installer un pilote     d'imprimante  specifique sous     Windows   et
  decrire  une   file sans   filtre.    En s'appuyant sur   les  pilotes
  Windows, vous pourrez obtenir de meilleurs  resultats, mais  c'est  un
  peu  plus  complique  a administrer si   vous avez plusieurs  stations
  sous Windows.  Donc essayez d'abord la premiere solution.

  1122..99..  DDeeppuuiiss NNeettwwaarree

  Il y  a des services  NetWare disponibles  pour Linux,  mais  je  n'ai
  aucune  idee  si    vous  pouvez  offrir   des   services d'impression
  depuis des client Netware. Des informations sont les bienvenues.

  1122..1100..  DDeeppuuiiss uunn AAppppllee

  Netatalk permet d'imprimer depuis une  station  Apple  sur  EtherTalk.
  Voir le Netatalk   HOWTO (http://thehamptons.com/anders/netatalk) pour
  de plus amples renseignements.

  1122..1111..  IImmpprriimmeerr vveerrss uunn ffaaxx

  1122..1111..11..  UUttiilliisseerr uunn mmooddeemm//ffaaxx

  Si    vous disposez   d'un   modem/fax,   vous     pouvez   configurer
  votre  systeme    pour     envoyer   ou   recevoir    des    fax   aux
  formats _P_o_s_t_S_c_r_i_p_t, dvi, ascii, etc...  Vous  pourrez  meme  faire  en
  sorte que votre courrier electronique soit faxe!

  Les   modems/Fax  supportent  les  commandes   de classe 1  ou 2.  Les
  modems de classe  1 ont un  sous-ensemble  de fonctionnalites d'un fax
  disons  traditionnel  (donc, le logiciel doit faire le reste...  et le
  cout de traitement est parfois critique!)

  La classe 1  correspond   au  standard   EIA   578.   Les   modems  de
  classe   2  repondent   au  sandard  EIA   592. Vous trouverez dans la
  documentation de votre  modem a  quelle   classe   il  appartient.  Ne
  confondez  pas classe et groupe. Le  groupe est generalement le groupe
  III.

  Les logiciels de  fax  tournant sous  Linux  doivent savoir  convertir
  les donnees recues  en  un format  compatible  avec le groupe III pour
  la  transmission.  Comme d'habitude  _G_h_o_s_t_s_c_r_i_p_t    sait  faire  !  Le
  pilote tiffg3 genere des  messages fax encodes au format g3/tiff. Vous
  devrez  compiler et integrer le pilote si ce n'est deja fait.
  Un des logiciels    les plus complets    sur  le sujet,   HylaFax  est
  disponible sur :

            ftp.sgi.com:/sgi/fax/?????.src.tar.Z

  Il   supporte  toutes  sortes de  choses comme  les  multiples  modems
  et  la diffusion.

  mgetty    + sendfax  est un    couple   de  logiciels,  contenant   un
  getty pour Linux et les modems fax ainsi qu'un logiciel d'envoi de fax
  assez simple.  Ce paquetage se trouve a:

            sunsite.unc.edu:/pub/Linux/system/serial/getty/mgetty+sendfax-1.0.0.tar.gz

  Enfin, efax merite   d'etre mentionne.    C'est   un  excellent  choix
  pour Linux. Il supporte les classes 1 et 2.

            sunsite.unc.edu:/pub/Linux/apps/serialcomm/fax/efax08a.tar.gz

  (Repertoire      dans       lequel      on        trouvera   egalement
  vfax10.tar.z,                                          qfax1.3.tar.gz,
  xfax.v1.07s.tar.gz)

  1122..1111..22..  UUttiilliisseerr llee sseerrvviiccee dd''iimmpprreessssiioonn ddiissttaanntt

  C'est  un  service experimental vous  permettant d'envoyer un courrier
  electronique que  vous souhaitez imprimer sur un  fax   distant.   Des
  formats  tels  que PostScript  sont supportes. Bien que  la couverture
  geographique   de  ce  service  soit   tres   faible,   il   est  tres
  prometteur.      Pour             plus         d'information, referez-
  vous    au    site    Web     ``Remote    Printing       WWW    Site''
  (http://www.tpc.int/).

  1133..  LLeess llooggiicciieellss qquuii ppeerrmmeetttteenntt ddee rreeaalliisseerr ddee bbeelllleess iimmpprreessssiioonnss

  Linux sait faire tourner un grand nombre de   binaires  avec  plus  ou
  moins  de  reussite:   Linux/x86,  Linux/Alpha,    Linux/Sparc,  iBCS,
  Windows  (Un jour, avec  Wine),  Mac/68k   (avec  Executor)  et  Java.
  WordPerfect,   traitement  de   texte  commercial  tourne   bien  avec
  l'emulation  iBCS.  La  suite  Corel  Office  en  Java  est  egalement
  prometteuse...)

  En  ce  qui concerne Linux, les choix  sont limites aux logiciels Unix
  classiques:

  1133..11..  LLeess llaannggaaggeess aa bbaalliisseess

  La  plupart  des  langages  balises  sont  bien  adaptes  aux  projets
  consequents   ou   repetitifs   pour   lesquels   vous  souhaitez  que
  l'ordinateur  controle la mise  en forme  pour un  resultat  homogene.
  Vouloir   ajouter   un   bel  effet   dans  un  tel  langage  choquera
  certainement.

  1133..11..11..  nnrrooffff

  C'est l'un des plus anciens langages balises sous Unix. Les  pages  de
  manuel  en  ligne sont l'exemple le  plus connu de pages formattees en
  macros  nroff; beaucoup de gens ne  jurent que par   lui...   mais  sa
  syntaxe  est  quand  meme  plus  compliquee  que  necessaire; ce n'est
  certainement  pas   le bon     choix   pour  les    nouveaux  projets.
  Il  est  interessant de savoir que  vous pouvez imprimer  une page  de
  manuel directement en   PostScript avec groff.   La  syntaxe   est  la
  suivante: man -t truc | lpr. Le resultat en vaut vraiment la peine.

  1133..11..22..  TTeeXX

  TeX  (et  le paquetage de macros LaTeX) est  l'un des langages balises
  le   plus repandu sous Unix.  Les   travaux  techniques  sont  souvent
  rediges  en LaTeX parce qu'il  simplifie grandement la mise en page et
  il  est   l'un  des  rares   logiciels  a  traiter  correctement    et
  puissamment  les   fomules mathematiques. Le format  de  sortie de TeX
  est  dvi, et  peut  etre  converti  en  _P_o_s_t_S_c_r_i_p_t  ou   PCL   (HP)  a
  l'aide du programme dvips ou dvilj.

  1133..11..33..  SSGGMMLL

  Il  y  a au moins un interpreteur de SGML gratuit  sous Unix et Linux;
  il est    la base  du systeme    de documentation  LinuxDoc-SGML.   Il
  supporte bien entendu d'autres types de documents.

  1133..11..44..  HHTTMMLL

  Bien connu, il permet d'ecrire des documents simples.

  1133..22..  TTrraaiitteemmeennttss ddee tteexxtteess WWYYSSIIWWYYGG

  Ca   y  est!  Linux  et   Unix ne manquent plus de  tels traitement de
  texte. Il existe plusieurs  suites  logicielles  dont  une  disponible
  gratuitement pour une utilisation personnelle: _S_t_a_r_O_f_f_i_c_e.

  1133..22..11..  SSttaarrOOffffiiccee

  Une  compagnie allemande  distribue  StarOffice pour  Linux.   On peut
  trouver une version libre de droits  sur les serveurs ftp  classiques.
  Cette  version   est    limitee  a  un   usage personnel.  Cette suite
  logicielle est   tres complete; vous  trouverez   tout  ce  dont  vous
  reviez.    Il   existe  d'ailleurs  un   mini-HOWTO   decrivant ou  la
  trouver et  comment l'lnstaller.  La   plupart  des  imprimantes  sont
  reconnues.

  1133..22..22..  LLyyXX

  LyX est une   interface pour LaTeX assez prometteuse.  Rendez-vous sur
  la          page         Web      de          Lyx       a  http://www-
  pu.informatik.uni-tuebingen.de/users/ettrich/   pour   de  plus amples
  renseignements.

  1133..22..33..  LL''iinntteerrffaaccee uuttiilliissaatteeuurr ''AAnnddrreeww''

  Cette  interface comprend un  editeur WYSIWYG  appele ez comportant la
  plupart  des  fonctionnalites  de base d'un traitement de texte: HTML,
  et MIME pour courrier et  forums de  discussions   (niouzes,  si  vous
  preferez).

  1133..22..44..  OOffffrreess ccoommmmeerrcciiaalleess

  Caldera    et    Red    Hat   vendent      des  paquetages   logiciels
  comprenant les applications  principales,  a savoir un  traitement  de
  texte  et  un  tableur.   Caldera  vend  egalement (a verifier)  WABI,
  l'emulation   Windows  de  Sun qui   permet   de faire    tourner  les
  applications de Microsoft bien connues.

  Pour      plus    d'information,      consultez     les     sites   de
  Caldera  (http://www.caldera.com)         et            de         Red
  Hat (http://www.redhat.com).

  D'autres  vendeurs  peuvent  m'envoyer  un courrier descriptif de leur
  offre.

  1144..  LLooggiicciieellss ddee pprree--vviissuuaalliissaattiioonn

  Tout ce que vous imprimez peut etre  egalement  visualise  a  l'ecran.
  Ceci permet  dans bien des cas d'economiser du papier.

  1144..11..  PPoossttSSccrriipptt

  GhostScript     possede    un   pilote  X11  utilise    par  Ghostview
  (http://www.picante.com/~gtaylor/pht/man/ghostview.html).           La
  derniere  version  de  ce   logiciel  devrait   permettre egalement la
  visualisation de fichiers au format PDF.

  1144..22..  TTeeXX ddvvii

  les fichiers TeX    dvi    (DeVice Independent  -    independant    du
  peripherique)     peuvent      etre    visualises    sous     X11    a
  l'aide                              de                            xdvi
  (http://www.picante.com/~gtaylor/pht/man/xdvi.html).    Les   versions
  recentes  de  xdvi  appellent   ghostscript    pour   le   rendu    de
  specificites _P_o_s_t_S_c_r_i_p_t.

  Un  pilote  VT100   (dgvt)   existe egalement.  Tmview fonctionne sous
  Linux avec svgalib, si cela vous suffit.

  1144..33..  AAddoobbee PPDDFF

  _A_c_r_o_b_a_t  _R_e_a_d_e_r d'Adobe  est  disponible pour Linux.   Vous  pouvez le
  charger  depuis  http://www.adobe.com.  Vous pouvez egalement utiliser
  xpdf, un logiciel   gratuit  fournit avec  les  sources.  _G_h_o_s_t_S_c_r_i_p_t,
  devrait, comme je l'ai dit plus haut, supporter le format pdf.

  1155..  LLeess iimmpprriimmaanntteess sseerriiee

  Le  demon  lpd fournit cinq attributs que vous pouvez positionner dans
  /etc/printcap afin  de  controler le  port serie sur lequel se  trouve
  votre imprimante.

       br
            (numerique) definit le taux de transfert en bauds (appel a ioctl(2))
       fc
            (num) efface des indicateurs (sgtty.h)
       fs
            (num) positionne des indicateurs (inverse de `fc')
       xc

       xs

  Pour   definir    la      vitesse   du     port,  la    syntaxe    est
  evidente. Exemple: br .Pp

  Les autres parametres a positionner correspondent  a  un  ensemble  de
  bits,  que  l'on  pourra  soit   positionner,   soit  mettre a 0. Pour
  effacer des bits, on utilisera les  parametres  fc  et  xc,  pour  les
  positionner, fs et xs.

  Faites  bien  attention aux bits  que vous selectionnez.  Mais au fait
  que sont-ils  ?  Souvenez-vous..., la  commande stty.  Elle indique de
  nombreux   parametres  caracterisant  un   tty.   La commande stty  -a
  affiche en clair  les  parametres du tty, certains  d'entre-eux  etant
  precedes  d'un  tiret   s'ils  sont invalides et sans tiret s'ils sont
  valides.  La commande stty peut   etre    appliques  au  port    serie
  (voir  exemple).   Ce sont certains de   ces parametres (des drapeaux,
  des flags, donc des bits) que l'on va manipuler.

       # stty -a < /dev/ttyS2
            speed 9600 baud; rows 0; columns 0; line = 0;
            intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
            eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
            lnext = ^V; min = 1; time = 0;
            -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
            -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr
            -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel
            -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0
            bs0 vt0 ff0
            -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop
            -echoprt -echoctl -echoke

  Note:    utilisez  toujours   stty    de  cette    facon    (stty    <
  /dev/ttyS?); cette command utilise en effet l'entree standard).

  Vous pouvez utiliser cette commande pour configurer le port de facon a
  obtenir  une      impression    correcte.       Par   exemple,     les
  differences   que   l'on  peut   noter  entre le  stty   ci-dessus  et
  l'initialisation du port  au  demarrage de  ma   machine  reside  dans
  les  informations  -clocal, -crtscts et  ixon.  (La   configuration de
  votre   port  pourra   tres  bien  etre differente  selon  la  maniere
  dont votre imprimante gere le controle de flux).

  Votre   port  etant bien configure, faites  : cat fichier > /dev/ttyS?
  (? est  le numero de  votre  port) pour  imprimer un fichier.

  Imprimez               par                exemple                   le
  fichier     /usr/src/linux/include/asm-i386/termbits.h.           Vous
  y decouvrirez  un   tas    de  definitions   de    constantes  et   de
  structures.    Nous  allons  voir  quelles  valeurs definies  dans  ce
  fichier vont nous servir pour configurer le port,  non plus avec stty,
  mais  avec  les  parametres  fc,   xc,  fs  et xs du fichier printcap.
  Regardez la section commencant par :

            /* c_cflag bit meaning */
            #define CBAUD   0010017

  Elle decrit justement les bits manipulables a l'aide de fc et fs  dont
  on  parlait.  On  y voit les constantes des  vitesses de modulation en
  baud, puis des lignes  qui  nous  interessent  particulierement  :  ce
  sont   les  memes      parametres   que dans   la   commande stty.  Je
  sens que  vous voyez ou  on veut en venir.  stty n'est qu'un interface
  necessaire au positionnement (ou  effacement) de bits.

  Vous   savez  maintenant   que    chaque parametre   affiche  par stty
  correspond a un bit, et qui ont  la valeur 0 lorsqu'il y  a  un  tiret
  devant.   Notez  alors  les  bits  a  effacer   (ce  sera fait avec la
  parametre fc) et ceux a positionner (parametre fs).   Exemple:   `fcfc
  semble   surcharger  le   parametre   br,  donc  prenez  garde  a  les
  positionner correctement).

  Ensuite  occupez-vous des bits  a positionner. Par exemple  s'il  faut
  positionner    les    bits   cs8,   hupcl  et    cread,  regardez  les
  constantes    CS8     (0000060),    HUPCL    (0002000)     et    CREAD
  (0000200).   Pensez   a  la  vitesse de  modulation qu'il  faut  aussi
  definir, dans mon cas,   ce  sera  B9600   (0000015).  Tous  ces  bits
  ensemble   font  `0002275'.    Indiquez  cette   valeur  au  parametre
  fs.

  Effectuez   les    meme   reglages     avec   la   section    suivante
  intitulee

            /* c_lflag bits */

  Dans   mon cas  je n'ai rien   a  positionner, j'ai  donc simplement a
  fournir  la  valeur  xcvotre  fichier  printcap  correctement  defini,
  essayez  d'imprimer.  Si quelque chose ne va pas, continuez a lire les
  paragraphes suivants.

  Souvenez-vous  de toujours commencer par  les  bits que vous souhaitez
  voir  a   0   (fc    et  xc), puis   de   definir  seulement apres des
  bits a positionner (fs et xs).

  La  commande cat   fonctionne  pour  le port  serie,  mais  pas lpd

  La mise en place de lpd n'est  pas traitee ici,  mais  sachez  que  si
  vous    avez   des    problemes  avec    la    configuration  du  port
  serie,  vous  pouvez empecher  lpd  de  le  configurer en  considerant
  votre   imprimante  comme ne  presentant  pas  une interface  normale.
  Lisez egalement   a ce propos le chapitre suivant.

  Donnez  a     votre      imprimante    le     peripherique  /dev/null1
  (mknod /dev/null1  c  1   3). N'utilisez pas /dev/null, pour    ne pas
  qu'il    soit ouvert  de  maniere exclusive. Enlevez   les  parametres
  de vitesse et  de positionnement des bits du fichier printcap.

  Creez un shell-script comme ci-dessous :

                #!/bin/sh
                echo if: $* >> /var/spool/lpd/results
                # /dev/lp est un lien vers /dev/ttyS2 auquel est reliee l'imprimante
                exec votre_vieux_filtre $* > /dev/lp

                #!/bin/sh
                echo if: $* >> /var/spool/lpd/results
                cat > /dev/lp
                # la commande ``echo -ne'' suppose que /bin/sh correspond a bash
                echo -en \\f > /dev/lp

  Donnez-lui     les   droits   de    lecture/ecriture   pour  tout   le
  monde. Essayez-le: /usr/lib/lpd/if <FICHIER.

  Definissez  un  filtre    d'entree   dans   votre     fichier printcap
  pour appeler ce script. :if=/usr/lib/lpd/if:.

  Utilisez     la  commande     stty     pour     configurer  le    port
  correctement.  Essayez d'imprimer.  Vous  devriez  pouvoir  determiner
  si  le(s)  fichier(s) sont bien mis dans le repertoire de spool.  Cela
  devrait  imprimer,  si  votre  essai  manuel  du  script  precedent  a
  fonctionne.    Bien  entendu, le mieux  serait de pouvoir se passer du
  script d'entree et donc du parametre if.

  Supposons   donc   que    la  methode  precedente    a fonctionne,  et
  que   vous   pensez  avoir   correctement  configure  votre    fichier
  printcap.   Executez    la     commande  stty    -a  </dev/ttyS?.   Si
  certains  parametres  ne  sont pas corrects, verifiez   les constantes
  du    fichier termbits.h.  Si  la  configuration    est    incorrecte,
  malgre   tous    vos  efforts   de verification,  n'hesitez    pas   a
  installer   un demon recent.

  1155..11..  IImmpprriimmaanntteess aanncciieennnneess eett ccaarraacctteerreess ppeerrdduuss

  Certaines  anciennes  imprimantes  series  ont  des   petits   tampons
  memoire  et  gerent   mal  le controle  de flux.  Supprimer le FIFO du
  port serie  (16550)  avec setserial  (faites croire  a  setserial  que
  c'est un port 8250 et ca marchera).

  1166..  CCoommpplleemmeennttss eett rreeggllaaggeess

  Si  votre     imprimante  est  _P_o_s_t_S_c_r_i_p_t,  elle    peut  ne  pas etre
  capable de traiter du texte pur.  Si tel  est  le  cas,   vous  devrez
  mettre en place un filtre pour transformer  le texte en _P_o_s_t_S_c_r_i_p_t. Un
  excellent freeware  (logiciel libre de tout   droit de distribution et
  d'utilisation)  appele  nenscript  realise cela tres bien.  Si vous ne
  mettez pas en place un  tel  filtre,   vous  devez  vous  assurer  par
  d'autres moyens que l'imprimante ne recoit bien que du _P_o_s_t_S_c_r_i_p_t.

  Vous    pouvez  egalement  definir   dans    vos  fichiers  de   login
  (.profile,  par   exemple)  ou  celui   par   defaut,   une   variable
  d'environnement     PRINTER  definissant  l'imprimante     a utiliser.
  Exemple:

            export PRINTER=lpr0

  Ceci  evite  d'avoir a       specifier -Plpr0 a chaque fois.

  Il est  possible de  ``reutiliser''  une  entree  printcap.   Si  vous
  declarez   votre  propre    machine  comme machine   hote distante, et
  une  autre   imprimante   comme  imprimante  distante,   vous   pouvez
  rediriger   les   donnees    a  imprimer  de    l'une   vers  l'autre.
  Souvenez-vous que  si vous  utilisez  cette technique,   les   donnees
  passeront    par  chaque   filtre  de  la  chaine   et   seront  mises
  successivement dans chaque spool.

  Bien que vous puissiez specifier  pour une imprimante  autant  d'alias
  que   vous   le   souhaitez,    il  semble   que   pour  la  meilleure
  utilisation, les deux premiers doivent  etre  identiques  et   doivent
  correspondre  au  nom  reel.   Certains    programmes    n'utiliseront
  que    ces   deux entrees. La  commande  lpc  indiquera  seulement  le
  premier   alias,   alors   que  les   commandes  lpr,   lprm   et  lpq
  comprennent  tous les alias.

  Plutot  que  de  specifier   une   taille  maximum  de  fichier   pour
  l'impression,  vous  prefereriez sans doute  que les fichiers du spool
  ne puissent remplir votre disque, meme temporairement. Pour ce  faire,
  creez   un     fichier   appele   minfree   dans  chaque repertoire de
  spool,  contenant, sous  forme   d'un  nombre  de  blocs  (1  Ko  pour
  Linux),  la  quantite  minimum  d'espace disque devant rester pour que
  les donnees puissent  etre  acceptees dans le spool.   Vous    creerez
  un       fichier   reel    dans      le repertoire    principal     de
  spool   et,       dans    chaque sous-repertoire, un  lien  symbolique
  vers ce fichier.

  1177..  RReessuummee

  Voici  un  guide   de   configuration  etape   par  etape   pour   une
  imprimante    nommee /dev/lp0. Vous pouvez l'etendre  a  votre  guise.
  Pour faire ce qui suit,  vous devez etre root.  (NDT:  L'auteur a tout
  installe dans /usr/spool/lpd.  J'ai prefere     modifier    legerement
  cette  configuration     en  definissant  /usr/spool/lp/lpr0        et
  /usr/spool/lpd, comme dans la plupart des distributions)

  +o   Verifiez les droits   d'acces et  l'emplacement    de  lpr,  lprm,
     lpq,  lpc et lpd.   Voir a ce  propos: Les programmes importants.

  +o    Creez  le     repertoire   de    spool  pour  votre   imprimante,
     appelee dans notre exemple lpr0:

                mkdir /usr/spool/lp /usr/spool/lp/lpr0
                chowm root.lp /usr/spool/lp /usr/spool/lp/lpr0
                chmod ug=rwx,o=rx /usr/spool/lp /usr/spool/lp/lpr0

  +o   Creez un repertoire permettant au  demon  d'y  mettre  son  propre
     fichier de verrouillage lpd.lock:

           mkdir /usr/spool/lpd
           chowm root.lp /usr/spool/lpd
           chmod ug=rwx,o=rx /usr/spool/lpd

  +o     Dans     les       repertoires         /usr/spool/lp/lpr0     et
     /usr/spool/lpd,  creez  les  fichier  necessaires,  avec  les  bons
     droits   (Cette   manipulation   n'est  pas  necessaire  avec   les
     versions recentes du gestionnaire d'impression):

                cd /usr/spool/lp/lpr0
                touch .seq errs status lock
                chown root.lp .seq errs status lock
                chmod ug=rw,o=r errs status
                chmod u=rw,go=r lock
                chmod u=rw,g=r,o=x .seq

                cd /usr/spool/lpd
                touch .seq errs status lock
                chown root.lp .seq errs status lock
                chmod ug=rw,o=r errs status
                chmod u=rw,go=r lock
                chmod u=rw,g=r,o=x .seq

  +o    Creez    le          shell-script    filtre_entree     dans    le
     repertoire      /usr/spool/lp/lpr0.  Utilisez le      filtre decrit
     precedemment. Donnez-lui les bons droits.

                cd /usr/spool/lp/lpr0
                chmod ug=rwx,o=rx filtre_entree

  +o   Creez le fichier  /etc/printcap, s'il n'existe  pas.  Enlevez  les
     entrees   qu'il   contient et ajoutez   une entree de  test decrite
     precedemment.  Donnez-lui       les    droits -rw-r--r--.

  +o   Editez le fichier /etc/rc.d/rc.local ou rc.multi. Ajoutez la ligne
     /usr/sbin/lpd     a   la   fin.   Cela lancera    le demon au boot.
     Vous pouvez aussi le lancer a la main :

       root# /usr/sbin/lpd

  +o   Effectuez un test d'impression :

           ls -l | lpr -Plpr0

  +o   Regardez dans   /tmp   et  verifiez   la   presence    du  fichier
     testlp.out.  Il    devrait   contenir    le  listing  du repertoire
     dans lequel vous etiez.

  +o    Editez  /etc/printcap.    Dupliquez  l'entree  lpr0.   Vous  avez
     alors      2  entrees  identiques.        Dans  la premiere entree,
     changez, sur   la premiere   ligne  uniquement, les occurrences  de
     lpr0  par testlp.  Dans la  seconde entree, changez /dev/null   par
     le peripherique reel, par   exemple  /dev/lp0.  Dans   la   seconde
     entree, enlevez le champ if completement.

  +o    Rebootez  le  systeme    ou     tuez le demon  d'impression    et
     relancez-le,   afin       qu'il   reprenne      en     compte    le
     fichier /etc/printcap modifie.

  +o   Refaites un test  d'impression -  Allumez  votre imprimante.  Cela
     devrait imprimer!

                ls -l | lpr -Plpr0

  1188..  PPrroobblleemmeess aavveecc llaa LLaasseerrJJeett 55MM

  1188..11..  PPoossttSSccrriipptt

  Cette  imprimante   peut    poser des  problemes    d'impression    en
  PostScript.   Si   vous  constatez,   apres  avoir imprime un document
  PostScript, qu'elle ne  sort  plus les documents  suivants et  qu'elle
  affiche   ``DATA  RECEIVED''  en  permanence, suivez  les conseils qui
  suivent.  Merci a <Patrick.Begou@hmg.inpg.fr>.

  +o    l'imprimante  est  en   configuration   d'usine  avec   le   flag
     d'impression des erreurs postscript valide.

  +o  Le fichier printcap est tres simple:

       # /etc/printcap
       #
       # This file can be edited with the printtool in the control-panel.
       laser5M|lp:\
           :lp=/dev/lp2:\
           :sh:\
           :sd=/var/spool/lpd/laser5M:\
           :lf=/var/spool/lpd/laser5M/erreurs:\
           :if=/var/spool/lpd/laser5M/filter_court:

  +o    Le   filtre  utilise  (filter_court)   est  donne ci-dessous.  Il
     n'accepte  que  les  fichiers  _a_s_c_i_i,  _P_o_s_t_S_c_r_i_p_t   et   _P_o_s_t_S_c_r_i_p_t
     _c_o_m_p_r_e_s_s_e.   Ce   qui  est   interessant,   ce  sont   les  chaines
     d'initialisation en PCL.  En gros:

       \033%-12345X      passage en mode PCL (d'apres l'ingenieur de MDS)
       \033E             reinitialisation de l'imprimante les \n
                         semblent indispensables dans le filtre.

  Avec echo -ne, Esc c'est  033 en octal (27 en decimal )

  #!/bin/sh
  #
  # Filtre d'impression gerant l'ascii, le postscript et le postscript
  # compresse pour une laserjet  5M. A declarer comme filtre "if" dans
  # /etc/printcap.
  # Reinitialise l'imprimante entre chaque impression postscript pour
  # eviter les erreurs sur timeout.
  #
  # Version 0.1   P. BEGOU    8/97  (Patrick.Begou@hmg.inpg.fr)
  #
  # recuperation des donnees dans un fichier temporaire
  #
  FILE=/tmp/laser5M.$$
  cat - > ${FILE}
  #
  # Scrutation du type de fichier
  #
  filetype=`file $FILE| cut -d":" -f2`
  case $filetype in
    *PostScript*)
         (echo -ne "\033%-12345X\n"; cat ${FILE}; echo -ne "\033%-12345X\033E\033%-12345X\n")
          echo " $FILE postscript" >&2
          ;;
    *text*|*script*)
         (echo -ne "\033%-12345X\n"; /usr/bin/nenscript -s -2rG -p- ${FILE};
          echo -ne "\033%-12345X\033E\033%-12345X\n")
          echo " $FILE texte" >&2
          ;;
    *compress*)
         # verifions qu'il s'agit bien de postscript.
         resu=`zcat ${FILE} |head -1|grep "^%!"|wc -l`
         if [ ${resu} -eq 1 ]
         then
            (echo -ne "\033%-12345X\n"; zcat ${FILE}; echo -ne "\033%-12345X\033E\033%-12345X\n")
            echo " $FILE compresse" >&2
         else
            echo " $FILE compresse non reconnu" >&2
         fi
         ;;
    *)
          echo " $FILE non reconnu" >&2
          ;;
  esac

  #
  # On repond Ok, tout s'est bien passe.
  #
  rm ${FILE}
  exit 0

  1188..22..  RReeccttoo--vveerrssoo

  Voici comment configurer, par  logiciel, le  passage  en  mode  recto-
  seulement ou recto-verso aussi bien pour de l'ascii que du PostScript.

  Il suffit d'inserer apres la premiere ligne...

  %!Ado...

       %%BeginFeature: *Duplex DuplexNoTumble <<Duplex true  /Tumble  false>>
       setpagedevice %%EndFeature

  ou, pour valider le recto seul:

       %%BeginFeature:  *Duplex None <<Duplex false>> setpagedevice %%EndFea-
       ture

  1199..  IInnffoorrmmaattiioonnss ccoonncceerrnnaanntt ccee ddooccuummeenntt

  Sauf changements, les documents HOWTO sont places sous  copyright  par
  leurs  auteurs respectifs.  Les  documents  Linux HOWTO peuvent   etre
  reproduits  et distribues   en  tout ou  partie,  par   quelque  moyen
  physique    que   ce  soit,  sans   l'autorisation  de  l'auteur.  Les
  traductions et travaux  derives    sont   egalement     permis    sans
  autorisation  expresse.    La  distribution  a  titre  commercial  est
  permise  et  meme encouragee; cependant, l'auteur souhaiterait en etre
  averti.

  En bref, nous souhaitons que l'information contenue  dans ces document
  soit  repandue   le   plus  largement    possible.   Cependant,   nous
  souhaitons  maintenir  le  copyright sur ce document, et souhaiterions
  etre avertis de toute re-distribution.  Si vous  avez des questions  a
  ce   propos,  contactez  Greg   Hankins,  le nouveau coordinateur  des
  documents  Linux  HOWTO  a  l'adresse  <gregh@cc.gatech.edu>.      Son
  representant          francais          est         Eric         Dumas
  <dumas@freenix.fr,dumas@Linux.EU.Org>.

