aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xfr_FR.ISO8859-1/books/handbook/printing/chapter.sgml2909
1 files changed, 2889 insertions, 20 deletions
diff --git a/fr_FR.ISO8859-1/books/handbook/printing/chapter.sgml b/fr_FR.ISO8859-1/books/handbook/printing/chapter.sgml
index 48d49ce572..feab2ec28a 100755
--- a/fr_FR.ISO8859-1/books/handbook/printing/chapter.sgml
+++ b/fr_FR.ISO8859-1/books/handbook/printing/chapter.sgml
@@ -1712,52 +1712,2875 @@ $%&'()*+,-./01234567
</sect1>
<sect1 id="printing-advanced">
- <title>Advanced Printer Setup ** Traduction en Cours **</title>
- <para></para>
+ <title>Configuration avanc&eacute;e de l'imprimante</title>
+
+ <para>Cette section d&eacute;crit les filtres &agrave; utiliser
+ pour imprimer des fichiers au formatage particulier, des pages
+ d'en-t&ecirc;te, pour imprimer en r&eacute;seau, et pour
+ restreindre et comptabiliser l'utilisation de
+ l'imprimante.</para>
<sect2 id="printing-advanced-filter-intro">
- <title>Filters</title>
+ <title>Les filtres</title>
+
+ <indexterm>
+ <primary>imprimer</primary>
+ <secondary>filtres</secondary>
+ </indexterm>
+
+ <para>Bien que <application>LPD</application> g&egrave;re les
+ protocoles r&eacute;seaux, les files d'attente, le
+ contr&ocirc;le d'acc&egrave;s et d'autres aspects de
+ l'impression, la plus grande partie du
+ <emphasis>v&eacute;ritable</emphasis> travail intervient dans
+ les <emphasis>filtres</emphasis>. Les filtres sont des
+ programmes qui communiquent avec l'imprimante et g&egrave;rent
+ ses d&eacute;pendances mat&eacute;rielles ainsi que ses
+ besoins particuliers. Dans la configuration simple de
+ l'imprimante, nous avons install&eacute; un filtre texte
+ simple&mdash; un filtre particuli&egrave;rement basique qui
+ devrait fonctionner avec la plupart des imprimantes (voir la
+ section <link linkend="printing-textfilter">Installer le
+ filtre texte</link>).</para>
+
+ <para>Toutefois, afin de profiter de la conversion de format, de
+ la comptabilisation de l'utilisation de l'imprimante, de
+ particularit&eacute;s mat&eacute;rielles, et ainsi de suite,
+ il vous faut comprendre le fonctionnement des filtres. En
+ dernier ressort, il incombera au filtre de g&eacute;rer ces
+ aspects. Et la mauvaise nouvelle, c'est que la plupart du
+ temps, c'est <emphasis>vous</emphasis> qui devrez produire ces
+ filtres vous-m&ecirc;me. La bonne nouvelle, c'est que
+ beaucoup existent d&eacute;j&agrave; et que, sinon, ils sont
+ en g&eacute;n&eacute;ral assez faciles &agrave;
+ &eacute;crire.</para>
+
+ <para>Par ailleurs, il en est un livr&eacute; avec &os;,
+ <filename>/usr/libexec/lpr/lpf</filename>, qui fonctionne avec
+ beaucoup d'imprimantes capables d'imprimer du texte brut. (Il
+ g&egrave;re les retours arri&egrave;re et les tabulations dans
+ le fichier, effectue une comptabilisation, mais c'est &agrave;
+ peu pr&egrave;s tout). Vous trouverez &eacute;galement
+ d'autres filtres et composants de filtres dans le catalogue
+ des logiciels port&eacute;s de &os;.</para>
+
+ <para>Voici ce que vous trouverez dans cette section:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>La section
+ <link linkend="printing-advanced-filters">Fonctionnement
+ des filtres</link> t&acirc;che de donner une vue
+ g&eacute;n&eacute;rale du r&ocirc;le des filtres dans le
+ processus d'impression. Il vous faut lire cette section
+ pour comprendre ce qui se passe <quote>sous le
+ capot</quote> lorsque <application>LPD</application>
+ utilise des filtres. Cette connaissance vous permettra
+ d'anticiper et de r&eacute;soudre les probl&egrave;mes que
+ vous pourriez rencontrer quand vous installerez de plus en
+ plus de filtres pour chacune de vos imprimantes.</para>
+ </listitem>
+
+ <listitem>
+ <para><application>LPD</application> s'attend &agrave; ce
+ que toutes les imprimantes sachent imprimer du texte brut
+ par d&eacute;faut. Cela pose un probl&egrave;me pour les
+ imprimantes &postscript; (ou les imprimantes bas&eacute;es
+ sur un autre langage) qui ne peut pas imprimer du texte
+ brut directement. La section <link
+ linkend="printing-advanced-if-conversion">G&eacute;rer les
+ travaux d'impression de texte brut sur des imprimantes
+ &postscript;</link> vous indique la marche &agrave; suivre
+ pour r&eacute;soudre ce probl&egrave;me. Vous devrez lire
+ cette section si vous avez une imprimante
+ &postscript;.</para>
+ </listitem>
+
+ <listitem>
+ <para>&postscript; est un format de sortie courant pour
+ beaucoup d'applications. Certaines personnes
+ &eacute;crivent m&ecirc;me du code &postscript;
+ directement. Malheureusement, les imprimantes
+ &postscript; sont on&eacute;reuses. La section <link
+ linkend="printing-advanced-ps">Emuler du &postscript; sur
+ les imprimantes non-&postscript;</link> vous indiquera
+ comment modifier un filtre texte pour qu'une imprimante
+ <emphasis>non-&postscript;</emphasis> accepte et imprime
+ du &postscript;. Vous devrez lire cette section si vous
+ ne disposez pas d'une imprimante &postscript;.</para>
+ </listitem>
+
+ <listitem>
+ <para>La section
+ <link linkend="printing-advanced-convfilters">Filtres de
+ conversion</link> vous apprendra &agrave; automatiser la
+ conversion de formats de fichiers sp&eacute;cifiques,
+ comme des graphiques ou des donn&eacute;es de composition,
+ en formats compr&eacute;hensibles par l'imprimante.
+ Apr&egrave;s avoir lu cette section, vous serez en mesure
+ de configurer vos imprimantes de telle sorte que vos
+ utilisateurs pourront entrer la commande <command>lpr
+ -t</command> pour imprimer du troff, ou <command>lpr
+ -d</command> pour imprimer le format DVI produit par
+ &tex;, ou <command>lpr -v</command> pour imprimer des
+ images en mode point, etc. Nous recommandons la lecture
+ de cette section.</para>
+ </listitem>
+
+ <listitem>
+ <para>La section <link
+ linkend="printing-advanced-of">Filtres de sortie</link>
+ r&eacute;v&egrave;le tout d'une fonctionnalit&eacute; peu
+ utilis&eacute;e de <application>LPD</application>: les
+ filtres de sortie. A moins que vous n'imprimiez des pages
+ d'en-t&ecirc;tes (voir la section <link
+ linkend="printing-advanced-header-pages">Pages
+ d'en-t&ecirc;te</link>), vous pouvez probablement
+ compl&egrave;tement ignorer cette section.</para>
+ </listitem>
+
+ <listitem>
+ <para>La section <link linkend="printing-advanced-lpf">lpf:
+ un filtre texte</link> d&eacute;taille
+ <command>lpf</command>, un filtre texte destin&eacute; aux
+ imprimantes en ligne (et aux imprimantes laser se
+ comportant comme telles) plut&ocirc;t complet
+ malgr&eacute; sa simplicit&eacute;, et livr&eacute; avec
+ &os;. Si vous avez besoin de mettre rapidement en place
+ la comptabilisation de l'utilisation de l'imprimante pour
+ du texte brut, ou si vous avez une imprimante qui fume
+ lorsqu'elle voit passer des caract&egrave;res de retour
+ arri&egrave;re, vous devez vraiment penser &agrave;
+ <command>lpf</command>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <para>Une copie des diff&eacute;rents scripts
+ pr&eacute;sent&eacute;s ci-dessous se trouve dans le
+ r&eacute;pertoire <filename
+ class="directory">/usr/share/examples/printing</filename>.
+ </para>
+ </note>
+
<sect3 id="printing-advanced-filters">
- <title>How Filters Work</title>
- <para></para>
+ <title>Fonctionnement des filtres</title>
+
+ <para>Comme expliqu&eacute; pr&eacute;c&eacute;demment, un
+ filtre est un programme ex&eacute;cutable lanc&eacute; par
+ <application>LPD</application> pour g&eacute;rer la partie
+ de la communication avec l'imprimante qui est
+ d&eacute;pendante du p&eacute;riph&eacute;rique.</para>
+
+ <para>Lorsque <application>LPD</application> veut imprimer un
+ fichier d'un travail d'impression, il lance un programme de
+ filtre. Il redirige l'entr&eacute;e standard du filtre sur
+ le fichier &agrave; imprimer, sa sortie standard vers
+ l'imprimante, et l'erreur standard vers le fichier journal
+ des erreurs (sp&eacute;cifi&eacute; dans le param&egrave;tre
+ <literal>lf</literal> du fichier
+ <filename>/etc/printcap</filename>, ou
+ <filename>/dev/console</filename> par d&eacute;faut).</para>
+
+ <indexterm>
+ <primary><command>troff</command></primary>
+ </indexterm>
+
+ <para>Le filtre lanc&eacute; par
+ <application>LPD</application> ainsi que les
+ param&egrave;tres qui lui sont donn&eacute;s
+ d&eacute;pendent de ce qui est plac&eacute; dans le fichier
+ <filename>/etc/printcap</filename> et des param&egrave;tres
+ que l'utilisateur a pass&eacute; sur la ligne de commande
+ &man.lpr.1; pour ce travail d'impression. Par exemple, si
+ l'utilisateur a entr&eacute; <command>lpr -t</command>,
+ <application>LPD</application> aurait lanc&eacute; le filtre
+ troff, pr&eacute;cis&eacute; par la param&egrave;tre
+ <literal>tf</literal> pour l'imprimante de destination. Si
+ l'utilisateur veut imprimer du texte brut, il lancerait le
+ filtre <literal>if</literal> (c'est vrai la plupart du
+ temps: lisez la section <link
+ linkend="printing-advanced-of">Filtres de sortie</link> pour
+ plus de d&eacute;tails).</para>
+
+ <para>Il existe trois types de filtres que vous pouvez
+ sp&eacute;cifier dans
+ <filename>/etc/printcap</filename>:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Le <emphasis>filtre texte</emphasis>,
+ confus&eacute;ment appel&eacute; <emphasis>filtre
+ d'entr&eacute;e</emphasis> dans la documentation
+ <application>LPD</application>, g&egrave;re l'impression
+ de texte classique. Consid&eacute;rez-le comme le
+ filtre par d&eacute;faut.
+ <application>LPD</application> s'attend &agrave; ce que
+ toutes les imprimantes sachent imprimer du texte brut
+ par d&eacute;faut, et c'est au filtre texte de s'assurer
+ que les retours arri&egrave;re, tabulations et autres
+ caract&egrave;res sp&eacute;ciaux ne trompent pas
+ l'imprimante. Si vous &ecirc;tes dans un environnement
+ o&ugrave; il vous faut rendre compte de l'utilisation de
+ l'imprimante, le filtre texte doit &eacute;galement
+ comptabiliser les pages imprim&eacute;es,
+ g&eacute;n&eacute;ralement en comptant le nombre de
+ lignes imprim&eacute;es et en le comparant avec le
+ nombre de lignes par page support&eacute; par
+ l'imprimante. Le filtre texte est ex&eacute;cut&eacute;
+ avec la liste de param&egrave;tres suivante:</para>
+
+ <cmdsynopsis>
+ <command>nom_du_filtre</command>
+ <arg>-c</arg>
+ <arg choice="plain">-w
+ <replaceable>largeur</replaceable></arg>
+ <arg choice="plain">-l
+ <replaceable>hauteur</replaceable></arg>
+ <arg choice="plain">-i
+ <replaceable>indentation</replaceable></arg>
+ <arg choice="plain">-n
+ <replaceable>utilisateur</replaceable></arg>
+ <arg choice="plain">-h
+ <replaceable>machine</replaceable></arg>
+ <arg
+ choice="plain"><replaceable>fichier_comptabilit&eacute;</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>o&ugrave;<para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-c</option></term>
+
+ <listitem>
+ <para>appara&icirc;t si le travail d'impression est
+ lanc&eacute; par la commande <command>lpr
+ -l</command></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>largeur</replaceable></term>
+
+ <listitem>
+ <para>est la valeur du param&egrave;tre
+ <literal>pw</literal> (<quote>page width</quote>,
+ pour <quote>largeur de page</quote>)
+ sp&eacute;cifi&eacute; dans
+ <filename>/etc/printcap</filename>, et
+ poss&eacute;dant la valeur par d&eacute;faut
+ 132.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>hauteur</replaceable></term>
+
+ <listitem>
+ <para>est la valeur du param&egrave;tre
+ <literal>pl</literal> (<quote>page length</quote>,
+ pour <quote>hauteur de page</quote>), par
+ d&eacute;faut: 66.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>indentation</replaceable></term>
+
+ <listitem>
+ <para>est le nombre d'indentations
+ ins&eacute;r&eacute; par <command>lpr
+ -i</command>, par d&eacute;faut: 0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>utilisateur</replaceable></term>
+
+ <listitem>
+ <para>est le nom du compte de l'utilisateur
+ imprimant le fichier.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>machine</replaceable></term>
+
+ <listitem>
+ <para>est le nom de la machine depuis
+ laquelle le travail d'impression a
+ &eacute;t&eacute; soumis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>fichier_comptabilit&eacute;</replaceable></term>
+
+ <listitem>
+ <para>est le nom du fichier de comptabilisation
+ sp&eacute;cifi&eacute; par le param&egrave;tre
+ <literal>af</literal>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+
+ <indexterm>
+ <primary>imprimer</primary>
+ <secondary>filtres</secondary>
+ </indexterm>
+
+ <listitem>
+ <para>Un <emphasis>filtre de conversion</emphasis>
+ convertit un format de fichier sp&eacute;cifique en un
+ autre que l'imprimante saura imprimer sur papier. Par
+ exemple, des donn&eacute;es de composition ditroff ne
+ peuvent &ecirc;tre imprim&eacute;es directement, mais il
+ vous est possible d'installer un filtre de conversion
+ ditroff afin de convertir ces donn&eacute;es ditroff en
+ une forme que l'imprimante sait ing&eacute;rer et
+ imprimer. La section <link
+ linkend="printing-advanced-convfilters">Filtres de
+ conversion</link> vous dira tout sur ce sujet. Les
+ filtres de conversion doivent &eacute;galement tenir des
+ statistiques, si vous avez besoin de comptabiliser les
+ impressions. Les filtres de conversion sont
+ lanc&eacute;s avec les param&egrave;tres
+ suivants:</para>
+
+ <cmdsynopsis>
+ <command>nom-du-filtre</command>
+ <arg choice="plain">-x
+ <replaceable>largeur-en-pixels</replaceable></arg>
+ <arg choice="plain">-y
+ <replaceable>hauteur-en-pixels</replaceable></arg>
+ <arg choice="plain">-n
+ <replaceable>login</replaceable></arg>
+ <arg choice="plain">-h
+ <replaceable>h&ocirc;te</replaceable></arg>
+ <arg
+ choice="plain"><replaceable>fichier_comptabilit&eacute;</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>o&ugrave;
+ <replaceable>largeur-en-pixels</replaceable> est la
+ valeur du param&egrave;tre <literal>px</literal> (0 par
+ d&eacute;faut) et
+ <replaceable>hauteur-en-pixels</replaceable> est la
+ valeur du param&egrave;tre <literal>py</literal> (0 par
+ d&eacute;faut).</para>
+ </listitem>
+
+ <listitem>
+ <para>Le <emphasis>filtre de sortie</emphasis> n'est
+ utilis&eacute; que s'il n'y a pas de filtre texte, ou si
+ les pages d'en-t&ecirc;te ont &eacute;t&eacute;
+ activ&eacute;es. D'apr&egrave;s notre
+ exp&eacute;rience, les filtres de sortie sont rarement
+ employ&eacute;s. La section <link
+ linkend="printing-advanced-of">Filtres de sortie</link>
+ les d&eacute;taillera. Un filtre de sortie ne prend que
+ deux param&egrave;tres:</para>
+
+ <cmdsynopsis>
+ <command>nom-du-filtre</command>
+ <arg choice="plain">-w
+ <replaceable>largeur</replaceable></arg>
+ <arg choice="plain">-l
+ <replaceable>hauteur</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>qui sont identiques aux param&egrave;tres
+ <option>-w</option> et <option>-l</option> des filtres
+ textes.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Les filtres doivent &eacute;galement
+ <emphasis>retourner</emphasis> avec le code de retour
+ suivant:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>exit 0</term>
+
+ <listitem>
+ <para>Si le filtre a imprim&eacute; avec succ&egrave;s
+ le fichier.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>exit 1</term>
+
+ <listitem>
+ <para>Si le filtre n'a pu imprimer le fichier, mais
+ d&eacute;sire que <application>LPD</application>
+ essaie de l'imprimer &agrave; nouveau.
+ <application>LPD</application> relancera un filtre
+ s'il retourne avec ce code.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>exit 2</term>
+
+ <listitem>
+ <para>Si le filtre n'a pu imprimer le fichier et ne veut
+ pas que <application>LPD</application> retente
+ l'impression. <application>LPD</application>
+ rejettera le fichier.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Le filtre texte livr&eacute; avec &os;,
+ <filename>/usr/libexec/lpr/lpf</filename>, tire parti des
+ param&egrave;tres de largeur et hauteur de page pour savoir
+ quand envoyer une instruction de saut de page et comment
+ comptabiliser l'utilisation de l'imprimante. Il utilise les
+ param&egrave;tres nom d'utilisateur, nom de machine, et
+ fichier de comptabilisation pour enregistrer les
+ entr&eacute;es concernant la consommation.</para>
+
+ <para>Si vous recherchez des filtres, prenez garde &agrave; ce
+ qu'ils soient compatibles avec LPD. Si c'est le cas, ils
+ doivent se conformer &agrave; la liste de param&egrave;tres
+ d&eacute;crite ci-dessus. Si vous songez &agrave;
+ &eacute;crire des filtres &agrave; usage
+ g&eacute;n&eacute;ral, alors faites en sorte qu'ils se
+ conforment &agrave; ces m&ecirc;mes listes de
+ param&egrave;tres et de codes de retour.</para>
</sect3>
<sect3 id="printing-advanced-if-conversion">
- <title>Accommodating Plain Text Jobs on &postscript; Printers</title>
- <para></para>
+ <title>G&eacute;rer les travaux d'impression de texte brut sur
+ des imprimantes &postscript;</title>
+
+ <indexterm><primary>travaux d'impression</primary></indexterm>
+
+ <para>Si vous &ecirc;tes l'unique utilisateur de votre
+ ordinateur et de votre imprimante &postscript; (ou
+ bas&eacute;e sur un autre langage), et que vous promettez de
+ ne jamais envoyer de texte brut &agrave; votre imprimante et
+ de ne jamais utiliser les fonctionnalit&eacute;s des divers
+ programmes qui voudraient lui en envoyer, alors vous pouvez
+ tout &agrave; fait passer cette section l'esprit
+ tranquille.</para>
+
+ <para>Toutefois, si vous d&eacute;sirez envoyer du
+ &postscript; et du texte brut &agrave; l'imprimante, alors
+ vous &ecirc;tes instamment pri&eacute;s de compl&eacute;ter
+ la configuration de votre imprimante. Pour ce faire, nous
+ chargerons le filtre texte de d&eacute;tecter si le travail
+ d'impression est du texte brut ou du &postscript;. Tous les
+ travaux d'impression &postscript; doivent d&eacute;buter par
+ <literal>%!</literal> (en ce qui concerne les autres
+ langages, r&eacute;f&eacute;rez-vous &agrave; la
+ documentation de l'imprimante). Si ces deux
+ caract&egrave;res sont les deux premiers du travail
+ d'impression, il s'agit de &postscript; et le reste du
+ travail d'impression peut &ecirc;tre pass&eacute;
+ directement &agrave; l'imprimante. Dans le cas contraire,
+ alors le filtre convertit le texte en &postscript; et
+ imprime le r&eacute;sultat.</para>
+
+ <para>Comment proc&eacute;der?</para>
+
+ <indexterm>
+ <primary>imprimantes</primary>
+ <secondary>s&eacute;rie</secondary>
+ </indexterm>
+
+ <para>Si vous disposez d'une imprimante s&eacute;rie, une
+ bonne fa&ccedil;on de faire est d'installer
+ <command>lprps</command>. Il s'agit d'un filtre
+ d'impression &postscript; qui assure une communication en
+ duplex avec l'imprimante. Il met &agrave; jour le fichier
+ d'&eacute;tat de l'imprimante avec des informations
+ d&eacute;taill&eacute;es que cette derni&egrave;re lui
+ fournit, de sorte que les utilisateurs et les
+ administrateurs puissent conna&icirc;tre
+ pr&eacute;cis&eacute;ment l'&eacute;tat de l'imprimante (par
+ exemple <errorname>niveau de toner bas</errorname> ou
+ <errorname>bourrage papier</errorname>). Mais plus
+ important encore, il inclut un programme nomm&eacute;
+ <command>psif</command> qui d&eacute;tecte si le travail
+ d'impression qui vient d'arriver est du texte brut et lance
+ <command>textps</command> (un autre programme fourni avec
+ <command>lprps</command>) pour le convertir en &postscript;.
+ Il utilise alors <command>lprps</command> pour envoyer le
+ travail d'impression &agrave; l'imprimante.</para>
+
+ <para><command>lprps</command> fait partie du catalogue des
+ logiciels port&eacute;s &os; (lisez la section <link
+ linkend="ports">Le catalogue des logiciels
+ port&eacute;s</link>). Vous pouvez installer un des deux
+ logiciels port&eacute;s <filename
+ role="package">print/lprps-a4</filename> et <filename
+ role="package">print/lprps-letter</filename> en fonction du
+ format de papier utilis&eacute;. Apr&egrave;s avoir
+ install&eacute; <command>lprps</command>, pr&eacute;cisez
+ simplement le chemin vers le programme
+ <command>psif</command> qui fait partie de
+ <command>lprps</command>. Si vous avez install&eacute;
+ <command>lprps</command> en recourant au catalogue des
+ logiciels port&eacute;s, placez les valeurs suivantes pour
+ l'entr&eacute;e de l'imprimante s&eacute;rie &postscript;
+ dans <filename>/etc/printcap</filename>:</para>
+
+ <programlisting>:if=/usr/local/libexec/psif:</programlisting>
+
+ <para>Vous devrez &eacute;galement renseigner le
+ param&egrave;tre <literal>rw</literal> qui indique &agrave;
+ <application>LPD</application> de requ&eacute;rir
+ l'imprimante en mode lecture/&eacute;criture.</para>
+
+ <para>Si vous disposez d'une imprimante &postscript;
+ parall&egrave;le (et ne pouvez donc pas utiliser la
+ communication en duplex avec l'imprimante dont a besoin
+ <command>lprps</command>), vous pouvez recourir &agrave; la
+ proc&eacute;dure suivante en tant que filtre texte:</para>
+
+ <programlisting>#!/bin/sh
+#
+# psif - Imprime du PostScript ou du texte brut sur une imprimante PostScript
+# Version script; CECI N'EST PAS la version fournie avec lprps
+# Fichier /usr/local/libexec/psif
+#
+
+IFS="" read -r first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
+
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # Travail PostScript, l'imprimer.
+ #
+ echo "$first_line" &amp;&amp; cat &amp;&amp; printf "\004" &amp;&amp; exit 0
+ exit 2
+else
+ #
+ # Texte brut, le convertir, puis l'imprimer.
+ #
+ ( echo "$first_line"; cat ) | /usr/local/bin/textps &amp;&amp; printf "\004" &amp;&amp; exit 0
+ exit 2
+fi</programlisting>
+
+ <para>Dans la proc&eacute;dure ci-dessus,
+ <command>textps</command> est un programme que nous avons
+ install&eacute; s&eacute;par&eacute;ment pour convertir du
+ texte en &postscript;. Vous pouvez recourir &agrave;
+ n'importe quel programme texte-vers-&postscript;, selon
+ votre d&eacute;sir. Le catalogue des logiciels
+ port&eacute;s de &os; (voir la section <link
+ linkend="ports">Le catalogue des logiciels
+ port&eacute;s</link>) comprend un programme de conversion
+ texte-vers-&postscript; complet nomm&eacute;e
+ <literal>a2ps</literal>, qui pourrait vous
+ int&eacute;resser.</para>
</sect3>
<sect3 id="printing-advanced-ps">
- <title>Simulating &postscript; on Non &postscript; Printers</title>
- <para></para>
+ <title>Emuler du &postscript; sur les imprimantes
+ non-&postscript;</title>
+
+ <indexterm>
+ <primary>PostScript</primary>
+ <secondary>&eacute;mulation</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>Ghostscript</primary>
+ </indexterm>
+
+ <para>&postscript; est le standard <emphasis>de
+ fait</emphasis> pour l'impression et la composition de haute
+ qualit&eacute;. Cependant, &postscript; est un standard
+ <emphasis>on&eacute;reux</emphasis>. Heureusement, Aladdin
+ Enterprises propose un succ&eacute;dan&eacute; gratuit de
+ &postscript; nomm&eacute;
+ <application>Ghostscript</application> qui fonctionne sous
+ &os;. <application>Ghostscript</application> peut lire la
+ majorit&eacute; des fichiers &postscript; et peut produire
+ leurs pages sur une diversit&eacute; de
+ p&eacute;riph&eacute;riques, incluant beaucoup de marques
+ d'imprimantes non-&postscript;. En installant
+ <application>Ghostscript</application> et en recourant
+ &agrave; un filtre texte sp&eacute;cial, vous pouvez obtenir
+ de votre imprimante non-&postscript; qu'elle se comporte
+ comme une v&eacute;ritable imprimante &postscript;.</para>
+
+ <para><application>Ghostscript</application> fait partie du
+ catalogue des logiciels port&eacute;s, de nombreuses
+ versions sont disponibles, la version la plus couramment
+ utilis&eacute;e est <filename
+ role="package">print/ghostscript-gpl</filename>.</para>
+
+ <para>Pour &eacute;muler du &postscript;, il nous faut faire
+ en sorte que le filtre texte d&eacute;tecte s'il imprime un
+ fichier &postscript;. Si ce n'est pas le cas, alors le
+ filtre doit passer le fichier directement &agrave;
+ l'imprimante; sinon il recourra &agrave;
+ <application>Ghostscript</application> pour tout d'abord le
+ convertir dans un format que l'imprimante saura
+ interpr&eacute;ter.</para>
+
+ <para>Voici un exemple: la proc&eacute;dure suivante est un
+ filtre texte pour les imprimantes Hewlett Packard Deskjet
+ 500. Pour d'autres mod&egrave;les, changez le
+ param&egrave;tre <option>-sDEVICE</option> de la commande
+ <command>gs</command>
+ (<application>Ghostscript</application>). (Entrez
+ <command>gs -h</command> pour obtenir une liste des
+ p&eacute;riph&eacute;riques reconnus par l'installation
+ actuelle de <application>Ghostscript</application>).</para>
+
+ <programlisting>#!/bin/sh
+#
+# ifhp - Imprime du PostScript &eacute;mul&eacute; par Ghostscript sur une DeskJet 500
+# Fichier /usr/local/libexec/ifhp
+
+#
+# Traite LF comme CR+LF (pour &eacute;viter l'"effet d'escalier" sur les
+# imprimantes HP/PCL):
+#
+printf "\033&amp;k2G" || exit 2
+
+#
+# Lit les deux premiers caract&egrave;res du fichier
+#
+IFS="" read -r first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
+
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # Si c'est du PostScript; utiliser Ghostscript pour le convertir et l'imprimer
+ #
+ /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
+ -sOutputFile=- - &amp;&amp; exit 0
+else
+ #
+ # Texte brut ou HP/PCL, donc impression directe; effectuer un
+ # saut de page &agrave; la fin pour &eacute;jecter la derni&egrave;re page.
+ #
+ echo "$first_line" &amp;&amp; cat &amp;&amp; printf "\033&amp;l0H" &amp;&amp;
+exit 0
+fi
+
+exit 2</programlisting>
+
+ <para>Pour finir, vous devez communiquer &agrave;
+ <application>LPD</application> le filtre utilis&eacute; en
+ positionnant le param&egrave;tre
+ <literal>if</literal>:</para>
+
+ <programlisting>:if=/usr/local/libexec/ifhp:</programlisting>
+
+ <para>Voil&agrave;. Vous pouvez entrer <command>lpr
+ <replaceable>texte.simple</replaceable></command> et
+ <filename>lpr
+ <replaceable>peuimporte.ps</replaceable></filename>, et
+ chacune des deux commandes devrait imprimer avec
+ succ&egrave;s.</para>
</sect3>
<sect3 id="printing-advanced-convfilters">
- <title>Conversion Filters</title>
- <para></para>
+ <title>Filtres de conversion</title>
+
+ <para>Apr&egrave;s avoir men&eacute; &agrave; bien la
+ configuration basique d&eacute;crite &agrave; la section
+ <link linkend="printing-simple">Configuration simple de
+ l'imprimante</link>, la premi&egrave;re chose que vous
+ souhaiterez probablement faire sera d'installer des filtres
+ de conversion pour vos formats de fichiers favoris (le
+ simple texte ASCII mis &agrave; part).</para>
+
+ <sect4>
+ <title>Pourquoi installer des filtres de conversion?</title>
+ <indexterm>
+ <primary>&tex;</primary>
+ <secondary>imprimer des fichiers DVI</secondary>
+ </indexterm>
+
+ <para>Les filtres de conversion facilitent l'impression de
+ diff&eacute;rentes sortes de fichiers. Par exemple,
+ supposons que nous travaillions &eacute;norm&eacute;ment
+ avec le syst&egrave;me de composition &tex;, et que nous
+ ayons une imprimante &postscript;. Chaque fois que nous
+ g&eacute;n&eacute;rerons un fichier DVI &agrave; partir de
+ &tex;, nous ne pouvons l'imprimer directement avant
+ d'avoir converti ce fichier DVI en &postscript;. La
+ s&eacute;quence de commandes serait la suivante:</para>
+
+ <screen>&prompt.user; <userinput>dvips <replaceable>seaweed-analysis.dvi</replaceable></userinput>
+&prompt.user; <userinput>lpr <replaceable>seaweed-analysis.ps</replaceable></userinput></screen>
+
+ <para>En installant un filtre de conversion pour fichiers
+ DVI, nous pouvons &agrave; chaque fois nous passer de
+ l'&eacute;tape de conversion manuelle en chargeant
+ <application>LPD</application> de le faire &agrave; notre
+ place. Maintenant, &agrave; chaque fois que nous avons un
+ fichier DVI, nous ne sommes plus qu'&agrave; un pas de
+ l'impression:</para>
+
+ <screen>&prompt.user; <userinput>lpr -d <replaceable>seaweed-analysis.dvi</replaceable></userinput></screen>
+
+ <para>Nous faisons en sorte que
+ <application>LPD</application> se charge de la conversion
+ du fichier DVI &agrave; notre place en positionnant
+ l'option <option>-d</option>. La section <link
+ linkend="printing-lpr-options-format">Options de
+ conversion et de formatage</link> donne la liste des
+ options de conversion.</para>
+
+ <para>Pour chacune des options de conversion que vous voulez
+ faire accepter par une imprimante, installez un
+ <emphasis>filtre de conversion</emphasis> et indiquez son
+ chemin d'acc&egrave;s dans
+ <filename>/etc/printcap</filename>. Un filtre de
+ conversion ressemble au filtre texte de notre
+ configuration de base (voir la section <link
+ linkend="printing-textfilter">Installer le filtre
+ texte</link>), &agrave; ceci pr&egrave;s qu'au lieu
+ d'imprimer du texte brut, le filtre convertit le fichier
+ en un format compr&eacute;hensible par
+ l'imprimante.</para>
+ </sect4>
+
+ <sect4>
+ <title>Quels filtres de conversion dois-je
+ installer?</title>
+
+ <para>Vous devez installer les filtres de conversion que
+ vous vous attendez &agrave; utiliser. Si vous imprimez
+ beaucoup de donn&eacute;es DVI, alors un filtre de
+ conversion DVI est dans la logique des choses. Si vous
+ devez imprimer beaucoup de troff, alors vous aurez
+ s&ucirc;rement besoin d'un filtre troff.</para>
+
+ <para>Le tableau suivant r&eacute;capitule les filtres avec
+ lesquels <application>LPD</application> fonctionne, leurs
+ param&egrave;tres <filename>/etc/printcap</filename>, et
+ comment les invoquer avec la
+ <command>lpr</command>:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Type de fichier</entry>
+ <entry>param&egrave;tre <filename>/etc/printcap</filename>
+ </entry>
+ <entry>option <command>lpr</command></entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>cifplot</entry>
+ <entry><literal>cf</literal></entry>
+ <entry><option>-c</option></entry>
+ </row>
+
+ <row>
+ <entry>DVI</entry>
+ <entry><literal>df</literal></entry>
+ <entry><option>-d</option></entry>
+ </row>
+
+ <row>
+ <entry>plot</entry>
+ <entry><literal>gf</literal></entry>
+ <entry><option>-g</option></entry>
+ </row>
+
+ <row>
+ <entry>ditroff</entry>
+ <entry><literal>nf</literal></entry>
+ <entry><option>-n</option></entry>
+ </row>
+
+ <row>
+ <entry>code FORTRAN</entry>
+ <entry><literal>rf</literal></entry>
+ <entry><option>-f</option></entry>
+ </row>
+
+ <row>
+ <entry>troff</entry>
+ <entry><literal>tf</literal></entry>
+ <entry><option>-f</option></entry>
+ </row>
+
+ <row>
+ <entry>image en mode point</entry>
+ <entry><literal>vf</literal></entry>
+ <entry><option>-v</option></entry>
+ </row>
+
+ <row>
+ <entry>texte brut</entry>
+ <entry><literal>if</literal></entry>
+ <entry>aucune, <option>-p</option>, or
+ <option>-l</option></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Dans notre exemple, utiliser <command>lpr -d</command>
+ veut dire que l'imprimante a besoin du param&egrave;tre
+ <literal>df</literal> dans l'entr&eacute;e
+ <filename>/etc/printcap</filename> la concernant.</para>
+
+ <indexterm><primary>FORTRAN</primary></indexterm>
+ <para>Aussi fortement que certains puissent s'en &eacute;mouvoir,
+ des formats comme le code FORTRAN ou le plot sont probablement
+ obsol&egrave;tes. Sur votre site, vous pouvez attribuer de
+ nouvelles significations &agrave; ces options ou &agrave; toute
+ autre option de formatage en installant simplement des filtres personnalis&eacute;s. Par exemple,
+ supposons que vous aimeriez imprimer des fichiers Printerleaf
+ directement (fichiers issus du programme de publication assist&eacute;e par ordinateur Interleaf),
+ mais jamais de fichiers plot. Vous pourriez alors installer un
+ filtre de conversion Printerleaf sous le param&egrave;tre
+ <literal>gf</literal> et ensuite informer vos
+ utilisateurs que <command>lpr -g</command> veut dire
+ <quote>imprimer des fichiers Printerleaf</quote>.</para>
+ </sect4>
+
+ <sect4>
+ <title>Installer des filtres de conversion</title>
+
+ <para>Etant donn&eacute; que les filtres de conversion sont des
+ applications qui ne font pas partie du syst&egrave;me &os;
+ de base, vous devriez les installer dans
+ <filename>/usr/local</filename>. Le r&eacute;pertoire
+ <filename class="directory">/usr/local/libexec</filename> est une destination
+ de choix, car ce sont des programmes sp&eacute;cialis&eacute;s
+ que seul <application>LPD</application> lancera; les
+ utilisateurs ordinaires ne devraient jamais avoir &agrave;
+ les lancer.</para>
+
+ <para>Pour activer un filtre de conversion, pr&eacute;cisez son
+ chemin d'acc&egrave;s dans le param&egrave;tre relatif &agrave;
+ l'imprimante de destination dans
+ <filename>/etc/printcap</filename>.</para>
+
+ <para>Dans notre exemple, nous allons ajouter le filtre de
+ conversion DVI pour l'imprimante nomm&eacute;e
+ <literal>bamboo</literal>. Revoici le fichier
+ <filename>/etc/printcap</filename> d'exemple, avec le nouveau
+ param&egrave;tre <literal>df</literal> pour l'imprimante
+ <literal>bamboo</literal>:</para>
+
+ <programlisting>#
+# /etc/printcap pour la machine rose - ajout du filtre df pour bamboo
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
+
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:</programlisting>
+
+ <para>Le filtre DVI est une proc&eacute;dure nomm&eacute;e
+ <filename>/usr/local/libexec/psdf</filename>. En voici le
+ contenu:</para>
+
+ <programlisting>#!/bin/sh
+#
+# psdf - filtre DVI vers imprimante PostScript
+# Fichier /usr/local/libexec/psdf
+#
+# Appel&eacute; par lpd quand l'utilisateur lance lpr -d
+#
+exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"</programlisting>
+
+ <para>Cette proc&eacute;dure lance <command>dvips</command> en mode filtre (cela
+ correspond au param&egrave;tre <option>-f</option>) sur
+ l'entr&eacute;e standard, qui est le travail d'impression
+ &agrave; ex&eacute;cuter. Ensuite, elle lance le filtre pour imprimante
+ &postscript; <command>lprps</command> (voir la section
+ <link linkend="printing-advanced-if-conversion">G&eacute;rer les
+ travaux d'impression de texte brut sur des imprimantes
+ &postscript;</link>) avec les param&egrave;tres que
+ <application>LPD</application> lui a pass&eacute;s.
+ Le programme <command>lprps</command> utilisera ces param&egrave;tres pour
+ comptabiliser les pages imprim&eacute;es.</para>
+ </sect4>
+
+ <sect4>
+ <title>Exemples de filtre de conversion
+ suppl&eacute;mentaires</title>
+
+ <para>Il n'existe pas de proc&eacute;dure fig&eacute;e pour l'installation
+ des filtres de conversion, des exemples fonctionnels sont
+ pr&eacute;sent&eacute;s dans cette section. Inspirez-vous de ces
+ exemples pour cr&eacute;er vos propres filtres. Utilisez les
+ tels quels s'il s'av&egrave;rent ad&eacute;quats.</para>
+
+ <para>Cet exemple pr&eacute;sente un filtre de conversion d'image
+ en mode point (en fait un fichier GIF) pour une imprimante
+ Hewlett-Packard LaserJet III-Si:</para>
+
+ <programlisting>#!/bin/sh
+#
+# hpvf - Convertit des fichiers GIF en HP/PCL, puis les imprime
+# Fichier /usr/local/libexec/hpvf
+
+PATH=/usr/X11R6/bin:$PATH; export PATH
+giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
+ &amp;&amp; exit 0 \
+ || exit 2</programlisting>
+
+ <para>Son fonctionnement est le suivant: il convertit le fichier
+ GIF en un format portable universel, puis en format
+ portable en niveau de gris, et ensuite
+ en bitmap portable, qu'il convertit enfin
+ en donn&eacute;es compatibles LaserJet/PCL.</para>
+
+ <para>Voici le <filename>/etc/printcap</filename> comportant une
+ entr&eacute;e pour une imprimante recourant au filtre
+ ci-dessus:</para>
+
+ <programlisting>#
+# /etc/printcap pour la machine orchid
+#
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/hpif:\
+ :vf=/usr/local/libexec/hpvf:</programlisting>
+
+ <para>La proc&eacute;dure suivante est un filtre de conversion de
+ donn&eacute;es troff du syst&egrave;me de composition groff pour
+ l'imprimante &postscript; <literal>bamboo</literal>:</para>
+
+ <programlisting>#!/bin/sh
+#
+# pstf - Convertit des donn&eacute;es troff de groff en PS, puis imprime.
+# Fichier /usr/local/libexec/pstf
+#
+exec grops | /usr/local/libexec/lprps "$@"</programlisting>
+
+ <para>La proc&eacute;dure ci-dessus emploie de nouveau
+ <command>lprps</command> pour g&eacute;rer la communication
+ avec l'imprimante. S'il s'agissait d'une imprimante sur port
+ parall&egrave;le, nous utiliserions plut&ocirc;t la proc&eacute;dure
+ suivante:</para>
+
+ <programlisting>#!/bin/sh
+#
+# pstf - Convertit des donn&eacute;es troff de groff en PS, puis imprime.
+# Fichier /usr/local/libexec/pstf
+#
+exec grops</programlisting>
+
+ <para>C'est tout. Voici l'entr&eacute;e qu'il faut ajouter dans
+ <filename>/etc/printcap</filename> pour activer le filtre:</para>
+
+ <programlisting>:tf=/usr/local/libexec/pstf:</programlisting>
+
+ <para>Voici un exemple qui pourrait faire rougir les vieux briscards
+ de FORTRAN. C'est un filtre de code FORTRAN pour toute
+ imprimante sachant imprimer du texte brut. Nous l'installerons
+ pour l'imprimante <literal>teak</literal>:</para>
+
+ <programlisting>#!/bin/sh
+#
+# hprf - filtre texte FORTRAN pour LaserJet 3si:
+# Fichier /usr/local/libexec/hprf
+#
+
+printf "\033&amp;k2G" &amp;&amp; fpr &amp;&amp; printf "\033&amp;l0H" &amp;&amp;
+ exit 0
+exit 2</programlisting>
+
+ <para>Et nous ajouterons cette ligne dans
+ <filename>/etc/printcap</filename> pour l'imprimante
+ <literal>teak</literal> afin d'activer le filtre:</para>
+
+ <programlisting>:rf=/usr/local/libexec/hprf:</programlisting>
+
+ <para>Voici un dernier exemple, quelque peu complexe. Nous allons
+ ajouter un filtre DVI pour l'imprimante LaserJet
+ <literal>teak</literal> pr&eacute;sent&eacute;e ci-dessus. Tout
+ d'abord, la partie facile: mettre &agrave; jour
+ <filename>/etc/printcap</filename> avec l'emplacement du
+ filtre DVI:</para>
+
+ <programlisting>:df=/usr/local/libexec/hpdf:</programlisting>
+
+ <para>Et maintenant, la partie difficile: &eacute;crire le filtre.
+ Pour cela, nous avons besoin d'un programme de conversion
+ DVI-vers-LaserJet/PCL. Le catalogue des logiciels port&eacute;s
+ (voyez la section <link linkend="ports">Le catalogue des logiciels
+ port&eacute;s</link>) en poss&egrave;de un: <filename
+ role="package">print/dvi2xx</filename>.
+ Installer ce logiciel port&eacute; nous fournira le programme
+ dont nous avons besoin, <command>dvilj2p</command>, qui
+ convertit le DVI en code compatible LaserJet IIp, LaserJet III et
+ LaserJet 2000.</para>
+
+ <para>L'utilitaire <command>dvilj2p</command> rend le filtre
+ <command>hpdf</command> assez complexe, parce que
+ <command>dvilj2p</command> ne sait pas lire l'entr&eacute;e
+ standard. Il lui faut un nom de fichier. Pire encore, le nom du fichier doit se terminer par
+ <filename>.dvi</filename>, ce qui rend l'utilisation de
+ <filename>/dev/fd/0</filename> pour l'entr&eacute;e standard
+ probl&eacute;matique. Nous pouvons contourner cette
+ difficult&eacute; en cr&eacute;ant un lien symbolique temporaire
+ (se terminant par <filename>.dvi</filename>) pointant vers
+ <filename>/dev/fd/0</filename>, obligeant ainsi
+ <command>dvilj2p</command> &agrave; lire l'entr&eacute;e
+ standard.</para>
+
+ <para>Le seul petit accroc restant est que nous ne pouvons pas
+ utiliser <filename>/tmp</filename> pour le lien temporaire. Les
+ liens symboliques ont pour propri&eacute;taire l'utilisateur et le
+ group <username>bin</username>. Le filtre est lanc&eacute; sous
+ l'utilisateur <username>daemon</username>. Et le bit <quote>sticky</quote> est
+ positionn&eacute; sur le r&eacute;pertoire
+ <filename>/tmp</filename>. Le filtre peut cr&eacute;er le lien,
+ mais il ne pourra pas nettoyer lorsqu'il aura fini et supprimer
+ ce lien puisqu'il appartient &agrave; un utilisateur
+ diff&eacute;rent.</para>
+
+ <para>Au lieu de &ccedil;a, le filtre cr&eacute;era le lien dans
+ le r&eacute;pertoire courant, qui est le r&eacute;pertoire
+ de la file d'attente des travaux d'impression (pr&eacute;cis&eacute; par le param&egrave;tre
+ <literal>sd</literal> dans <filename>/etc/printcap</filename>).
+ C'est l'endroit id&eacute;al pour faire travailler les filtres,
+ particuli&egrave;rement parce qu'il y a (parfois) plus d'espace
+ disque libre dans ce r&eacute;pertoire que
+ sous <filename>/tmp</filename>.</para>
+
+ <para>Voici, enfin, le filtre:</para>
+
+ <programlisting>#!/bin/sh
+#
+# hpdf - Imprime des donn&eacute;es DVI sur une imprimante HP/PCL
+# Fichier /usr/local/libexec/hpdf
+
+PATH=/usr/local/bin:$PATH; export PATH
+
+#
+# D&eacute;finit une fonction de nettoyage de nos fichiers temporaires. Ils prennent place
+# dans le r&eacute;pertoire courant, qui sera le r&eacute;pertoire
+# de file d'attente
+# de l'imprimante.
+#
+cleanup() {
+ rm -f hpdf$$.dvi
+}
+
+#
+# D&eacute;finit une fonction de gestion des erreurs fatales: affiche le message
+# d'erreur et retourne 2. Ce code d'erreur de 2 indique &agrave; LPD
+# de ne pas essayer de r&eacute;imprimer le travail d'impression
+#
+fatal() {
+ echo "$@" 1&gt;&amp;2
+ cleanup
+ exit 2
+}
+
+#
+# Si l'utilisateur enl&egrave;ve le travail d'impression, LPD envoie SIGINT, donc
+# il faut capturer le signal SIGINT
+# (et quelques autres signaux) pour nettoyer apr&egrave;s notre passage.
+#
+trap cleanup 1 2 15
+
+#
+# Assurons-nous qu'il n'y ait pas conflit ce nom avec des fichiers existants.
+#
+cleanup
+
+#
+# Lien du fichier DVI vers l'entr&eacute;e standard (fichier &agrave; imprimer).
+#
+ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
+
+#
+# Conversion LF = CR+LF
+#
+printf "\033&amp;k2G" || fatal "Cannot initialize printer"
+
+#
+# Conversion et impression. Le code de retour de dvilj2p ne semble
+# pas fiable: ignorons-le.
+#
+dvilj2p -M1 -q -e- dfhp$$.dvi
+
+#
+# Nettoyage et sortie de la proc&eacute;dure
+#
+cleanup
+exit 0</programlisting>
+
+ </sect4>
+
+ <sect4 id="printing-advanced-autoconv">
+ <title>Conversion automatique: une alternative aux filtres de
+ conversion</title>
+
+ <para>Tous ces filtres de conversion apportent beaucoup &agrave;
+ votre environnement d'impression, mais n&eacute;cessitent que
+ l'utilisateur pr&eacute;cise (dans la ligne de commande
+ &man.lpr.1;) lequel utiliser. Si vos utilisateurs ne sont pas
+ particuli&egrave;rement vers&eacute;s en informatique,
+ pr&eacute;ciser une option de filtre sera probl&eacute;matique. Mais ce
+ qui s'av&egrave;re pire encore est qu'une option de filtre mal
+ choisie peut lancer un filtre sur un type de fichier erron&eacute;
+ et causer l'impression de centaines de pages.</para>
+
+ <para>Plut&ocirc;t que d'installer quelque filtre de conversion
+ que ce soit, vous pr&eacute;f&eacute;rerez sans doute laisser
+ le filtre texte (puisque c'est le filtre par d&eacute;faut)
+ d&eacute;terminer le type de fichier qu'on lui a demand&eacute;
+ d'imprimer et lancer automatiquement le filtre de conversion
+ appropri&eacute;. Des outils comme <command>file</command>
+ peuvent s'av&eacute;rer utiles dans ce cas. Bien entendu, il sera
+ difficile d'&eacute;tablir les diff&eacute;rences entre
+ <emphasis>certains</emphasis> types de fichiers&mdash;et vous
+ pouvez toujours, bien s&ucirc;r, fournir des filtres de conversion
+ uniquement pour eux.</para>
+
+ <indexterm><primary>apsfilter</primary></indexterm>
+ <indexterm>
+ <primary>imprimer</primary>
+ <secondary>filtres</secondary>
+ <tertiary>apsfilter</tertiary>
+ </indexterm>
+
+ <para>Le catalogue des logiciels port&eacute;s &os; contient un
+ filtre texte, nomm&eacute; <command>apsfilter</command>
+ (<filename role="package">print/apsfilter</filename>), qui
+ sait effectuer la conversion automatique. Il peut
+ reconna&icirc;tre le texte brut, le &postscript; les
+ fichiers DVI et quasiment n'importe quelle sorte de
+ fichier, effectuer les conversions appropri&eacute;es et
+ imprimer.</para>
+ </sect4>
</sect3>
<sect3 id="printing-advanced-of">
- <title>Output Filters</title>
- <para></para>
+ <title>Filtres de sortie</title>
+
+ <para>Le gestionnaire d'impression
+ <application>LPD</application> reconna&icirc;t un autre
+ type de filtre dont nous n'avons pas
+ encore discut&eacute;: le filtre de sortie. Un filtre de
+ sortie est destin&eacute; &agrave; l'impression de texte brut
+ seulement, comme le filtre texte, mais avec de nombreuses
+ simplifications. Si vous utilisez un filtre de sortie mais pas
+ de filtre texte, alors:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><application>LPD</application> lance un filtre de sortie
+ une seule fois par travail d'impression, au lieu d'une fois
+ pour chacun des fichiers du travail d'impression.</para>
+ </listitem>
+
+ <listitem>
+ <para><application>LPD</application> ne fournit rien pour
+ permettre au filtre de sortie de
+ rep&eacute;rer le d&eacute;but ou la fin des fichiers du
+ travail d'impression.</para>
+ </listitem>
+
+ <listitem>
+ <para><application>LPD</application> ne passe pas le nom de
+ l'utilisateur ou le nom de la machine au filtre, qui n'est
+ donc pas pr&eacute;vu pour effectuer la
+ comptabilisation de l'impression. En fait, il ne
+ re&ccedil;oit que deux param&egrave;tres:</para>
+
+ <cmdsynopsis>
+ <command>nom-du-filtre</command>
+ <arg choice="plain">-w<replaceable>largeur</replaceable></arg>
+ <arg choice="plain">-l<replaceable>hauteur</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>O&ugrave; <replaceable>largeur</replaceable> provient du
+ param&egrave;tre <literal>pw</literal> et
+ <replaceable>hauteur</replaceable> du param&egrave;tre
+ <literal>pl</literal> de l'entr&eacute;e
+ <filename>/etc/printcap</filename> pour l'imprimante en
+ question.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Ne vous laissez pas s&eacute;duire par la simplicit&eacute;
+ d'un filtre de sortie. Si vous d&eacute;sirez que chaque fichier
+ d'un travail d'impression commence sur une page diff&eacute;rente,
+ un filtre de sortie <emphasis>ne conviendra pas</emphasis>.
+ Utilisez un filtre texte (&eacute;galement appel&eacute; filtre
+ d'entr&eacute;e); voir la section <link
+ linkend="printing-textfilter">Installer le filtre texte</link>. De
+ plus, le filtre de sortie se r&eacute;v&egrave;le en fait
+ <emphasis>plus complexe</emphasis> en ce sens qu'il doit examiner
+ le flux d'octets qui lui est envoy&eacute; pour y rechercher
+ des caract&egrave;res sp&eacute;ciaux et qu'il
+ doit s'envoyer &agrave; lui-m&ecirc;me des signaux comme s'ils
+ provenaient de <application>LPD</application>.</para>
+
+ <para>Toutefois, un filtre de sortie s'av&egrave;re
+ <emphasis>n&eacute;cessaire</emphasis> si vous d&eacute;sirez des
+ pages d'en-t&ecirc;te et avez besoin d'envoyer des s&eacute;quences
+ d'&eacute;chappement ou d'autres cha&icirc;nes d'initialisation
+ afin de pouvoir imprimer la page d'en-t&ecirc;te. (Mais il est
+ &eacute;galement <emphasis>futile</emphasis> si vous voulez imputer
+ les pages d'en-t&ecirc;te au compte de l'utilisateur, puisque
+ <application>LPD</application> ne livre pas d'information
+ sur l'utilisateur ou la machine au filtre de sortie).</para>
+
+ <para>Sur une seule imprimante, <application>LPD</application>
+ permet &agrave; la fois un filtre de sortie et des filtres texte ou
+ autres. Dans de tels cas, <application>LPD</application> ne lancera
+ le filtre de sortie que pour imprimer la page d'en-t&ecirc;te
+ (consultez la section <link
+ linkend="printing-advanced-header-pages">Pages
+ d'en-t&ecirc;te</link>). <application>LPD</application> attend
+ alors que le filtre de sortie <emphasis>s'arr&ecirc;te
+ par lui-m&ecirc;me</emphasis> en envoyant deux octets au filtre: ASCII 031 suivi
+ d'ASCII 001. Lorsqu'un filtre de sortie lit ces deux octets
+ (031,001), il devrait s'arr&ecirc;ter en s'envoyant &agrave;
+ lui-m&ecirc;me un <literal>SIGSTOP</literal>. Lorsque
+ <application>LPD</application> a fini d'ex&eacute;cuter les
+ autres filtres, il relance le filtre de sortie en lui envoyant
+ un <literal>SIGCONT</literal>.</para>
+
+ <para>S'il y a un filtre de sortie mais <emphasis>aucun</emphasis>
+ filtre texte et que <application>LPD</application> s'occupe
+ d'un travail d'impression concernant du texte brut, alors
+ <application>LPD</application> utilise le filtre de sortie pour
+ r&eacute;aliser ce travail d'impression. Comme expos&eacute;
+ plus haut, le filtre de sortie imprimera chacun des travaux
+ d'impression s&eacute;quentiellement sans que des sauts de page
+ ou autres formes d'avancement du
+ papier ne surviennent, et ce n'est vraisemblablement
+ <emphasis>pas</emphasis> ce que vous d&eacute;sirez. Dans
+ presque tous les cas, il vous faut un filtre texte.</para>
+
+ <para>Le programme <command>lpf</command>, que nous avons
+ pr&eacute;sent&eacute; pr&eacute;c&eacute;demment comme un filtre texte, peut
+ &eacute;galement fonctionner en tant que filtre de sortie. Si
+ vous avez besoin d'un filtre de sortie vite-fait-bien-fait mais
+ ne voulez pas &eacute;crire le code d'examen d'octets et d'envoi
+ de signal, essayez <command>lpf</command>. Vous pouvez
+ &eacute;galement inclure <command>lpf</command> dans une proc&eacute;dure
+ pour prendre en charge tout code d'initialisation qui pourrait
+ &ecirc;tre requis par l'imprimante.</para>
</sect3>
<sect3 id="printing-advanced-lpf">
- <title><command>lpf</command>: a Text Filter</title>
- <para></para>
+ <title><command>lpf</command>: un filtre texte</title>
+
+ <para>Le programme <filename>/usr/libexec/lpr/lpf</filename> qui
+ est fourni avec la distribution binaire &os; est un filtre texte
+ (un filtre d'entr&eacute;e) qui sait indenter la sortie (un
+ travail d'impression soumis avec <command>lpr -i</command>),
+ laisse passer les caract&egrave;res litt&eacute;raux (travail
+ d'impression soumis avec <command>lpr -l</command>), ajuste la
+ position d'impression des retours arri&egrave;re et des
+ tabulations dans le travail d'impression, et comptabilise les
+ pages imprim&eacute;es. Il peut &eacute;galement servir
+ de filtre de sortie.</para>
+
+ <para>Le filtre <command>lpf</command> convient &agrave; de nombreux
+ environnements d'impression. Et bien qu'il ne puisse pas envoyer de
+ s&eacute;quences d'initialisation &agrave; une imprimante, il est
+ ais&eacute; d'&eacute;crire une proc&eacute;dure pour effectuer
+ l'initialisation n&eacute;cessaire et ensuite ex&eacute;cuter
+ <command>lpf</command>.</para>
+
+ <indexterm><primary>page accounting</primary></indexterm>
+ <indexterm>
+ <primary>accounting</primary>
+ <secondary>imprimante</secondary>
+ </indexterm>
+
+ <para>Afin que <command>lpf</command> m&egrave;ne &agrave; bien la
+ comptabilisation des pages, il faut que des valeurs correctes
+ soient indiqu&eacute;es pour les param&egrave;tres
+ <literal>pw</literal> et <literal>pl</literal> dans le fichier
+ <filename>/etc/printcap</filename>. Il utilise ces valeurs pour
+ d&eacute;terminer combien de texte peut &ecirc;tre imprim&eacute;
+ sur une page et combien de pages ont &eacute;t&eacute;
+ imprim&eacute;es dans le travail d'impression d'un utilisateur.
+ Pour plus d'informations sur la comptabilisation de l'impression,
+ lisez la section
+ <link linkend="printing-advanced-acct">Comptabiliser l'utilisation
+ de l'imprimante</link>.</para>
</sect3>
+ </sect2>
+
+ <sect2 id="printing-advanced-header-pages">
+ <title>Pages d'en-t&ecirc;te</title>
+
+ <para>Si vous avez <emphasis>beaucoup</emphasis> d'utilisateurs, et
+ que tous utilisent des imprimantes diverses, alors vous allez
+ certainement envisager les <emphasis>pages
+ d'en-t&ecirc;te</emphasis> comme un mal n&eacute;cessaire.</para>
+
+ <indexterm>
+ <primary>banni&egrave;res</primary>
+ <see>pages d'en-t&ecirc;te</see>
+ </indexterm>
+ <indexterm><primary>pages d'en-t&ecirc;te</primary></indexterm>
+
+ <para>Les pages d'en-t&ecirc;te, &eacute;galement appel&eacute;es
+ <emphasis>banni&egrave;res</emphasis> ou
+ <emphasis>burst page</emphasis>, identifient &agrave; qui
+ appartiennent les travaux d'impression apr&egrave;s qu'ils
+ aient &eacute;t&eacute; imprim&eacute;s. Elles sont en
+ g&eacute;n&eacute;ral imprim&eacute;es en caract&egrave;res de
+ grande taille et en gras, peuvent comporter des bordures
+ d&eacute;cor&eacute;es, de sorte qu'elles contrastent dans
+ une pile d'impressions avec les v&eacute;ritables documents formant
+ les travaux d'impression des utilisateurs. Elles leur permettent
+ de retrouver facilement leurs travaux d'impression.
+ L'inconv&eacute;nient majeur d'une page d'en-t&ecirc;te est qu'elle
+ repr&eacute;sente une page suppl&eacute;mentaire &agrave;
+ imprimer pour chacun des travaux d'impression, son utilit&eacute;
+ &eacute;ph&eacute;m&egrave;re ne d&eacute;passe pas quelques
+ minutes, et elle termine au recyclage du papier ou dans une corbeille.
+ (Notez que une page d'en-t&ecirc;te est li&eacute;e &agrave; chaque
+ travail d'impression et non &agrave; chaque fichier dans un travail
+ d'impression: il se pourrait donc que le g&acirc;chis de papier ne
+ soit pas si grand.)</para>
+
+ <para>Le syst&egrave;me <application>LPD</application> peut fournir
+ des pages d'en-t&ecirc;te automatiquement pour vos impressions
+ <emphasis>si</emphasis> votre imprimante sait imprimer directement du texte
+ brut. Si vous disposez d'une imprimante &postscript;,
+ il vous faudra un programme externe pour g&eacute;n&eacute;rer la
+ page d'en-t&ecirc;te; lisez la section <link
+ linkend="printing-advanced-header-pages-ps">Les pages d'en-t&ecirc;te
+ sur les imprimantes &postscript;</link>.</para>
+
+ <sect3 id="printing-advanced-header-pages-enabling">
+ <title>Activer les pages d'en-t&ecirc;te</title>
+
+ <para>Dans la section <link linkend="printing-simple">Configuration
+ simple de l'imprimante</link>, nous avons d&eacute;sactiv&eacute;
+ les pages d'en-t&ecirc;te en positionnant le param&egrave;tre
+ <literal>sh</literal> (ce qui signifie <quote>suppress
+ header</quote>, soit <quote>suppression des
+ en-t&ecirc;tes</quote>) dans <filename>/etc/printcap</filename>.
+ Pour activer les pages d'en-t&ecirc;te sur une imprimante, il
+ suffit d'enlever ce param&egrave;tre
+ <literal>sh</literal>.</para>
+
+ <para>Cela semble trop facile, n'est-ce pas?</para>
+
+ <para>C'est vrai. Il se <emphasis>pourrait</emphasis> que vous
+ ayez &agrave; fournir un filtre de sortie pour envoyer des
+ cha&icirc;nes d'initialisation &agrave; l'imprimante. Voici
+ un exemple de filtre sortie pour les imprimantes Hewlett-Packard
+ compatibles-PCL:</para>
+
+ <programlisting>#!/bin/sh
+#
+# hpof - filtre de sortie pour les imprimantes Hewlett Packard compatibles PCL
+# Fichier /usr/local/libexec/hpof
+
+printf "\033&amp;k2G" || exit 2
+exec /usr/libexec/lpr/lpf</programlisting>
+
+ <para>Sp&eacute;cifiez le chemin d'acc&egrave;s au filtre de
+ sortie avec le param&egrave;tre <literal>of</literal>. Lisez
+ la section <link linkend="printing-advanced-of">Filtres de
+ sortie</link> pour plus de d&eacute;tails.</para>
+
+ <para>Voici un fichier <filename>/etc/printcap</filename>
+ d'exemple pour l'imprimante <literal>teak</literal> que nous
+ avons pr&eacute;sent&eacute;e plus haut; nous avons activ&eacute;
+ les pages d'en-t&ecirc;te et ajout&eacute; le fichier de sortie
+ ci-dessus:</para>
+
+ <programlisting>#
+# /etc/printcap pour la machine orchid
+#
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/hpif:\
+ :vf=/usr/local/libexec/hpvf:\
+ :of=/usr/local/libexec/hpof:</programlisting>
+
+ <para>D&eacute;sormais, lorsque les utilisateurs lancent des
+ travaux d'impression avec <literal>teak</literal>, ils obtiennent
+ une page d'en-t&ecirc;te avec chaque travail d'impression. Si
+ vos utilisateurs d&eacute;sirent perdre du temps &agrave;
+ rechercher leurs impressions, ils peuvent omettre la page
+ d'en-t&ecirc;te en soumettant le travail d'impression avec la
+ commande <command>lpr -h</command>; lisez la section
+ <link linkend="printing-lpr-options-misc">Options des pages
+ d'en-t&ecirc;te</link> pour conna&icirc;tre plus d'options
+ &man.lpr.1;.</para>
+
+ <note>
+ <para><application>LPD</application> imprime un
+ caract&egrave;re de saut de page apr&egrave;s une
+ page d'en-t&ecirc;te. Si votre imprimante utilise un
+ autre caract&egrave;re ou s&eacute;quence de
+ caract&egrave;res diff&eacute;rente pour &eacute;jecter une page,
+ pr&eacute;cisez-le avec le param&egrave;tre
+ <literal>ff</literal> dans
+ <filename>/etc/printcap</filename>.</para>
+ </note>
+ </sect3>
+
+ <sect3 id="printing-advanced-header-pages-controlling">
+ <title>Contr&ocirc;le des pages d'en-t&ecirc;te</title>
+
+ <para>Une fois les pages d'en-t&ecirc;te activ&eacute;es,
+ <application>LPD</application> produira un <emphasis>en-t&ecirc;te
+ long</emphasis>, c'est &agrave; dire une page enti&egrave;re de
+ grands caract&egrave;res identifiant l'utilisateur, le nom
+ de la machine et le travail d'impression. Voici un exemple
+ (<username>kelly</username> a lanc&eacute; le travail d'impression nomm&eacute;
+ <quote>outline</quote> depuis la machine <hostid>rose</hostid>):</para>
+
+ <programlisting> k ll ll
+ k l l
+ k l l
+ k k eeee l l y y
+ k k e e l l y y
+ k k eeeeee l l y y
+ kk k e l l y y
+ k k e e l l y yy
+ k k eeee lll lll yyy y
+ y
+ y y
+ yyyy
+
+
+ ll
+ t l i
+ t l
+ oooo u u ttttt l ii n nnn eeee
+ o o u u t l i nn n e e
+ o o u u t l i n n eeeeee
+ o o u u t l i n n e
+ o o u uu t t l i n n e e
+ oooo uuu u tt lll iii n n eeee
+
+
+
+
+
+
+
+
+
+ r rrr oooo ssss eeee
+ rr r o o s s e e
+ r o o ss eeeeee
+ r o o ss e
+ r o o s s e e
+ r oooo ssss eeee
+
+
+
+
+
+
+
+ Job: outline
+ Date: Sun Sep 17 11:04:58 1995</programlisting>
+
+ <para><application>LPD</application> ajoute un saut de page
+ &agrave; ce texte de sorte que le travail d'impression commence
+ sur une nouvelle page (&agrave; moins que <literal>sf</literal>
+ (supprimer les sauts de page) ne soit dans l'entr&eacute;e correspondant
+ &agrave; l'imprimante dans <filename>/etc/printcap</filename>).</para>
+
+ <para>Si vous pr&eacute;f&eacute;rez, <application>LPD</application> peut
+ g&eacute;n&eacute;rer des <emphasis>en-t&ecirc;te courts</emphasis>; ajoutez
+ le param&egrave;tre <literal>sb</literal> (en-t&ecirc;te court) dans le
+ fichier <filename>/etc/printcap</filename>. La
+ page d'en-t&ecirc;te ressemblera &agrave; ceci:</para>
+
+ <programlisting>rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995</programlisting>
+
+ <para>Par d&eacute;faut &eacute;galement,
+ <application>LPD</application> imprime d'abord la page
+ d'en-t&ecirc;te, puis le travail d'impression. Pour inverser ce
+ comportement, placez le param&egrave;tre <literal>hl</literal>
+ (en-t&ecirc;te &agrave; la fin) dans <filename>/etc/printcap</filename>.</para>
+ </sect3>
+
+ <sect3 id="printing-advanced-header-pages-accounting">
+ <title>Comptabiliser les pages d'en-t&ecirc;te</title>
+
+ <para>Utiliser les pages d'en-t&ecirc;te fournies par
+ <application>LPD</application> provoque un comportement
+ particulier lorsqu'il s'agit de comptabiliser l'utilisation de
+ l'imprimante: les pages d'en-t&ecirc;te doivent &ecirc;tre
+ <emphasis>gratuites</emphasis>.</para>
+
+ <para>Pourquoi?</para>
+
+ <para>Parce que le filtre de sortie est le seul programme externe
+ pouvant tenir les comptes qui aura le contr&ocirc;le lors de
+ l'impression de la page d'en-t&ecirc;te, et qu'aucune
+ information sur <emphasis>l'utilisateur ou le nom
+ de la machine</emphasis> ne lui est donn&eacute;e ni aucun
+ fichier de comptabilisation, par cons&eacute;quent il ne sait
+ pas &agrave; qui attribuer le co&ucirc;t de l'utilisation
+ de l'imprimante. Il ne suffit pas non plus de
+ simplement <quote>ajouter une page</quote> au filtre
+ texte ou un quelconque filtre de conversion (qui, eux,
+ poss&egrave;dent des informations sur l'utilisateur et la
+ machine) puisque les utilisateurs peuvent supprimer les
+ pages d'en-t&ecirc;te avec <command>lpr -h</command>. Ils
+ pourraient toujours se voir imputer des pages d'en-t&ecirc;te
+ qu'ils n'auraient pas imprim&eacute;es. En somme,
+ <command>lpr -h</command> demeurera l'option favorite des
+ utilisateurs soucieux de l'environnement, mais vous ne pouvez
+ aucunement les inciter &agrave; l'utiliser.</para>
+
+ <para>Il ne <emphasis>suffit pas non plus</emphasis> de
+ laisser chacun des filtres g&eacute;n&eacute;rer ses propres
+ pages d'en-t&ecirc;te (ce qui permettrait de savoir &agrave;
+ qui imputer les co&ucirc;ts). Si les utilisateurs
+ d&eacute;siraient omettre les pages d'en-t&ecirc;te avec
+ <command>lpr -h</command>, ils les obtiendraient quand
+ m&ecirc;me et le co&ucirc;t leur serait attribu&eacute; puisque
+ <application>LPD</application> ne donne aucun renseignement sur
+ l'emploi de l'option <option>-h</option> &agrave; aucun des
+ filtres.</para>
+
+ <para>Alors, quelles sont les options &agrave; votre disposition?</para>
+
+ <para>Vous pouvez:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Accepter le comportement de
+ <application>LPD</application> et la gratuit&eacute; des pages
+ d'en-t&ecirc;te.</para>
+ </listitem>
+
+ <listitem>
+ <para>Installer une alternative &agrave;
+ <application>LPD</application>, comme
+ <application>LPRng</application>. La section
+ <link linkend="printing-lpd-alternatives">Alternatives au
+ gestionnaire d'impression standard</link> en
+ dit plus au sujet des autres gestionnaires
+ d'impression qui peuvent &ecirc;tre
+ substitu&eacute;s &agrave;
+ <application>LPD</application>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ecrire un filtre de sortie
+ <emphasis>intelligent</emphasis>. Normalement, un filtre de
+ sortie n'est pas cens&eacute; faire plus que d'initialiser
+ une imprimante ou ex&eacute;cuter une conversion simple de
+ caract&egrave;res. Il convient aux pages d'en-t&ecirc;te
+ et aux travaux d'impression de texte brut (lorsqu'il n'y
+ a aucun filtre (d'entr&eacute;e) texte). Mais, s'il
+ existe un filtre texte pour les travaux d'impression de texte, alors <application>LPD</application> ne lancera
+ le filtre de sortie que pour les pages d'en-t&ecirc;te. Le
+ filtre de sortie peut &eacute;galement analyser le texte
+ de la page d'en-t&ecirc;te g&eacute;n&eacute;r&eacute; par
+ <application>LPD</application> pour d&eacute;terminer quels
+ sont l'utilisateur et la machine &agrave; qui il faut
+ attribuer le co&ucirc;t de cette page d'en-t&ecirc;te. Le
+ seul autre probl&egrave;me avec cette m&eacute;thode est
+ que le filtre de sortie ne sait toujours pas quel fichier
+ de comptabilisation utiliser (le nom du fichier
+ sp&eacute;cifi&eacute; par le param&egrave;tre
+ <literal>af</literal> ne lui est pas fourni), mais si vous
+ disposez d'un fichier de comptabilisation bien
+ identifi&eacute;, vous pouvez le coder en dur dans le
+ filtre de sortie. Afin de faciliter l'&eacute;tape d'analyse,
+ utilisez le param&egrave;tre <literal>sh</literal>
+ (en-t&ecirc;te courte) dans <filename>/etc/printcap</filename>. D'un
+ autre c&ocirc;t&eacute;, tout cela pourrait bien
+ repr&eacute;senter beaucoup de d&eacute;rangement, et les
+ utilisateurs appr&eacute;cieront certainement davantage
+ l'administrateur g&eacute;n&eacute;reux qui propose la
+ gratuit&eacute; des pages d'en-t&ecirc;te.</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3 id="printing-advanced-header-pages-ps">
+ <title>Les pages d'en-t&ecirc;te sur les imprimantes
+ &postscript;</title>
+
+ <para>Comme d&eacute;crit pr&eacute;c&eacute;demment,
+ <application>LPD</application> est en mesure de
+ g&eacute;n&eacute;rer des pages d'en-t&ecirc;te texte convenant
+ pour de nombreuses d'imprimantes. Bien entendu, &postscript;
+ ne peut pas imprimer du texte directement, donc la
+ fonctionnalit&eacute; de page d'en-t&ecirc;te offerte par
+ <application>LPD</application> est inutilisable ou presque.</para>
+
+ <para>Une solution manifeste est de faire g&eacute;n&eacute;rer
+ la page d'en-t&ecirc;te par tous les filtres de conversion et
+ le filtre texte. Les filtres devraient employer les
+ param&egrave;tres utilisateur et nom de machine pour
+ g&eacute;n&eacute;rer une page d'en-t&ecirc;te convenable.
+ L'inconv&eacute;nient de cette m&eacute;thode est que les
+ utilisateurs obtiendront toujours une page d'en-t&ecirc;te,
+ m&ecirc;me s'ils soumettent leurs travaux d'impression avec
+ <command>lpr -h</command>.</para>
+
+ <para>Examinons cette m&eacute;thode. La proc&eacute;dure ci-dessous prend
+ trois param&egrave;tres (le nom de l'utilisateur, le nom
+ de la machine et celui du travail d'impression) et
+ r&eacute;alise une page d'en-t&ecirc;te simple en &postscript;:</para>
+
+ <programlisting>#!/bin/sh
+#
+# make-ps-header - g&eacute;n&eacute;re une page d'en-t&ecirc;te PostScript sur la sortie standard
+# Fichier /usr/local/libexec/make-ps-header
+#
+
+#
+# Ce sont des unit&eacute;s PostScript (72 par pouce). A modifier pour A4 ou
+# tout autre format papier employ&eacute;:
+#
+page_width=612
+page_height=792
+border=72
+
+#
+# V&eacute;rification des param&egrave;tres
+#
+if [ $# -ne 3 ]; then
+ echo "Usage: `basename $0` &lt;user&gt; &lt;host&gt; &lt;job&gt;" 1&gt;&amp;2
+ exit 1
+fi
+
+#
+# M&eacute;morisation des param&egrave;tres, pour la lisibilit&eacute; du PostScript, plus bas.
+#
+user=$1
+host=$2
+job=$3
+date=`date`
+
+#
+# Envoi du code PostScript sur stdout.
+#
+exec cat &lt;&lt;EOF
+%!PS
+
+%
+% Assurons-nous qu'il n'y a pas d'interf&eacute;rence avec le travail
+% utilisateur qui suivra
+%
+save
+
+%
+% Applique une grosse bordure d&eacute;sagr&eacute;able autour
+% du bord de la page.
+%
+$border $border moveto
+$page_width $border 2 mul sub 0 rlineto
+0 $page_height $border 2 mul sub rlineto
+currentscreen 3 -1 roll pop 100 3 1 roll setscreen
+$border 2 mul $page_width sub 0 rlineto closepath
+0.8 setgray 10 setlinewidth stroke 0 setgray
+
+%
+% Affiche le nom de l'utilisateur, de fa&ccedil;on jolie, grande et pro&eacute;minente
+%
+/Helvetica-Bold findfont 64 scalefont setfont
+$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
+($user) show
+
+%
+% Maintenant, les d&eacute;tails ennuyant:
+%
+/Helvetica findfont 14 scalefont setfont
+/y 200 def
+[ (Job:) (Host:) (Date:) ] {
+200 y moveto show /y y 18 sub def }
+forall
+
+/Helvetica-Bold findfont 14 scalefont setfont
+/y 200 def
+[ ($job) ($host) ($date) ] {
+ 270 y moveto show /y y 18 sub def
+} forall
+
+%
+% C'est tout
+%
+restore
+showpage
+EOF</programlisting>
+
+ <para>D&eacute;sormais, chacun des filtres de conversion et le
+ filtre texte peuvent appeler cette proc&eacute;dure pour d'abord
+ g&eacute;n&eacute;rer la page d'en-t&ecirc;te, et ensuite imprimer
+ le travail d'impression de l'utilisateur. Voici le filtre
+ de conversion DVI d&eacute;j&agrave; mentionn&eacute; plus
+ haut dans ce document, modifi&eacute; afin de
+ g&eacute;n&eacute;rer une page d'en-t&ecirc;te:</para>
+
+ <programlisting>#!/bin/sh
+#
+# psdf - filtre DVI vers imprimante PostScript
+# Fichier /usr/local/libexec/psdf
+#
+# Appel&eacute; par lpd quand l'utilisateur lance lpr -d
+#
+
+orig_args="$@"
+
+fail() {
+ echo "$@" 1&gt;&amp;2
+ exit 2
+}
+
+while getopts "x:y:n:h:" option; do
+ case $option in
+ x|y) ;; # Ignore
+ n) login=$OPTARG ;;
+ h) host=$OPTARG ;;
+ *) echo "LPD started `basename $0` wrong." 1&gt;&amp;2
+ exit 2
+ ;;
+ esac
+done
+
+[ "$login" ] || fail "Pas de nom d'utilisateur"
+[ "$host" ] || fail "PAs de nom de machine"
+
+( /usr/local/libexec/make-ps-header $login $host "DVI File"
+ /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args</programlisting>
+
+ <para>Observez que le filtre doit analyser la liste des
+ param&egrave;tres pour d&eacute;terminer le nom de l'utilisateur et
+ celui de la machine. L'analyse men&eacute;e par les autres
+ filtres de conversion est identique. Toutefois, le filtre
+ texte r&eacute;clame un ensemble de param&egrave;tres
+ l&eacute;g&egrave;rement diff&eacute;rent (voyez la section
+ <link linkend="printing-advanced-filters">Fonctionnement
+ des filtres</link>).</para>
+
+ <para>Comme pr&eacute;c&eacute;demment expos&eacute;, cette solution,
+ quoique relativement simple, invalide l'option de
+ <quote>suppression de page d'en-t&ecirc;te</quote> (l'option
+ <option>-h</option>) de <command>lpr</command>. Si les
+ utilisateurs d&eacute;siraient &eacute;pargner la vie d'un
+ arbre (ou &eacute;conomiser quelques centimes, si vous faites
+ payer les pages d'en-t&ecirc;te), ils ne seraient pas en
+ mesure de le faire, puisque chaque filtre va imprimer une page
+ d'en-t&ecirc;te avec chaque travail d'impression.</para>
+
+ <para>Pour permettre aux utilisateurs de d&eacute;sactiver les
+ pages d'en-t&ecirc;te en fonction du travail d'impression,
+ il vous faudra recourir &agrave; l'une
+ des astuces de la section <link
+ linkend="printing-advanced-header-pages-accounting">Comptabiliser
+ les pages d'en-t&ecirc;te</link>: &eacute;crire un filtre de
+ sortie qui analyse la page d'en-t&ecirc;te
+ g&eacute;n&eacute;r&eacute;e par LPD et produit une version
+ &postscript;. Si l'utilisateur soumet le travail d'impression
+ avec <command>lpr -h</command> alors ni
+ <application>LPD</application> ni votre filtre de sortie ne
+ g&eacute;n&eacute;reront de page d'en-t&ecirc;te. Sinon, votre
+ filtre de sortie lira le texte en provenance de <application>LPD</application>
+ et enverra la page d'en-t&ecirc;te &postscript; appropri&eacute;e
+ &agrave; l'imprimante.</para>
+
+ <para>Si vous disposez d'une imprimante &postscript; sur une
+ interface s&eacute;rie, vous pouvez utiliser
+ <command>lprps</command>, qui est livr&eacute; avec un filtre
+ de sortie, <command>psof</command>, qui r&eacute;alise ce que
+ nous venons d'exposer ci-dessus. Notez que
+ <command>psof</command> n'assume pas la tenue de comptes pour
+ les pages d'en-t&ecirc;te.</para>
+ </sect3>
+ </sect2>
<sect2 id="printing-advanced-network-printers">
- <title>Networked Printing</title>
+ <title>Imprimer via un r&eacute;seau</title>
+
+ <indexterm>
+ <primary>imprimantes</primary>
+ <secondary>r&eacute;seau</secondary>
+ </indexterm>
+ <indexterm><primary>impression r&eacute;seau</primary></indexterm>
+
+ <para>&os; g&egrave;re l'impression via un r&eacute;seau: c'est
+ &agrave; dire en envoyant les travaux d'impression &agrave; des
+ imprimantes distantes. L'impression via un r&eacute;seau
+ d&eacute;signe deux choses diff&eacute;rentes:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Acc&eacute;der &agrave; une imprimante connect&eacute;e
+ &agrave; une machine distante. Vous installez une imprimante
+ disposant d'une interface conventionnelle, s&eacute;rie ou
+ parall&egrave;le, sur une machine. Puis vous configurez
+ <application>LPD</application> pour permettre l'acc&egrave;s
+ &agrave; l'imprimante depuis d'autres machines du
+ r&eacute;seau. La section <link
+ linkend="printing-advanced-network-rm">Imprimantes
+ install&eacute;es sur des machines distantes</link> en
+ d&eacute;taillera la mise en &oelig;uvre.</para>
+ </listitem>
+
+ <listitem>
+ <para>Acc&eacute;der &agrave; une imprimante directement
+ connect&eacute;e au r&eacute;seau. L'imprimante dispose d'une
+ interface r&eacute;seau en plus (ou &agrave; la place)
+ d'interfaces plus conventionnelles, s&eacute;rie ou
+ parall&egrave;le. Une imprimante de ce genre peut fonctionner
+ ainsi:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Elle peut comprendre le protocole <application>LPD</application>
+ et sait m&ecirc;me g&eacute;rer une file d'attente de travaux
+ d'impression provenant de machines distantes. En ce cas,
+ elle se comporte comme une machine normale qui
+ ex&eacute;cuterait <application>LPD</application>. Suivez
+ la m&ecirc;me proc&eacute;dure que celle expos&eacute;e
+ &agrave; la section <link
+ linkend="printing-advanced-network-rm">Imprimantes
+ install&eacute;es sur des machines distantes</link> afin
+ de configurer une imprimante de ce genre.</para>
+ </listitem>
+
+ <listitem>
+ <para>Elle peut savoir g&eacute;rer un flux de donn&eacute;es au
+ travers d'une connexion r&eacute;seau. Dans ce cas, vous
+ pouvez <quote>attacher</quote> l'imprimante &agrave; l'une
+ des machines du r&eacute;seau en la rendant responsable
+ de la gestion de la file d'impression et de l'envoi des
+ travaux d'impression &agrave; l'imprimante. La section
+ <link linkend="printing-advanced-network-net-if">Imprimantes
+ avec des interfaces utilisant des flux r&eacute;seau</link>
+ donne quelque indications sur l'installation d'imprimantes de ce
+ type.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
<sect3 id="printing-advanced-network-rm">
- <title>Printers Installed on Remote Hosts</title>
- <para></para>
+ <title>Imprimantes install&eacute;es sur des machines
+ distantes</title>
+
+ <para>Le gestionnaire d'impression <application>LPD</application>
+ dispose des fonctions pour g&eacute;rer l'envoi des travaux d'impression &agrave;
+ d'autres machines ex&eacute;cutant &eacute;galement
+ <application>LPD</application> (ou un syst&egrave;me qui lui
+ est compatible). Cette fonctionnalit&eacute; vous permet
+ d'installer une imprimante sur une machine, puis de
+ la rendre accessible depuis les autres
+ machines. Cela fonctionne &eacute;galement avec les imprimantes
+ disposant d'interfaces r&eacute;seau comprenant le protocole
+ <application>LPD</application>.</para>
+
+ <para>Pour activer ce type d'impression &agrave; distance, installez
+ d'abord une imprimante sur une machine, qui sera
+ <emphasis>la machine d'impression</emphasis>, en suivant les
+ instructions de configuration basique d&eacute;crites &agrave; la
+ section <link linkend="printing-simple">Configuration simple de
+ l'imprimante</link>. R&eacute;alisez toute &eacute;tape de
+ la <link linkend="printing-advanced">configuration avanc&eacute;e
+ de l'imprimante</link> dont vous pourriez avoir besoin. Veillez &agrave;
+ tester
+ l'imprimante et v&eacute;rifiez qu'elle fonctionne avec les
+ param&egrave;tres de <application>LPD</application> que vous avez
+ activ&eacute;s. Assurez-vous &eacute;galement que
+ <emphasis>la machine locale</emphasis> est autoris&eacute;e &agrave;
+ utiliser le service <application>LPD</application> sur
+ <emphasis>la machine distante</emphasis> (lisez la section
+ <link linkend="printing-advanced-restricting-remote">Restreindre
+ les impressions &agrave; distance</link>).</para>
+
+ <indexterm>
+ <primary>imprimantes</primary>
+ <secondary>r&eacute;seau</secondary>
+ </indexterm>
+
+ <indexterm><primary>impression en r&eacute;seau</primary></indexterm>
+
+ <para>Si vous utilisez une imprimante avec une interface
+ r&eacute;seau qui est compatible avec
+ <application>LPD</application>, alors <emphasis>la machine
+ d'impression</emphasis> dans le texte ci-dessous est
+ l'imprimante elle-m&ecirc;me, et le <emphasis>nom de
+ l'imprimante</emphasis> est le nom que vous avez
+ param&eacute;tr&eacute; pour l'imprimante. Lisez la documentation
+ livr&eacute;e avec votre imprimante ou l'interface
+ r&eacute;seau-imprimante.</para>
+
+ <tip>
+ <para>Si vous utilisez une Hewlett Packard Laserjet, alors le
+ nom d'imprimante <literal>text</literal> r&eacute;alisera
+ la conversion LF en CRLF automatiquement, de sorte que vous
+ n'aurez pas besoin de la proc&eacute;dure <filename>hpif</filename>.</para>
+ </tip>
+
+ <para>Ensuite, sur les autres machines pour lesquelles vous
+ d&eacute;sirez autoriser l'acc&egrave;s &agrave; l'imprimante,
+ cr&eacute;ez une ligne dans leur
+ <filename>/etc/printcap</filename> avec les param&egrave;tres
+ suivants:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Nommez cette entr&eacute;e comme vous le voulez. Par
+ souci de simplicit&eacute;, cependant, vous
+ pr&eacute;f&eacute;rerez certainement employer les
+ m&ecirc;mes nom et alias que ceux utilis&eacute;s sur
+ la machine de d'impression.</para>
+ </listitem>
+
+ <listitem>
+ <para>Laissez le param&egrave;tre <literal>lp</literal>
+ non-renseign&eacute;,
+ de mani&egrave;re explicite (<literal>:lp=:</literal>).</para>
+ </listitem>
+
+ <listitem>
+ <para>Cr&eacute;ez un r&eacute;pertoire de file d'impression et
+ indiquez son chemin d'acc&egrave;s dans le param&egrave;tre
+ <literal>sd</literal>. C'est l&agrave; o&ugrave;
+ <application>LPD</application> entreposera les travaux
+ d'impression avant leur envoi vers la machine
+ d'impression.</para>
+ </listitem>
+
+ <listitem>
+ <para>Indiquez le nom de la machine d'impression avec le param&egrave;tre
+ <literal>rm</literal>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Placez le nom de l'imprimante sur <emphasis>la
+ machine d'impression</emphasis> dans le param&egrave;tre
+ <literal>rp</literal>.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>C'est tout. Il n'est pas n&eacute;cessaire de pr&eacute;ciser
+ la liste des filtres de conversion, les dimensions de la page,
+ ou quoique ce soit d'autre dans le fichier
+ <filename>/etc/printcap</filename>.</para>
+
+ <para>Voici un exemple. La machine <hostid>rose</hostid> dispose
+ de deux imprimantes, <literal>bamboo</literal> et
+ <literal>rattan</literal>. Nous allons permettre aux utilisateurs
+ de la machine <hostid>orchid</hostid> d'imprimer avec ces
+ imprimantes.
+ Voici le fichier <filename>/etc/printcap</filename> pour
+ <hostid>orchid</hostid> (apparu dans la section
+ <link linkend="printing-advanced-header-pages-enabling">Activer
+ les pages d'en-t&ecirc;te</link>). Il contenait
+ d&eacute;j&agrave; une entr&eacute;e pour l'imprimante
+ <literal>teak</literal>; nous avons ajout&eacute; celles pour
+ les deux imprimantes sur la machine <hostid>rose</hostid>:</para>
+
+ <programlisting>#
+# /etc/printcap pour la machine orchid - ajout d'imprimantes (distantes)
+# sur rose
+#
+
+#
+# teak est locale; connect&eacute;e directement &agrave; orchid:
+#
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/ifhp:\
+ :vf=/usr/local/libexec/vfhp:\
+ :of=/usr/local/libexec/ofhp:
+
+#
+# rattan est connect&eacute;e &agrave; rose; envoie les travaux pour rattan
+# &agrave; rose:
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
+
+#
+# bamboo est &eacute;galement connect&eacute;e &agrave; rose:
+#
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:</programlisting>
+
+ <para>Ensuite, nous n'avons qu'&agrave; cr&eacute;er les
+ r&eacute;pertoires de file d'impression sur
+ <hostid>orchid</hostid>:</para>
+
+ <screen>&prompt.root; <userinput>mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput>
+&prompt.root; <userinput>chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput>
+&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput></screen>
+
+ <para>Maintenant les utilisateurs d'<hostid>orchid</hostid>
+ peuvent imprimer sur <literal>rattan</literal> et
+ <literal>bamboo</literal>. Par exemple, si un utilisateur sur
+ <hostid>orchid</hostid> entrait:</para>
+
+ <screen>&prompt.user; <userinput>lpr -P bamboo -d <replaceable>sushi-review.dvi</replaceable></userinput></screen>
+
+ <para>le syst&egrave;me <application>LPD</application> sur
+ <hostid>orchid</hostid> copierait le travail d'impression dans le
+ r&eacute;pertoire de file d'impression
+ <filename>/var/spool/lpd/bamboo</filename> et rel&egrave;verait qu'il
+ s'agit d'un travail d'impression DVI. D&egrave;s que la machine
+ <hostid>rose</hostid> dispose d'assez de place dans son
+ r&eacute;pertoire de file d'impression, les
+ deux <application>LPD</application>
+ transf&egrave;rent le fichier &agrave; <hostid>rose</hostid>. Le
+ fichier reste en attente dans la file de <hostid>rose</hostid>
+ jusqu'&agrave; son impression. Il sera converti de DVI en
+ &postscript; (puisque <literal>bamboo</literal> est une imprimante
+ &postscript;) sur <hostid>rose</hostid>.</para>
</sect3>
<sect3 id="printing-advanced-network-net-if">
- <title>Printers with Networked Data Stream Interfaces</title>
- <para></para>
+ <title>Imprimantes avec des interfaces utilisant des flux
+ r&eacute;seau</title>
+
+ <para>Bien souvent, lorsque vous achetez une carte d'interface
+ r&eacute;seau pour une imprimante, vous avez le choix entre
+ deux versions: l'une qui &eacute;mule un
+ gestionnaire d'impression (la version la plus on&eacute;reuse), ou
+ une autre qui ne vous permet que de lui envoyer des
+ donn&eacute;es comme s'il s'agissait d'un port s&eacute;rie ou
+ parall&egrave;le (c'est la version la moins ch&egrave;re). Cette
+ section vous indique comment utiliser cette seconde version moins
+ on&eacute;reuse. Pour la plus ch&egrave;re, lisez la section
+ pr&eacute;c&eacute;dente <link
+ linkend="printing-advanced-network-rm">Imprimantes
+ install&eacute;es sur des machines distantes</link>.</para>
+
+ <para>Le format du fichier <filename>/etc/printcap</filename> vous
+ permet de pr&eacute;ciser quelle interface s&eacute;rie ou
+ parall&egrave;le vous souhaitez utiliser, et (si vous employez
+ une interface s&eacute;rie) &agrave; quelle vitesse de
+ transmission, s'il faut employer le contr&ocirc;le de flux, les
+ temporisations pour les tabulations, la conversion des sauts de
+ lignes, et plus encore. Mais il n'existe aucun moyen de
+ pr&eacute;ciser une connexion &agrave; une imprimante qui
+ &eacute;coute sur un port TCP/IP ou un autre port r&eacute;seau.</para>
+
+ <para>Pour envoyer des donn&eacute;es &agrave; une imprimante mise
+ en r&eacute;seau, il vous faut d&eacute;velopper un programme
+ de communication qui puisse &ecirc;tre appel&eacute; par les
+ filtres textes et de conversion. Voici un exemple: la proc&eacute;dure
+ <command>netprint</command> r&eacute;cup&egrave;re toutes les donn&eacute;es sur
+ l'entr&eacute;e standard et les envoie &agrave; une imprimante
+ connect&eacute;e au r&eacute;seau. Nous pr&eacute;cisons le nom de machine
+ de l'imprimante dans le premier param&egrave;tre et le
+ num&eacute;ro de port auquel se connecter dans le
+ deuxi&egrave;me param&egrave;tre de <command>netprint</command>.
+ Notez qu'il ne g&egrave;re que la communication unidirectionnelle
+ (dans le sens &os; vers imprimante); de nombreuses imprimantes
+ r&eacute;seau supporte la communication bidirectionnelle, et
+ vous d&eacute;sirerez certainement en tirer parti (afin de
+ conna&icirc;tre le statut de l'imprimante, de comptabiliser
+ l'utilisation, etc.).</para>
+
+ <programlisting>#!/usr/bin/perl
+#
+# netprint - Filtre texte pour imprimante connect&eacute;e au r&eacute;seau
+# Fichier /usr/local/libexec/netprint
+#
+$#ARGV eq 1 || die "Usage: $0 &lt;printer-hostname&gt; &lt;port-number&gt;";
+
+$printer_host = $ARGV[0];
+$printer_port = $ARGV[1];
+
+require 'sys/socket.ph';
+
+($ignore, $ignore, $protocol) = getprotobyname('tcp');
+($ignore, $ignore, $ignore, $ignore, $address)
+ = gethostbyname($printer_host);
+
+$sockaddr = pack('S n a4 x8', &amp;AF_INET, $printer_port, $address);
+
+socket(PRINTER, &amp;PF_INET, &amp;SOCK_STREAM, $protocol)
+ || die "Can't create TCP/IP stream socket: $!";
+connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
+while (&lt;STDIN&gt;) { print PRINTER; }
+exit 0;</programlisting>
+
+ <para>Nous pouvons maintenant utiliser cette proc&eacute;dure avec
+ diff&eacute;rents filtres. Supposons que nous ayons une
+ imprimante Diablo 750-N connect&eacute;e au r&eacute;seau. Elle
+ re&ccedil;oit les donn&eacute;es &agrave; imprimer sur le port
+ 5100. Le nom de machine de l'imprimante est
+ <hostid>scrivener</hostid>. Voici le filtre texte
+ pour cette imprimante:</para>
+
+ <programlisting>#!/bin/sh
+#
+# diablo-if-net - Filtre texte pour l'imprimante Diablo `scrivener' &eacute;coutant
+# le port 5100. Fichier /usr/local/libexec/diablo-if-net
+#
+exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100</programlisting>
+ </sect3>
+ </sect2>
+
+ <sect2 id="printing-advanced-restricting">
+ <title>Restreindre l'utilisation de l'imprimante</title>
+
+ <indexterm>
+ <primary>imprimantes</primary>
+ <secondary>restreindre l'acc&egrave;s aux</secondary>
+ </indexterm>
+
+ <para>Cette section fournit des informations sur la restriction
+ de l'utilisation de l'imprimante. Le syst&egrave;me <application>LPD</application>
+ vous permet de contr&ocirc;ler quels utilisateurs peuvent
+ acc&eacute;der &agrave; une imprimante, tant localement
+ qu'&agrave; distance, s'il leur est autoris&eacute; d'imprimer
+ en plusieurs exemplaires, quelles sont les tailles maximales de leurs
+ travaux d'impression et des files d'impression.</para>
+
+ <sect3 id="printing-advanced-restricting-copies">
+ <title>Restreindre l'impression en plusieurs exemplaires</title>
+
+ <para>Le syst&egrave;me <application>LPD</application> facilite l'impression de
+ plusieurs copies d'un m&ecirc;me fichier par les
+ utilisateurs. Ils peuvent imprimer leur travail
+ avec <command>lpr -#5</command> (par exemple)
+ et obtenir cinq exemplaires de chaque fichier du travail
+ d'impression. Le fait de savoir s'il s'agit l&agrave; d'une
+ bonne id&eacute;e vous appartient.</para>
+
+ <para>Si vous estimez que les copies multiples provoquent
+ charge et usure inutiles pour vos imprimantes, vous
+ pouvez d&eacute;sactiver l'option <option>-#</option> de
+ &man.lpr.1; en ajoutant le param&egrave;tre <literal>sc</literal>
+ au fichier <filename>/etc/printcap</filename>. Lorsque des
+ utilisateurs soumettront un travail d'impression avec l'option
+ <option>-#</option>, ils obtiendront cet affichage:</para>
+
+ <screen>lpr: multiple copies are not allowed</screen>
+
+ <para>Notez que si vous avez mis en &oelig;uvre l'acc&egrave;s
+ &agrave; une imprimante distante (voir la section
+ <link linkend="printing-advanced-network-rm">Imprimantes
+ install&eacute;es sur des machines distantes</link>), il
+ faut que le param&egrave;tre <literal>sc</literal> soit
+ positionn&eacute; sur les <filename>/etc/printcap</filename>
+ distants &eacute;galement, sinon vos utilisateurs auront
+ toujours la possibilit&eacute; d'imprimer des copies multiples
+ en passant par une autre machine.</para>
+
+ <para>Voici un exemple. C'est le <filename>/etc/printcap</filename>
+ pour la machine <hostid>rose</hostid>. L'imprimante
+ <literal>rattan</literal> est plut&ocirc;t robuste, et
+ autorisera donc les copies multiples, par contre l'imprimante
+ laser <literal>bamboo</literal> est quant &agrave; elle plus
+ d&eacute;licate, nous interdiront donc les impressions multiples en ajoutant le
+ param&egrave;tre <literal>sc</literal>:</para>
+
+ <programlisting>#
+# /etc/printcap pour la machine rose - restreint les impressions en plusieurs exemplaires sur bamboo
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
+
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:</programlisting>
+
+ <para>Maintenant, il nous faut &eacute;galement ajouter le
+ param&egrave;tre <literal>sc</literal> dans le fichier
+ <filename>/etc/printcap</filename> de <hostid>orchid</hostid>
+ (et tant que nous y sommes, d&eacute;sactivons les copies multiples
+ pour l'imprimante <literal>teak</literal>):</para>
+
+ <programlisting>#
+# /etc/printcap pour la machine orchid - pas d'impression en
+# plusieurs exemplaires pour
+# l'imprimante locale teak ou l'imprimante distante bamboo
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
+ :if=/usr/local/libexec/ifhp:\
+ :vf=/usr/local/libexec/vfhp:\
+ :of=/usr/local/libexec/ofhp:
+
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
+
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:</programlisting>
+
+ <para>En recourant au param&egrave;tre <literal>sc</literal>,
+ nous emp&ecirc;chons l'utilisation de <command>lpr -#</command>,
+ mais cela n'emp&ecirc;che toujours pas les utilisateurs de
+ lancer &man.lpr.1; &agrave; plusieurs reprises, ou de soumettre
+ le m&ecirc;me fichier plusieurs fois en un seul travail, de
+ cette fa&ccedil;on:</para>
+
+ <screen>&prompt.user; <userinput>lpr <replaceable>forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign</replaceable></userinput></screen>
+
+ <para>Il existe plusieurs moyens de pr&eacute;venir ces abus (y
+ compris les ignorer) que vous &ecirc;tes libres d'essayer.</para>
+ </sect3>
+
+ <sect3 id="printing-advanced-restricting-access">
+ <title>Restreindre l'acc&egrave;s aux imprimantes</title>
+
+ <para>Vous pouvez contr&ocirc;ler qui a le droit d'imprimer sur
+ quelles imprimantes en utilisant le m&eacute;canisme des
+ groupes &unix; et le param&egrave;tre <literal>rg</literal> dans
+ <filename>/etc/printcap</filename>. Placez simplement les
+ utilisateurs &agrave; qui vous voulez donner l'acc&egrave;s
+ &agrave; une imprimante dans un groupe, et pr&eacute;cisez ce
+ groupe avec le param&egrave;tre <literal>rg</literal>.</para>
+
+ <para>Les utilisateurs n'appartenant pas au groupe
+ (<username>root</username> inclus) se verront gratifi&eacute;s d'un
+
+ <errorname>lpr: Not a member of the restricted group</errorname>
+
+ s'ils essaient d'imprimer avec l'imprimante
+ contr&ocirc;l&eacute;e.</para>
+
+ <para>De m&ecirc;me que pour le param&egrave;tre <literal>sc</literal>
+ (supprimer les exemplaires multiples), il vous faut activer <literal>rg</literal>
+ sur les machines distantes qui eux aussi ont
+ acc&egrave;s &agrave; vos imprimantes, si vous estimez que
+ c'est appropri&eacute; (voir la section <link
+ linkend="printing-advanced-network-rm">Imprimantes
+ install&eacute;es sur des machines distantes</link>).</para>
+
+ <para>Dans notre exemple, nous allons permettre l'acc&egrave;s
+ &agrave; <literal>rattan</literal> &agrave; quiconque, mais
+ seuls les membres du groupe <groupname>artists</groupname>
+ pourront utiliser <literal>bamboo</literal>. Voici l'habituel
+ <filename>/etc/printcap</filename> pour la machine
+ <hostid>rose</hostid>:</para>
+
+ <programlisting>#
+# /etc/printcap pour la machine rose - restreint au groupe pour bamboo
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
+
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:</programlisting>
+
+ <para>Ne nous pr&eacute;occupons pas de l'autre fichier
+ <filename>/etc/printcap</filename> (pour la machine
+ <hostid>orchid</hostid>). Bien entendu, n'importe qui sur
+ <hostid>orchid</hostid> peut imprimer avec
+ <literal>bamboo</literal>. Selon le cas, nous pourrons autoriser
+ que certains utilisateurs sur <hostid>orchid</hostid>, et
+ leur donner acc&egrave;s &agrave;
+ l'imprimante. Ou non.</para>
+
+ <note>
+ <para>Il ne peut exister qu'un seul groupe de restriction par
+ imprimante.</para>
+ </note>
+ </sect3>
+
+ <sect3 id="printing-advanced-restricting-sizes">
+ <title>Contr&ocirc;ler la taille des travaux d'impression</title>
+
+ <indexterm><primary>travaux d'impression</primary></indexterm>
+
+ <para>Si beaucoup de vos utilisateurs acc&egrave;dent aux
+ imprimantes, vous aurez sans doute besoin de fixer une
+ limite sup&eacute;rieure &agrave; la taille des fichiers qu'ils
+ peuvent soumettre &agrave; l'impression. Apr&egrave;s
+ tout, le syst&egrave;me de fichiers h&eacute;bergeant les
+ r&eacute;pertoires de file d'impression ne peut offrir
+ que l'espace libre dont il dispose, et vous devez
+ &eacute;galement vous assurer que de la place existe pour
+ les travaux d'impression des autres utilisateurs.</para>
+
+ <indexterm>
+ <primary>travaux d'impression</primary>
+ <secondary>contr&ocirc;le</secondary>
+ </indexterm>
+
+ <para><application>LPD</application> vous permet de fixer la
+ taille maximale en octets qu'un fichier d'un travail
+ d'impression peut atteindre avec le param&egrave;tre
+ <literal>mx</literal>. Les unit&eacute;s sont exprim&eacute;es
+ en blocs de <literal>BUFSIZ</literal>, valant 1024 octets. Si
+ vous donnez la valeur 0 &agrave; ce param&egrave;tre, la
+ taille ne sera pas du tout limit&eacute;e; en revanche, si
+ aucun param&egrave;tre <literal>mx</literal> n'est
+ d&eacute;fini, alors une limite par d&eacute;faut de
+ 1000 blocs sera utilis&eacute;e.</para>
+
+ <note>
+ <para>La limite s'applique aux <emphasis>fichiers</emphasis> dans
+ un travail d'impression, et <emphasis>non pas</emphasis> &agrave;
+ la taille totale du travail d'impression.</para>
+ </note>
+
+ <para><application>LPD</application> ne refusera pas un fichier
+ dont la taille exc&egrave;de la limite que vous fixez pour
+ une imprimante. Au lieu de cela, il placera les octets
+ du fichier dans la file jusqu'&agrave; ce que la limite soit
+ atteinte, puis imprimera. Les octets suppl&eacute;mentaires
+ seront ignor&eacute;s. S'il s'agit l&agrave; d'un comportement
+ appropri&eacute; est un choix qui vous appartient.</para>
+
+ <para>Ajoutons des limites pour nos imprimantes d'exemple,
+ <literal>rattan</literal> et <literal>bamboo</literal>. Puisque
+ les fichiers &postscript; des utilisateurs du groupe <groupname>artists</groupname> ont tendance &agrave;
+ &ecirc;tre volumineux, nous allons les limiter &agrave; cinq
+ m&eacute;gaoctets. Nous ne fixerons aucune limite pour l'imprimante
+ texte:</para>
+
+ <programlisting>#
+# /etc/printcap pour la machine rose
+#
+
+#
+# Pas de limite sur la taille des travaux:
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:mx#0:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
+
+#
+# Limite de cinq m&eacute;gaoctets:
+#
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:</programlisting>
+
+
+ <para>L&agrave; encore, les limites ne s'appliquent qu'aux
+ utilisateurs locaux. Si vous avez mis en place un acc&egrave;s
+ distant &agrave; vos imprimantes, les utilisateurs distants ne
+ seront pas contraints par ces limites. Il vous faudra
+ positionner le param&egrave;tre <literal>mx</literal> dans les
+ fichiers
+ <filename>/etc/printcap</filename> distants &eacute;galement. Lisez
+ la section <link linkend="printing-advanced-network-rm">Imprimantes
+ install&eacute;es sur des machines distantes</link> pour
+ obtenir plus d'informations sur l'impression &agrave;
+ distance.</para>
+
+ <para>Il existe une autre mani&egrave;re sp&eacute;cifique pour
+ limiter la taille des travaux d'impression sur les imprimantes
+ &agrave; distance; lisez la section <link
+ linkend="printing-advanced-restricting-remote">Restreindre les
+ impressions &agrave; distance</link>.</para>
+ </sect3>
+
+ <sect3 id="printing-advanced-restricting-remote">
+ <title>Restreindre les impressions &agrave; distance</title>
+
+ <para>Le gestionnaire d'impression
+ <application>LPD</application> propose plusieurs moyens de
+ restreindre les travaux d'impression soumis depuis des
+ machines distants:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>Restrictions en fonction des machines</term>
+
+ <listitem>
+ <para>Vous pouvez contr&ocirc;ler de quelles machines
+ distantes les requ&ecirc;tes seront accept&eacute;es par
+ un <application>LPD</application> local avec les fichiers
+ <filename>/etc/hosts.equiv</filename> et
+ <filename>/etc/hosts.lpd</filename>.
+ <application>LPD</application> v&eacute;rifie qu'une
+ requ&ecirc;te entrante provient d'une machine list&eacute;e
+ dans l'un de ces deux fichiers. Si ce n'est pas le cas,
+ <application>LPD</application> refuse la requ&ecirc;te.</para>
+
+ <para>Le format de ces fichiers est simple: un nom de machine
+ par ligne. Notez que <filename>/etc/hosts.equiv</filename>
+ est &eacute;galement utilis&eacute; par le protocole
+ &man.ruserok.3;, et qu'il a un impact sur des programmes
+ comme &man.rsh.1; et &man.rcp.1;, aussi soyez prudent.</para>
+
+ <para>Par exemple, voici le fichier
+ <filename>/etc/hosts.lpd</filename> pr&eacute;sent sur la
+ machine
+ <hostid>rose</hostid>:</para>
+
+ <programlisting>orchid
+violet
+madrigal.fishbaum.de</programlisting>
+
+ <para>Cela signifie que <hostid>rose</hostid> accepte les
+ requ&ecirc;tes provenant des machines
+ <hostid>orchid</hostid>, <hostid>violet</hostid> et
+ <hostid role="fqdn">madrigal.fishbaum.de</hostid>. Si une
+ quelconque autre machine tente d'acc&eacute;der au
+ <application>LPD</application> de <hostid>rose</hostid>,
+ le travail d'impression sera refus&eacute;.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Restrictions sur la taille</term>
+
+ <listitem>
+ <para>Vous pouvez contr&ocirc;ler combien d'espace doit
+ demeurer libre sur le syst&egrave;me de fichiers o&ugrave;
+ se trouve un r&eacute;pertoire de file d'impression.
+ Cr&eacute;ez un fichier nomm&eacute;
+ <filename>minfree</filename> dans le r&eacute;pertoire de
+ file d'impression pour l'imprimante locale.
+ Placez dans ce fichier un nombre repr&eacute;sentant combien
+ de blocs disques (de 512 octets) d'espace libre il
+ doit rester pour qu'un travail d'impression soit
+ accept&eacute;.</para>
+
+ <para>Cela vous permet de vous assurer que des utilisateurs
+ distants ne rempliront pas votre syst&egrave;me de
+ fichiers. Vous pouvez &eacute;galement vous en servir pour
+ accorder une certaine priorit&eacute; aux utilisateurs
+ locaux: ils pourront placer des travaux d'impression dans
+ la file bien apr&egrave;s que l'espace libre soit tomb&eacute;
+ sous le seuil indiqu&eacute; dans le fichier
+ <filename>minfree</filename>.</para>
+
+ <para>Par exemple, ajoutons un fichier
+ <filename>minfree</filename> pour l'imprimante
+ <literal>bamboo</literal>. Nous examinons
+ <filename>/etc/printcap</filename> pour trouver le
+ r&eacute;pertoire de file d'impression pour cette
+ imprimante; voici l'entr&eacute;e concernant
+ <literal>bamboo</literal>:</para>
+
+ <programlisting>bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:</programlisting>
+
+ <para>Le r&eacute;pertoire de file d'impression est
+ pr&eacute;cis&eacute; par le param&egrave;tre
+ <literal>sd</literal>. Nous placerons &agrave; trois
+ m&eacute;ga-octets (soit 6144 blocs disque) la limite
+ d'espace libre devant exister sur le syst&egrave;me de
+ fichiers pour que <application>LPD</application> accepte
+ les travaux d'impression distants:</para>
+
+ <screen>&prompt.root; <userinput>echo 6144 &gt; /var/spool/lpd/bamboo/minfree
+ </userinput></screen>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Restrictions sur l'utilisateur</term>
+
+ <listitem>
+ <para>Vous pouvez contr&ocirc;ler quels utilisateurs distants
+ ont le droit d'imprimer sur les imprimantes locales en
+ positionnant le param&egrave;tre <literal>rs</literal>
+ dans <filename>/etc/printcap</filename>. Lorsque
+ <literal>rs</literal> est pr&eacute;sent dans
+ l'entr&eacute;e d'une imprimante connect&eacute;e
+ localement, <application>LPD</application> acceptera les
+ travaux d'impressions de machines distantes
+ <emphasis>si</emphasis> l'utilisateur soumettant le travail
+ poss&egrave;de &eacute;galement un compte sous le
+ m&ecirc;me nom sur la machine locale. Sinon,
+ <application>LPD</application> refusera le travail
+ d'impression.</para>
+
+ <para>Ce param&egrave;tre se r&eacute;v&egrave;le
+ particuli&egrave;rement utile dans un environnement
+ o&ugrave; (par exemple) existent plusieurs services
+ qui partagent un r&eacute;seau, et que des utilisateurs
+ d&eacute;bordent les fronti&egrave;res de ces services. En
+ leur donnant des comptes sur vos syst&egrave;mes, vous
+ leur permettez d'utiliser vos imprimantes depuis les
+ syst&egrave;mes de leur propre service. Si vous
+ pr&eacute;f&eacute;rez les autoriser &agrave; n'utiliser
+ <emphasis>que</emphasis> vos imprimantes et pas les
+ autres ressources de l'ordinateur, alors vous pouvez leur
+ attribuer des comptes <quote>bloqu&eacute;s</quote>, sans
+ r&eacute;pertoire de connexion et avec un interpr&eacute;teur de
+ commandes
+ inutilisable comme <filename>/usr/bin/false</filename>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect3>
+ </sect2>
+
+ <sect2 id="printing-advanced-acct">
+ <title>Comptabiliser l'utilisation de l'imprimante</title>
+
+ <indexterm>
+ <primary>comptabiliser l'utilisation</primary>
+ <secondary>imprimante</secondary>
+ </indexterm>
+
+ <para>Donc vous voulez faire payer vos impressions. Et pourquoi pas?
+ Le papier et l'encre co&ucirc;tent de l'argent. Et puis, il y a les
+ co&ucirc;ts de maintenance&mdash;les imprimantes sont constitu&eacute;es
+ de pi&egrave;ces mobiles et ont tendance &agrave; tomber en panne.
+ Vous avez &eacute;tudi&eacute; vos imprimantes, vos modes
+ d'utilisation et factures de maintenance, et avez abouti &agrave;
+ un co&ucirc;t par page (ou par pied, par m&egrave;tre, ou
+ par ce que vous voulez). Maintenant, comment commencer &agrave;
+ comptabiliser les impressions, dans les faits?</para>
+
+ <para>Eh bien, la mauvaise nouvelle est que le
+ gestionnaire d'impression <application>LPD</application> ne vous aide
+ pas beaucoup dans ce domaine. La comptabilisation d&eacute;pend
+ fortement du type d'imprimante que vous employez, des formats
+ que vous imprimez et de <emphasis>vos</emphasis> besoins pour ce
+ qui est de faire payer l'utilisation de l'imprimante.</para>
+
+ <para>Pour mettre en &oelig;uvre la comptabilisation, il vous faut
+ modifier le filtre texte de l'imprimante (pour faire payer les
+ travaux d'impression de texte brut) et ses filtres de conversion
+ (pour faire payer les autres formats de fichiers), pour compter les
+ pages ou demander &agrave; l'imprimante combien elle en a
+ imprim&eacute;es. Vous ne pouvez pas vous en tirer en
+ utilisant le filtre de sortie simple, puisqu'il ne peut pas
+ g&eacute;rer la comptabilisation. Voir la section <link
+ linkend="printing-advanced-filter-intro">Les filtres</link>.</para>
+
+ <para>En g&eacute;n&eacute;ral, il existe deux fa&ccedil;ons de
+ proc&eacute;der &agrave; la comptabilisation:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>La comptabilisation <emphasis>p&eacute;riodique</emphasis>
+ est la plus habituelle, probablement parce que la plus
+ facile. Chaque fois que quelqu'un imprime un travail, le
+ filtre enregistre l'utilisateur, la machine et le nombre de
+ pages dans un fichier de comptabilisation. Tous les mois,
+ semestres, ann&eacute;es ou toute autre &eacute;ch&eacute;ance que vous
+ d&eacute;sirez, vous r&eacute;cup&eacute;rez les fichiers de
+ comptabilisation des diverses imprimantes, &eacute;tablissez
+ les pages imprim&eacute;es par les utilisateurs, et faites
+ payer l'utilisation. Purgez ensuite tous les fichiers de
+ comptabilisation, pour commencer &agrave; z&eacute;ro la nouvelle
+ p&eacute;riode.</para>
+ </listitem>
+
+ <listitem>
+ <para>La comptabilisation <emphasis>&agrave; la vol&eacute;e</emphasis>
+ est moins r&eacute;pandue, peut-&ecirc;tre parce qu'elle
+ s'av&egrave;re plus difficile. Cette m&eacute;thode laisse
+ les filtres s'occuper de taxer les utilisateurs pour les
+ impressions d&egrave;s qu'ils utilisent les imprimantes. Tout
+ comme les quotas disques, la comptabilisation est
+ imm&eacute;diate. Vous pouvez emp&ecirc;cher les utilisateurs
+ d'imprimer quand leur compte est dans le rouge, et pourriez
+ leur fournir un moyen de v&eacute;rifier et ajuster leurs
+ <quote>quotas d'impression</quote>. Cependant, cette
+ m&eacute;thode n&eacute;cessite la mise en oeuvre d'une base de
+ donn&eacute;es afin de tracer les utilisateurs et leurs
+ quotas.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Le gestionnaire d'impression
+ <application>LPD</application> g&egrave;re les deux m&eacute;thodes
+ facilement: puisque vous devez fournir les filtres (enfin, la
+ plupart du temps), vous devez &eacute;galement fournir le code
+ de comptabilisation. Mais il y a un bon c&ocirc;t&eacute;: vous
+ disposez d'une &eacute;norme flexibilit&eacute; dans vos
+ m&eacute;thodes de comptabilisation. Par exemple, vous avez le
+ choix entre les comptabilisations p&eacute;riodique et &agrave; la
+ vol&eacute;e. Vous avez le choix des informations &agrave; tracer: noms
+ d'utilisateurs, noms de machines, types des travaux
+ d'impression, pages imprim&eacute;es, surface de papier
+ utilis&eacute;e, dur&eacute;e d'impression du travail, etc. Et
+ vous le faites en modifiant les filtres afin d'enregistrer
+ ces informations.</para>
+
+ <sect3>
+ <title>Comptabilisation rapide et simplifi&eacute;e des impressions</title>
+
+ <para>Deux programmes sont livr&eacute;s avec &os; qui vous
+ permettent de mettre en place une comptabilisation
+ p&eacute;riodique simple imm&eacute;diatement. Il s'agit du
+ filtre texte <command>lpf</command>, d&eacute;taill&eacute; dans
+ la section <link linkend="printing-advanced-lpf">lpf: un
+ filtre texte</link>, et de &man.pac.8;, un programme qui
+ rassemble et fait le total des entr&eacute;es contenues dans des
+ fichiers de comptabilisation d'impressions.</para>
+
+ <para>Comme indiqu&eacute; dans la section sur les filtres (<link
+ linkend="printing-advanced-filters">Fonctionnement des filtres</link>),
+ <application>LPD</application> lance les filtres texte et de
+ conversion avec le nom du fichier de comptabilisation &agrave;
+ employer fourni en argument. Les filtres peuvent
+ utiliser ce param&egrave;tre pour savoir o&ugrave; &eacute;crire
+ un enregistrement de comptabilisation. Le nom de ce fichier provient du
+ param&egrave;tre <literal>af</literal> dans
+ <filename>/etc/printcap</filename>, et si le chemin donn&eacute;
+ n'est pas absolu, alors c'est un chemin d'acc&egrave;s relatif
+ au r&eacute;pertoire de file d'impression.</para>
+
+ <para><application>LPD</application> lance <command>lpf</command>
+ avec les param&egrave;tres de largeur et hauteur de page (qui
+ correspondent aux param&egrave;tres <literal>pw</literal> et
+ <literal>pl</literal>). Le filtre <command>lpf</command> les utilise
+ pour d&eacute;terminer combien de papier sera consomm&eacute;.
+ Apr&egrave;s avoir envoy&eacute; le fichier &agrave;
+ l'imprimante, il enregistre ensuite une entr&eacute;e dans le
+ fichier de comptabilisation. Les entr&eacute;es ressemblent
+ &agrave; ceci:</para>
+
+ <programlisting>2.00 rose:andy
+3.00 rose:kelly
+3.00 orchid:mary
+5.00 orchid:mary
+2.00 orchid:zhang</programlisting>
+
+ <para>Vous devriez utiliser un fichier de comptabilisation
+ s&eacute;par&eacute; pour chaque imprimante, <command>lpf</command>
+ ne disposant pas de m&eacute;canisme de verrouillage
+ des fichiers, deux <command>lpf</command> pourraient
+ corrompre leurs entr&eacute;es respectives s'ils essayaient
+ d'&eacute;crire dans le m&ecirc;me fichier en m&ecirc;me temps.
+ Une mani&egrave;re ais&eacute;e de s'assurer d'un fichier de
+ comptabilisation s&eacute;par&eacute; pour chaque imprimante est de
+ recourir au param&egrave;tre <literal>af=acct</literal> dans
+ <filename>/etc/printcap</filename>. D&egrave;s lors, un
+ fichier de comptabilisation, nomm&eacute;
+ <filename>acct</filename>, sera plac&eacute; dans le
+ r&eacute;pertoire de file d'impression de chaque imprimante.</para>
+
+ <para>Lorsque vous serez pr&ecirc;ts &agrave; faire payer les
+ utilisateurs pour leurs impressions, lancez le programme
+ &man.pac.8;. Placez-vous simplement dans le r&eacute;pertoire
+ de file d'impression de l'imprimante pour laquelle vous
+ voulez collecter les informations, et tapez
+ <command>pac</command>. Vous obtiendrez un r&eacute;capitulatif
+ en dollars ressemblant &agrave; ceci:</para>
+
+ <screen> Login pages/feet runs price
+orchid:kelly 5.00 1 $ 0.10
+orchid:mary 31.00 3 $ 0.62
+orchid:zhang 9.00 1 $ 0.18
+rose:andy 2.00 1 $ 0.04
+rose:kelly 177.00 104 $ 3.54
+rose:mary 87.00 32 $ 1.74
+rose:root 26.00 12 $ 0.52
+
+total 337.00 154 $ 6.74</screen>
+
+ <para>Voici les arguments attendus par &man.pac.8:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-P<replaceable>imprimante</replaceable>
+ </option></term>
+
+ <listitem>
+ <para>Pour quelle <replaceable>imprimante</replaceable>
+ effectuer un r&eacute;capitulatif. Cette option ne
+ fonctionne que si un chemin d'acc&egrave;s absolu est donn&eacute;
+ dans le param&egrave;tre <literal>af</literal> de
+ <filename>/etc/printcap</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-c</option></term>
+
+ <listitem>
+ <para>Trier selon le co&ucirc;t plut&ocirc;t
+ qu'alphab&eacute;tiquement par nom d'utilisateur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-m</option></term>
+
+ <listitem>
+ <para>Ignorer le nom de la machine dans les fichiers de
+ comptabilisation. Avec cette option, l'utilisateur
+ <username>smith</username> sur la machine
+ <hostid>alpha</hostid> est le m&ecirc;me que l'utilisateur
+ <username>smith</username> sur la machine
+ <hostid>gamma</hostid>. Sans elle, ils repr&eacute;sentent
+ des utilisateurs distincts.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-p<replaceable>prix</replaceable></option></term>
+
+ <listitem>
+ <para>Calculer le co&ucirc;t en comptant un
+ <replaceable>prix</replaceable> en dollars par page ou par pied
+ au lieu du prix indiqu&eacute; par le param&egrave;tre
+ <literal>pc</literal> dans <filename>/etc/printcap</filename>,
+ ou deux cents (la valeur par d&eacute;faut). Vous pouvez
+ pr&eacute;ciser le <replaceable>prix</replaceable> en nombre
+ &agrave; virgule flottante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-r</option></term>
+
+ <listitem>
+ <para>Inverser l'ordre du tri.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-s</option></term>
+
+ <listitem>
+ <para>Cr&eacute;er un fichier de rapport et
+ tronquer le fichier de comptabilisation.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>nom</replaceable>
+ <replaceable>&hellip;</replaceable></term>
+
+ <listitem>
+ <para>N'imprimer des statistiques que pour les utilisateurs
+ dont les <replaceable>nom</replaceable>s sont
+ donn&eacute;s.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Dans le r&eacute;capitulatif produit par d&eacute;faut par
+ &man.pac.8;, vous pouvez lire le nombre de pages imprim&eacute;es
+ par chaque utilisateur depuis les diff&eacute;rentes machines. Si, sur votre
+ site, la machine n'a pas d'importance (parce que les utilisateurs
+ peuvent utiliser n'importe quelle machine), lancez
+ <command>pac -m</command>, afin de produire le r&eacute;capitulatif
+ ci-dessous:</para>
+
+ <screen> Login pages/feet runs price
+andy 2.00 1 $ 0.04
+kelly 182.00 105 $ 3.64
+mary 118.00 35 $ 2.36
+root 26.00 12 $ 0.52
+zhang 9.00 1 $ 0.18
+
+total 337.00 154 $ 6.74</screen>
+
+ <para>Afin de calculer le montant d&ucirc; en dollars, &man.pac.8;
+ utilise le param&egrave;tre <literal>pc</literal> de
+ <filename>/etc/printcap</filename> (200 par d&eacute;faut,
+ c'est &agrave; dire 2 cents par page). Pr&eacute;cisez avec
+ ce param&egrave;tre le prix par page ou par pied, exprim&eacute;
+ en centi&egrave;mes de cents, que vous voulez imputer aux
+ impressions. Vous pouvez sp&eacute;cifier cette valeur lorsque vous
+ lancez &man.pac.8; avec l'option <option>-p</option>. Cependant,
+ avec cette option, les unit&eacute;s sont exprim&eacute;es en
+ dollars, et non en centi&egrave;mes de cents. Par exemple,</para>
+
+ <screen>&prompt.root; <userinput>pac -p1.50</userinput></screen>
+
+ <para>fait en sorte que chaque page co&ucirc;te un dollar et cinquante
+ cents. Vous pouvez vraiment faire des b&eacute;n&eacute;fices
+ en utilisant cette option.</para>
+
+ <para>Enfin, lancer <command>pac -s</command> enregistrera les
+ informations du r&eacute;capitulatif dans un fichier, dont le
+ nom sera le m&ecirc;me que le fichier de comptabilisation de
+ l'imprimante mais avec le suffixe <literal>_sum</literal>. Il
+ proc&egrave;de alors &agrave; la troncature du fichier de
+ comptabilisation. Lorsque vous ex&eacute;cutez &man.pac.8;
+ &agrave; nouveau, il relit le fichier r&eacute;capitulatif pour
+ &eacute;tablir les totaux de d&eacute;part, puis ajoute les
+ informations du fichier de comptabilisation normal.</para>
+ </sect3>
+
+ <sect3>
+ <title>Comment compter les pages imprim&eacute;es?</title>
+
+ <para>Afin de r&eacute;aliser une comptabilisation pr&eacute;cise et cela
+ m&ecirc;me &agrave; distance, vous devez pouvoir d&eacute;terminer
+ combien un travail d'impression consomme de papier. C'est le
+ probl&egrave;me principal de la comptabilisation des
+ impressions.</para>
+
+ <para>Pour du texte brut, ce probl&egrave;me n'est pas
+ compliqu&eacute; &agrave; r&eacute;soudre: vous comptez combien
+ un travail d'impression comporte de lignes et comparez avec
+ le nombre de lignes par page que g&egrave;re votre imprimante.
+ N'oubliez pas de tenir compte des retours arri&egrave;re
+ dans le fichier, qui superposent les lignes, ou des longues
+ lignes qui s'&eacute;tendent sur une ou plusieurs lignes
+ physiques suppl&eacute;mentaires.</para>
+
+ <para>Le filtre texte <command>lpf</command> (pr&eacute;sent&eacute;
+ &agrave; la section <link linkend="printing-advanced-lpf">lpf: un
+ filtre texte</link>) prend ces &eacute;l&eacute;ments en
+ consid&eacute;ration lorsqu'il effectue la comptabilisation. Si
+ vous &eacute;crivez un filtre texte qui doit effectuer une
+ comptabilisation, vous pouvez vous inspirer du code source de
+ <command>lpf</command>.</para>
+
+ <para>Mais comment g&eacute;rer les autres formats?</para>
+
+ <para>Eh bien, pour la conversion DVI-vers-LaserJet ou
+ DVI-vers-&postscript;, vous pouvez faire analyser les messages de sortie
+ de <command>dvilj</command> ou <command>dvips</command> par
+ votre filtre et regarder combien de pages ont &eacute;t&eacute;
+ converties. Vous devriez pouvoir proc&eacute;der de
+ mani&egrave;re identique avec d'autres formats de
+ fichiers et programmes de conversion.</para>
+
+ <para>Mais ces m&eacute;thodes connaissent un d&eacute;faut: il se
+ peut que l'imprimante n'imprime pas toutes ces pages. Par exemple,
+ un bourrage peut se produire, l'imprimante peut arriver &agrave; cours d'encre, ou
+ exploser &mdash; et l'utilisateur serait tout de m&ecirc;me
+ d&eacute;bit&eacute;.</para>
+
+ <para>Alors, que pouvez-vous faire?</para>
+
+ <para>Il n'existe qu'une seule m&eacute;thode
+ <emphasis>s&ucirc;re</emphasis> pour proc&eacute;der &agrave; une
+ comptabilisation <emphasis>pr&eacute;cise</emphasis>. Prenez
+ une imprimante qui sache dire combien de papier elle utilise, et
+ reliez-la par un c&acirc;ble s&eacute;rie ou une connection
+ r&eacute;seau. Presque toutes les imprimantes &postscript;
+ g&egrave;rent cela. D'autres types et mod&egrave;les
+ &eacute;galement (les imprimantes laser r&eacute;seau Imagen,
+ par exemple). Modifiez les filtres pour ces imprimantes afin
+ d'obtenir la consommation de pages apr&egrave;s chaque travail
+ d'impression et faites en sorte qu'elles enregistrent des
+ informations de comptabilisation bas&eacute;es sur cette
+ <emphasis>seule</emphasis> valeur. Nul besoin de compter
+ les lignes ou d'une analyse de fichier susceptible d'&ecirc;tre
+ erron&eacute;e.</para>
+
+ <para>Bien entendu, vous pouvez toujours &ecirc;tre
+ g&eacute;n&eacute;reux et rendre toutes les impressions
+ gratuites.</para>
</sect3>
</sect2>
</sect1>
@@ -1765,6 +4588,52 @@ $%&amp;'()*+,-./01234567
<sect1 id="printing-using">
<title>Using Printers ** Traduction en Cours **</title>
<para></para>
+
+ <sect2 id="printing-lpr">
+ <title>Printing Jobs</title>
+
+ <para></para>
+ </sect2>
+
+ <sect2 id="printing-lpq">
+ <title>Checking Jobs</title>
+
+ <para></para>
+ </sect2>
+
+ <sect2 id="printing-lprm">
+ <title>Removing Jobs</title>
+
+ <para></para>
+ </sect2>
+
+ <sect2 id="printing-lpr-options">
+ <title>Beyond Plain Text: Printing Options</title>
+
+ <sect3 id="printing-lpr-options-format">
+ <title>Formatting and Conversion Options</title>
+
+ <para></para>
+ </sect3>
+
+ <sect3 id="printing-lpr-options-job-handling">
+ <title>Job Handling Options</title>
+
+ <para></para>
+ </sect3>
+
+ <sect3 id="printing-lpr-options-misc">
+ <title>Header Page Options</title>
+
+ <para></para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="printing-lpc">
+ <title>Administering Printers</title>
+
+ <para></para>
+ </sect2>
</sect1>
<sect1 id="printing-lpd-alternatives">