aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemko Lodder <remko@FreeBSD.org>2005-12-18 20:46:54 +0000
committerRemko Lodder <remko@FreeBSD.org>2005-12-18 20:46:54 +0000
commitca761b969e158b47460e2a69e580af9bafdbca41 (patch)
tree7939d551ab93f028e436c230140e0a8413a690b7
parentc98e25e6161ed4e602043bd1584b212ef3a30b82 (diff)
Notes
-rw-r--r--nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml26
-rw-r--r--nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml9
-rw-r--r--nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml107
-rw-r--r--nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml10
-rw-r--r--nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml120
-rw-r--r--nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml81
-rw-r--r--nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml4
-rw-r--r--nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml80
-rw-r--r--nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml5286
-rw-r--r--nl_NL.ISO8859-1/books/handbook/security/chapter.sgml18
-rw-r--r--nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml13
11 files changed, 5445 insertions, 309 deletions
diff --git a/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
index 1c69663241..613dd7f299 100644
--- a/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml,v 1.42 2005/09/23 17:09:55 siebrand Exp $
- Gebaseerd op: 1.219
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml,v 1.43 2005/12/18 11:59:01 siebrand Exp $
+ Gebaseerd op: 1.220
-->
<chapter id="cutting-edge">
@@ -755,8 +755,9 @@
daar redelijke waardes in te vullen voor een systeem.</para>
<para>Een typische gebruiker wil waarschijnlijk de regels
- <makevar>CFLAGS</makevar> en <makevar>NOPROFILE</makevar>
- uit <filename>/usr/share/examples/etc/make.conf</filename>
+ <makevar>CFLAGS</makevar> en <makevar>NO_PROFILE</makevar> (of
+ <makevar>NOPROFILE</makevar> in &os;&nbsp;5.X en ouder) uit
+ <filename>/usr/share/examples/etc/make.conf</filename>
(<filename>/etc/defaults/make.conf</filename> in &os;&nbsp;4.X)
kopieren naar <filename>/etc/make.conf</filename> en het
commentaar verwijderen.</para>
@@ -978,14 +979,14 @@ Script done, &hellip;</screen>
<filename>/etc/make.conf</filename>. Deze optie biedt een
alternatief om deze opties in te stellen.</para>
- <screen>&prompt.root; <userinput>make -DNOPROFILE <replaceable>doel</replaceable></userinput></screen>
+ <screen>&prompt.root; <userinput>make -DNO_PROFILE <replaceable>doel</replaceable></userinput></screen>
<para>Het bovenstaande commando is een andere manier om aan te
geven dat geprofileerde bibliotheken niet gebouwd moeten
worden en correspondeert met de onderstaande regel in
<filename>/etc/make.conf</filename>:</para>
- <programlisting>NOPROFILE= true # Avoid compiling profiled libraries</programlisting>
+ <programlisting>NO_PROFILE= true # Avoid compiling profiled libraries</programlisting>
<para><replaceable>doel</replaceable> geeft &man.make.1; aan
wat er gedaan moet worden. Elke
@@ -1183,12 +1184,12 @@ Script done, &hellip;</screen>
<para>Als bijvoorbeeld het volgende commando is
uitgevoerd:</para>
- <screen>&prompt.root; <userinput>make -DNOPROFILE buildworld</userinput></screen>
+ <screen>&prompt.root; <userinput>make -DNO_PROFILE buildworld</userinput></screen>
<para>Dan moet het resultaat ge&iuml;nstalleerd worden
met:</para>
- <screen>&prompt.root; <userinput>make -DNOPROFILE installworld</userinput></screen>
+ <screen>&prompt.root; <userinput>make -DNO_PROFILE installworld</userinput></screen>
<para>Anders wordt geprobeerd geprofileerde bibliotheken te
installeren die niet gebouwd zijn tijdens de fase
@@ -1731,7 +1732,12 @@ Script done, &hellip;</screen>
<screen><emphasis>&hellip; fix the problem &hellip;</emphasis>
&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make -DNOCLEAN all</userinput></screen>
+&prompt.root; <userinput>make -DNO_CLEAN all</userinput></screen>
+
+ <note>
+ <para>Gebruik in &os;&nbsp;5.X en ouder
+ <makevar>-DNOCLEAN</makevar>.</para>
+ </note>
<para>Dit maakt het werk van de vorige <command>make
buildworld</command> niet ongedaan.</para>
@@ -1777,7 +1783,7 @@ Building everything..
<listitem>
<para>Zet profiling uit (voeg
- <quote>NOPROFILE=true</quote> toe aan
+ <quote>NO_PROFILE=true</quote> toe aan
<filename>/etc/make.conf</filename>). Het is zeer
waarschijnlijk niet nodig;</para>
</listitem>
diff --git a/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml
index 322864c1c9..afb2ff9b41 100644
--- a/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml,v 1.33 2005/11/20 22:30:12 siebrand Exp $
- Gebaseerd op: 1.62
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml,v 1.34 2005/12/18 11:59:01 siebrand Exp $
+ Gebaseerd op: 1.63
-->
<chapter id="desktop">
@@ -356,10 +356,7 @@
<para><application>Opera</application> is een zeer snelle,
complete browser en voldoet aan standaarden. Hij komt in twee
smaken: een &os; versie en een versie die draait onder &linux;
- emulatie. Voor elk besturingssysteem is er een gratis versie
- van de browser (adware) en een reclameloze versie die gekocht
- kan worden op de <ulink
- url="http://www.opera.com/">Opera website</ulink>.</para>
+ emulatie.</para>
<para>De &os; package versie van <application>Opera</application>
wordt zo ge&iuml;nstalleerd:</para>
diff --git a/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml
index 0882ba0004..ae57598dc5 100644
--- a/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml,v 1.30 2005/08/06 22:18:18 siebrand Exp $
- Gebaseerd op: 1.241
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml,v 1.31 2005/12/18 11:59:02 siebrand Exp $
+ Gebaseerd op: 1.242
-->
<chapter id="disks">
@@ -2579,6 +2579,109 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
</sect2>
</sect1>
+ <sect1 id="backup-strategies">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Lowell</firstname>
+ <surname>Gilbert</surname>
+ <contrib>Oorspronkelijk werk van </contrib>
+ </author>
+ </authorgroup>
+ <!-- 3 Dec 2005 -->
+ </sect1info>
+
+ <title>Back-up strategie&euml;n</title>
+
+ <para>Het eerste wat nodig is voor het ontwepken van een
+ back-upplan, is er voor te zorgen dat de volgende mogelijke
+ problemen worden ondervangen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Schijffalen</para>
+ </listitem>
+
+ <listitem>
+ <para>Per ongeluk verwijderde bestanden</para>
+ </listitem>
+
+ <listitem>
+ <para>Willekeurige bestandscorruptie</para>
+ </listitem>
+
+ <listitem>
+ <para>Complete machinevernietiging (door bijvoorbeeld brand),
+ inclusief de vernietiging van lokaal beschikbare
+ back-ups.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Het is goed mogelijk dat een aantal systemen het best
+ geholpen zijn door voor al deze problemen een andere techniek te
+ gebruiken. Behalve voor volledig persoonlijke systemen met
+ niet echt belangrijke gegevens, is het zelfs onwaarschijnlijk dat
+ &eacute;&eacute;n techniek alle mogelijke problemen kan
+ afvangen.</para>
+
+ <para>Een aantal technieken in de gereedschapskist zijn:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Archiveren van een heel systeem op een back-up die niet
+ lokaal wordt bewaard. Dit biedt bescherming tegen alle
+ hierboven beschreven problemen, maar het is langzaam en
+ onhandig om er een restore van te maken. Het is mogelijk om
+ lokaal een kopie aan te houden en/of online, maar dan zijn er
+ nog steeds onhandigheden, in het bijzonder voor restores voor
+ gebruikers met beperkte rechten.</para>
+ </listitem>
+
+ <listitem>
+ <para>Snapshots van bestandssystemen. Dit werkt eigenlijk
+ alleen in het geval bestanden per ongelijk verwijderd worden,
+ maar het kan in dat geval <emphasis>erg</emphasis> handig
+ zijn en het werkt snel en eenvoudig.</para>
+ </listitem>
+
+ <listitem>
+ <para>Een kopie maken van hele bestandssystemen en/of schijven
+ (bijvoorbeeld een periodieke rsync van een hele machine).
+ Dit is in het algemeen het meest bruikbaar in netwerken met
+ specifieke eisen. Voor algemene bescherming tegen het falen
+ van een schijf, is het meestal minder geschikt dan
+ <acronym>RAID</acronym>. Voor het herstellen van per ongeluk
+ verwijderde bestanden is het vergelijkbaar aan
+ <acronym>UFS</acronym> snapshots, maar dat hangt af van
+ persoonlijke voorkeuren.</para>
+ </listitem>
+
+ <listitem>
+ <para><acronym>RAID</acronym>. Minimaliseert of voorkomt
+ downtijd als een schijf faalt. Dit ten koste van het vaker
+ hebben van schijven die falen (omdat er meer van zijn), maar
+ wel met een veel lagere urgentie.</para>
+ </listitem>
+
+ <listitem>
+ <para>Controleren van fingerprints van bestanden. Het
+ hulpprogramma &man.mtree.8; kan hier bij helpen. Hoewel dit
+ geen back-uptechniek is, zorgt het er wel voor dat kan worden
+ opgemerkt wanneer back-ups geraadpleegd moeten worden. Dit
+ is in het bijzonder belangrijk voor offline back-ups en de
+ fingerprints horen periodiek gecontroleerd te worden.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Het is makkelijk om met nog meer technieken op de proppen te
+ komen, waaronder veel variaties op de bovengenoemde. Bijzondere
+ eisen leiden vaak tot bijzondere oplossingen. Het back-uppen van
+ een draaiende database vereist bijvoorbeeld een methode die
+ toegespitst is op de gebruikte database software als tussenstap.
+ Het is van groot belang om te onderkennen tegen welke gevaren er
+ bescherming dient te zijn en hoe daarmee om te gaan.</para>
+ </sect1>
+
<sect1 id="backup-basics">
<title>Back-upbeginselen</title>
diff --git a/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml
index 69dc391d42..606265d0ca 100644
--- a/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml,v 1.9 2005/11/20 22:30:13 siebrand Exp $
- Gebaseerd op: 1.12
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml,v 1.11 2005/12/18 11:59:02 siebrand Exp $
+ Gebaseerd op: 1.16
-->
<chapter id="GEOM">
@@ -169,7 +169,7 @@
<para>Zorg ervoor dat er een mountpunt beschikbaar is. Als dit
volume een rootpartitie wordt, gebruikt dan tijdelijk een
ander mountpunt zoals <filename
- role="directory">/mnt</filename>.</para>
+ role="directory">/mnt</filename>:</para>
<screen>&prompt.root; <userinput>mkdir /mnt</userinput></screen>
</step>
@@ -334,7 +334,7 @@ Done.</screen>
op het mountpunt <filename
role="directory">/mnt</filename>:</para>
- <screen>&prompt.root <userinput>mount /dev/mirror/gm0s1a /mnt</userinput></screen>
+ <screen>&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput></screen>
<para>Verplaats nu alle gegevens van de bootschijf naar dit nieuwe
bestandssysteem. In dit voorbeeld worden &man.dump.8; en
@@ -383,7 +383,7 @@ Done.</screen>
</note>
<para>Voeg de volgende regel toe aan de nieuwe
- <filename>/boot/loader.conf:</filename></para>
+ <filename>/boot/loader.conf</filename>:</para>
<screen>&prompt.root; <userinput>echo 'geom_mirror_load="YES"' &gt;&gt; /mnt/boot/loader.conf</userinput></screen>
diff --git a/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml
index a6a4749ca6..d93a934d5c 100644
--- a/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml,v 1.38 2005/11/26 14:31:31 siebrand Exp $
- Gebaseerd op: 1.391
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml,v 1.41 2005/12/18 11:59:02 siebrand Exp $
+ Gebaseerd op: 1.398
Vertaald door: Siebrand Mazeland
-->
@@ -491,15 +491,12 @@ Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known host
</example>
<example>
- <title>Iets uitchecken uit -CURRENT (&man.ls.1;) en dat weer
- verwijderen:</title>
+ <title>Iets uitchecken uit -CURRENT (&man.ls.1;):</title>
- <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput>
+ <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>.
-&prompt.user; <userinput>cvs co ls</userinput>
-&prompt.user; <userinput>cvs release -d ls</userinput>
-&prompt.user; <userinput>cvs logout</userinput></screen>
+&prompt.user; <userinput>cvs co ls</userinput></screen>
</example>
<example>
@@ -514,39 +511,34 @@ Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known host
</example>
<example>
- <title>De versie van &man.ls.1; in de 3.X-STABLE tak
+ <title>De versie van &man.ls.1; in de 6-STABLE tak
uitchecken:</title>
- <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput>
+ <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>.
-&prompt.user; <userinput>cvs co -rRELENG_3 ls</userinput>
-&prompt.user; <userinput>cvs release -d ls</userinput>
-&prompt.user; <userinput>cvs logout</userinput></screen>
+&prompt.user; <userinput>cvs co -rRELENG_6 ls</userinput></screen>
</example>
<example>
<title>Een lijst wijzigingen maken (als unified diffs) voor
&man.ls.1;</title>
- <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput>
+ <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>.
-&prompt.user; <userinput>cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls</userinput>
-&prompt.user; <userinput>cvs logout</userinput></screen>
+&prompt.user; <userinput>cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls</userinput></screen>
</example>
<example>
<title>Uitzoeken welke modulenamen gebruikt kunnen
worden:</title>
- <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput>
+ <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>.
&prompt.user; <userinput>cvs co modules</userinput>
-&prompt.user; <userinput>more modules/modules</userinput>
-&prompt.user; <userinput>cvs release -d modules</userinput>
-&prompt.user; <userinput>cvs logout</userinput></screen>
+&prompt.user; <userinput>more modules/modules</userinput></screen>
</example>
</sect2>
@@ -2476,18 +2468,17 @@ doc/zh_*</screen>
HTTP.</para>
<para>Net als <application>CVSup</application> gebruikt
- <application>portsnap</application> een
+ <application>Portsnap</application> een
<emphasis>pull</emphasis>-model voor het bijwerken: de
voorverpakte en getekende portsstructuren worden op een
webserver geplaatst die passief wacht op verzoeken om bestanden
door clients. Gebruikers dienen ofwel handmatig
- <application>portsnap</application> te draaien om de updates op
- te halen ofwel een taak in <command>cron</command> in te
- stellen om de updates regelmatig automatisch op te laten
- halen.</para>
+ &man.portsnap.8; te draaien om de updates op te halen ofwel een
+ taak in &man.cron.8; in te stellen om de updates regelmatig
+ automatisch op te laten halen.</para>
<para>Om technische redenen werkt
- <application>portsnap</application> de portsstructuur in
+ <application>Portsnap</application> de portsstructuur in
<filename>/usr/ports/</filename> niet direct
<quote>live</quote> bij. In plaats daarvan werkt het met een
gecomprimeerde kopie van de portsstructuur die standaard in
@@ -2496,7 +2487,7 @@ doc/zh_*</screen>
portsstructuur bij te werken.</para>
<note>
- <para>Als <application>portsnap</application> is
+ <para>Als <application>Portsnap</application> is
ge&iuml;nstalleerd uit de &os; Portscollectie, dan is de
standaardlocatie voor het gecomprimeerde snapshot
<filename>/usr/local/portsnap/</filename> in plaats van
@@ -2508,7 +2499,7 @@ doc/zh_*</screen>
<title>Installatie</title>
<para>In &os;&nbsp;6.0 en nieuwere versies, is
- <application>portsnap</application> onderdeel van het &os;
+ <application>Portsnap</application> onderdeel van het &os;
basissysteem. In oudere versies van &os; kan het
ge&iuml;nstalleerd worden met de port <filename
role="package">sysutils/portsnap</filename>.</para>
@@ -2524,7 +2515,7 @@ doc/zh_*</screen>
staan in de handboekpagina van &man.portsnap.conf.5;.</para>
<note>
- <para>Als <application>portsnap</application> is
+ <para>Als <application>Portsnap</application> is
ge&iuml;nstalleerd uit de Portscollectie, dan wordt als
instellingenbestand
<filename>/usr/local/etc/portsnap.conf</filename> gebruikt in
@@ -2543,12 +2534,11 @@ doc/zh_*</screen>
<title><application>Portsnap</application> voor de eerste keer
draaien</title>
- <para>De eerste keer dat <application>portsnap</application>
- wordt gedraaid, moet het een gecomprimeerde snapshot van de
- complete portsstructuur downloaden naar
- <filename>/var/db/portsnap/</filename> (of
+ <para>De eerste keer dat &man.portsnap.8; wordt gedraaid, moet
+ het een gecomprimeerde snapshot van de complete portsstructuur
+ downloaden naar <filename>/var/db/portsnap/</filename> (of
<filename>/usr/local/portsnap/</filename> als
- <application>portsnap</application> ge&iuml;nstalleerd is uit
+ <application>Portsnap</application> ge&iuml;nstalleerd is uit
de Portscollectie). Dit is een download van ongeveer
36&nbsp;MB.</para>
@@ -2560,10 +2550,18 @@ doc/zh_*</screen>
gebeuren, zelfs als er al een portsstructuur bestaat in die map
(bijvoorbeeld door gebruik van
<application>CVSup</application>), omdat hiermee een
- uitgangspunt wordt gemaakt dat
- <application>portsnap</application> gebruikt om later te
- bepalen welke delen van de portsstructuur bijgewerkt moeten
- worden.</para>
+ uitgangspunt wordt gemaakt dat <command>portsnap</command>
+ gebruikt om later te bepalen welke delen van de portsstructuur
+ bijgewerkt moeten worden.</para>
+
+ <note>
+ <para>In de standaard installatie wordt <filename
+ role="directory">/usr/ports</filename> niet aangemaakt.
+ Maak deze map aan alvorens
+ <application>portsnap</application> te gebruiken:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /usr/ports</userinput></screen>
+ </note>
<screen>&prompt.root; <userinput>portsnap extract</userinput></screen>
</sect2>
@@ -2578,17 +2576,15 @@ doc/zh_*</screen>
gecomprimeerde updates voor het snapshot
(<emphasis>fetch</emphasis>) en die gebruiken om de live
portsstructuur bij te werken (<emphasis>update</emphasis>).
- Deze twee stappen kunnen door
- <application>portsnap</application> in een enkel commando
- worden uitgevoerd:</para>
+ Deze twee stappen kunnen door <command>portsnap</command> in
+ een enkel commando worden uitgevoerd:</para>
<screen>&prompt.root; <userinput>portsnap fetch update</userinput></screen>
<note>
- <para>Sommige oudere versies van
- <application>portsnap</application> ondersteunen deze
- syntaxis niet. Als het bovenstaande niet werkt, probeer
- dan het volgende:</para>
+ <para>Sommige oudere versies van <command>portsnap</command>
+ ondersteunen deze syntaxis niet. Als het bovenstaande niet
+ werkt, probeer dan het volgende:</para>
<screen>&prompt.root; <userinput>portsnap fetch</userinput>
&prompt.root; <userinput>portsnap update</userinput></screen>
@@ -2599,11 +2595,11 @@ doc/zh_*</screen>
<title>Portsnap draaien vanuit cron</title>
<para>Om het probleem dat hordes gebruikers inhameren op de
- servers voor <application>portsnap</application> te voorkomen,
+ servers voor <application>Portsnap</application> te voorkomen,
draait <userinput>portsnap fetch</userinput> niet vanuit een
- <command>cron</command>-opdracht. In plaats daarvan is het
- commando <userinput>portsnap cron</userinput> beschikbaar, dat
- een willekeurige periode wacht, tot 3600 seconden, voordat de
+ &man.cron.8;-opdracht. In plaats daarvan is het commando
+ <command>portsnap cron</command> beschikbaar, dat een
+ willekeurige periode wacht, tot 3600 seconden, voordat de
updates worden opgehaald.</para>
<para>Daarnaast wordt het sterk aangeraden om
@@ -2613,8 +2609,8 @@ doc/zh_*</screen>
waarop een port wordt gebouwd of ge&iuml;nstalleerd. Het is
wel veilig om de INDEX-bestanden voor de ports bij te werken en
dit kan gedaan worden door de vlag <option>-I</option> mee te
- geven aan <application>portsnap</application>. Natuurlijk is
- het op een later moment nodig om, als <command>portsnap -I
+ geven aan <command>portsnap</command>. Natuurlijk is het op
+ een later moment nodig om, als <command>portsnap -I
update</command> draait vanuit de <command>cron</command>,
<command>portsnap update</command> te draaien zonder de vlag
<option>-I</option> om de rest van de structuur bij te
@@ -2622,26 +2618,26 @@ doc/zh_*</screen>
<para>Door de volgende regel toe te voegen aan
<filename>/etc/crontab</filename> werkt
- <application>portsnap</application> zijn gecomprimeerde
+ <application>Portsnap</application> zijn gecomprimeerde
snapshot bij, worden de INDEX-bestanden in
<filename>/usr/ports/</filename> bijgewerkt en wordt er een
e-mail verzonden als er ports zijn die bijgewerkt moeten
worden:</para>
- <screen>0 3 * * * root portsnap -I cron update && pkg_version -vIL=</screen>
+ <programlisting>0 3 * * * root portsnap -I cron update && pkg_version -vIL=</programlisting>
<note>
<para>Als een systeemklok niet is ingesteld op de lokale
- tijdzone, vervang <userinput>3</userinput> dan door een
+ tijdzone, vervang <literal>3</literal> dan door een
willekeurige waarde tussen 0 en 23 om de belasting op de
- servers voor <application>portsnap</application> zo
+ servers voor <application>Portsnap</application> zo
evenwichtig mogelijk te verdelen.</para>
</note>
<note>
<para>Sommige oudere versie van
- <application>portsnap</application> bieden geen ondersteuning
- voor het opgeven van meerdere commando's, zoals bijvoorbeeld
+ <command>portsnap</command> bieden geen ondersteuning voor
+ het opgeven van meerdere commando's, zoals bijvoorbeeld
<literal>cron update</literal>, in dezelde aanroep van
<command>portsnap</command>. Als de regel hierboven faalt,
probeer <command>portsnap -I cron update</command> dan te
@@ -2705,6 +2701,16 @@ doc/zh_*</screen>
</varlistentry>
<varlistentry>
+ <term>RELENG_6_0</term>
+
+ <listitem>
+ <para>De releasetak voor &os;-6.0, alleen gebruikt voor
+ beveiligingswaarschuwingen en andere kritische
+ aanpassingen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>RELENG_5</term>
<listitem>
diff --git a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml
index f12d90353b..cd591e192c 100644
--- a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml,v 1.26 2005/10/04 21:04:26 siebrand Exp $
- Gebaseerd op: 1.111
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml,v 1.27 2005/12/10 23:40:57 siebrand Exp $
+ Gebaseerd op: 1.113
-->
<chapter id="multimedia">
@@ -869,18 +869,17 @@ link acd0 rdvd</programlisting>
</indexterm>
<para>Een aantal van de hier besproken ports hebben specifieke
- kernelopties nodig om correct gebouwd te worden. Voordat ze
- gebouwd worden, dienen deze opties aan het bestand met
- kernelinstellingen toegevoegd te worden, dient de kernel
- opnieuw gebouwd te worden en het systeem opnieuw gestart te
- worden:</para>
+ kernelopties nodig om correct gebouwd te worden. Voeg de
+ onderstaande instelling toe aan het bestand met
+ kernelinstellingen, bouw en installeer daarna de kernel en
+ herstart het systeem:</para>
- <programlisting>option CPU_ENABLE_SSE
-option USER_LDT</programlisting>
+ <programlisting>option CPU_ENABLE_SSE</programlisting>
<note>
- <para><literal>option USER_LDT</literal> bestaat niet in
- &os;&nbsp;5.X.</para>
+ <para>In &os;&nbsp;4.X dient <literal>option USER_LDT</literal>
+ toegevoegd te worden aan het bestand met kernelinstellingen.
+ In &os;&nbsp;5.X en later bestaat deze optie niet.</para>
</note>
<para>Om de gedeeld geheugen interface van X11 te verbeteren,
@@ -1443,52 +1442,44 @@ zoom=yes</programlisting>
<para>De software <application>transcode</application> is geen
speler, maar een verzameling hulpprogramma's voor het
- hercoderen van <filename>.avi</filename> en
- <filename>.mpg</filename> bestanden. Met
+ hercoderen van video- en audiobestanden. Met
<application>transcode</application> wordt het mogelijk om
videobestanden samen te voegen, kapotte bestanden te
repareren en commandoregelprogramma's te gebruiken met
<filename>stdin/stdout</filename> stream interfaces.</para>
- <para>Net als <application>MPlayer</application> is
- <application>transcode</application> bijzonder experimentele
- software die vanuit de port <filename
- role="package">multimedia/transcode</filename> gebouwd moet
- worden. Er zijn veel opties voor <command>make</command>
- beschikbaar en daaruit worden de volgende aangeraden:</para>
-
- <screen>&prompt.root; <userinput>make WITH_LIBMPEG2=yes</userinput></screen>
+ <para>Tijdens het bouwen van de port <filename
+ role="package">multimedia/transcode</filename> kan een
+ groot aantal opties opgegeven worden en de volgende
+ commandoregel wordt geadviseerd om
+ <application>transcode</application> te bouwen:</para>
- <para>Als ook <filename
- role="package">multimedia/avifile</filename> wordt
- ge&iuml;nstalleerd, dan dient <literal>WITH_AVIFILE</literal>
- aan de <command>make</command> commandoregel te worden
- toegevoegd:</para>
+ <screen>&prompt.root; <userinput>make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
+WITH_MJPEG=yes -DWITH_XVID=yes</userinput></screen>
- <screen>&prompt.root; <userinput>make WITH_AVIFILE=yes WITH_LIBMPEG2=yes</userinput></screen>
+ <para>De geadviseerde instellingen zijn toereikend voor de
+ meeste gebruikers.</para>
- <para>Hieronder staan twee voorbeelden beschreven waarin
- <command>transcode</command> wordt gebruikt voor het
- converteren van video met als resultaat anders geschaalde
- uitvoer. Het eerste encodeert de uitvoer naar een openDIVX
- AVI-bestand, het tweede encodeert het naar het meer portabele
- formaat MPEG.</para>
+ <para>Om de mogelijkheden van <command>transcode</command> te
+ illustreren volgt nu een voorbeeld van hoe een DivX-bestand
+ om te zetten in een PAL MPEG-1-bestand (PAL VCD):</para>
- <screen>&prompt.user; <userinput>transcode -i input.vob -x vob -V -Z 320x240 \
--y opendivx -N 0x55 -o output.avi</userinput></screen>
+ <screen>&prompt.user; <userinput>transcode -i input.avi -V --export_prof vcd-pal -o output_vcd</userinput>
+&prompt.user; <userinput>mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa</userinput></screen>
- <screen>&prompt.user; <userinput>transcode -i input.vob -x vob -V -Z 320x240 \
--y mpeg -N 0x55 -o output.tmp</userinput>
-&prompt.user; <userinput>tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1</userinput></screen>
+ <para>Het resulterende MPEG-bestand,
+ <filename>output_vcd.mpg</filename>, is klaar om afgespeeld
+ te worden met <application>MPlayer</application>. Het kan
+ ook op een CD-R gebrand worden om er een Video CD mee te
+ maken. In dat geval is het nodig om de programma's <filename
+ role="package">multimedia/vcdimager</filename> en <filename
+ role="package">sysutils/cdrdao</filename> te
+ installeren.</para>
<para>Er is een hulppagina voor <command>transcode</command>,
- maar er is weinig documentatie voor de verschillende
- <command>tc*</command> programma's (zoals
- <command>tcmplex</command>) die ook zijn ge&iuml;nstalleerd.
- Voor ieder commando is wel de commandoregeloptie
- <option>-h</option> beschikbaar, waarmee een korte
- beschrijving voor het gebruik van het programma wordt
- getoond.</para>
+ maar kijk ook op <ulink
+ url="http://www.transcoding.org/cgi-bin/transcode">transcode
+ wiki</ulink> voor meer informatie en voorbeelden.</para>
<para>Als de twee vergeleken worden, draait
<command>transcode</command> aanzienlijk langzamer dan
diff --git a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml
index 016536ad27..7487b6bc77 100644
--- a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml,v 1.45 2005/10/04 21:04:26 siebrand Exp $
- Gebaseerd op: 1.70
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml,v 1.46 2005/12/10 23:40:58 siebrand Exp $
+ Gebaseerd op: 1.71
-->
<chapter id="network-servers">
diff --git a/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
index 895057291d..53025e1e31 100644
--- a/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml,v 1.24 2005/10/31 19:51:47 siebrand Exp $
- Gebaseerd op: 1.277
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml,v 1.28 2005/12/18 20:12:26 remko Exp $
+ Gebaseerd op: 1.285
Vertaald door: Siebrand Mazeland
-->
@@ -38,6 +38,11 @@
<title>&a.core-secretary;</title>
&pgpkey.core-secretary;
</sect2>
+
+ <sect2 id="pgpkey-portmgr-secretary">
+ <title>&a.portmgr-secretary;</title>
+ &pgpkey.portmgr-secretary;
+ </sect2>
</sect1>
<sect1 id="pgpkeys-core">
@@ -127,6 +132,11 @@
&pgpkey.damien;
</sect2>
+ <sect2 id="pgpkey-tdb">
+ <title>&a.tdb;</title>
+ &pgpkey.tdb;
+ </sect2>
+
<sect2 id="pgpkey-mbr">
<title>&a.mbr;</title>
&pgpkey.mbr;
@@ -167,6 +177,11 @@
&pgpkey.wilko;
</sect2>
+ <sect2 id="pgpkey-oleg">
+ <title>&a.oleg;</title>
+ &pgpkey.oleg;
+ </sect2>
+
<sect2 id="pgpkey-jcamou">
<title>&a.jcamou;</title>
&pgpkey.jcamou;
@@ -337,11 +352,6 @@
&pgpkey.billf;
</sect2>
- <sect2 id="pgpkey-patrick">
- <title>&a.patrick;</title>
- &pgpkey.patrick;
- </sect2>
-
<sect2 id="pgpkey-gioria">
<title>&a.gioria;</title>
&pgpkey.gioria;
@@ -507,11 +517,6 @@
&pgpkey.mlaier;
</sect2>
- <sect2 id="pgpkey-alex">
- <title>&a.alex;</title>
- &pgpkey.alex;
- </sect2>
-
<sect2 id="pgpkey-erwin">
<title>&a.erwin;</title>
&pgpkey.erwin;
@@ -612,6 +617,11 @@
&pgpkey.dwmalone;
</sect2>
+ <sect2 id="pgpkey-sem">
+ <title>&a.sem;</title>
+ &pgpkey.sem;
+ </sect2>
+
<sect2 id="pgpkey-ehaupt">
<title>&a.ehaupt;</title>
&pgpkey.ehaupt;
@@ -647,11 +657,6 @@
&pgpkey.sanpei;
</sect2>
- <sect2 id="pgpkey-jim">
- <title>&a.jim;</title>
- &pgpkey.jim;
- </sect2>
-
<sect2 id="pgpkey-marcel">
<title>&a.marcel;</title>
&pgpkey.marcel;
@@ -732,9 +737,9 @@
&pgpkey.den;
</sect2>
- <sect2 id="pgpkey-pirzyk">
- <title>&a.pirzyk;</title>
- &pgpkey.pirzyk;
+ <sect2 id="pgpkey-gerald">
+ <title>&a.gerald;</title>
+ &pgpkey.gerald;
</sect2>
<sect2 id="pgpkey-jdp">
@@ -767,6 +772,11 @@
&pgpkey.dfr;
</sect2>
+ <sect2 id="pgpkey-rees">
+ <title>&a.rees;</title>
+ &pgpkey.rees;
+ </sect2>
+
<sect2 id="pgpkey-trhodes">
<title>&a.trhodes;</title>
&pgpkey.trhodes;
@@ -777,11 +787,6 @@
&pgpkey.benno;
</sect2>
- <sect2 id="pgpkey-paul">
- <title>&a.paul;</title>
- &pgpkey.paul;
- </sect2>
-
<sect2 id="pgpkey-roberto">
<title>&a.roberto;</title>
&pgpkey.roberto;
@@ -847,11 +852,6 @@
&pgpkey.vanilla;
</sect2>
- <sect2 id="pgpkey-cshumway">
- <title>&a.cshumway;</title>
- &pgpkey.cshumway;
- </sect2>
-
<sect2 id="pgpkey-demon">
<title>&a.demon;</title>
&pgpkey.demon;
@@ -867,6 +867,11 @@
&pgpkey.scop;
</sect2>
+ <sect2 id="pgpkey-anray">
+ <title>&a.anray;</title>
+ &pgpkey.anray;
+ </sect2>
+
<sect2 id="pgpkey-glebius">
<title>&a.glebius;</title>
&pgpkey.glebius;
@@ -892,11 +897,6 @@
&pgpkey.sobomax;
</sect2>
- <sect2 id="pgpkey-dcs">
- <title>&a.dcs;</title>
- &pgpkey.dcs;
- </sect2>
-
<sect2 id="pgpkey-brian">
<title>&a.brian;</title>
&pgpkey.brian;
@@ -972,11 +972,6 @@
&pgpkey.flz;
</sect2>
- <sect2 id="pgpkey-viny">
- <title>&a.viny;</title>
- &pgpkey.viny;
- </sect2>
-
<sect2 id="pgpkey-ume">
<title>&a.ume;</title>
&pgpkey.ume;
@@ -1012,6 +1007,11 @@
&pgpkey.joerg;
</sect2>
+ <sect2 id="pgpkey-emax">
+ <title>&a.emax;</title>
+ &pgpkey.emax;
+ </sect2>
+
<sect2 id="pgpkey-bz">
<title>&a.bz;</title>
&pgpkey.bz;
diff --git a/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml
index e6d476d0e4..5c3dfb4b4c 100644
--- a/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml
@@ -1,7 +1,9 @@
<!--
- The FreeBSD Dutch Documentation Project
+ The FreeBSD Documentation Project
$FreeBSD$
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml,v 1.46 2005/12/18 20:01:54 remko Exp $
+ Gebaseerd op: 1.95
-->
<chapter id="printing">
@@ -10,16 +12,14 @@
<author>
<firstname>Sean</firstname>
<surname>Kelly</surname>
- <contrib>Bijgedragen door </contrib>
+ <contrib>Bijdrage van </contrib>
</author>
- <!-- 30 Sept 1995 -->
</authorgroup>
<authorgroup>
<author>
<firstname>Jim</firstname>
<surname>Mock</surname>
- <contrib>Herstructureerd en geupdate door </contrib>
- <!-- Mar 2000 -->
+ <contrib>Geherstructureerd en bijgewerkt door </contrib>
</author>
</authorgroup>
<authorgroup>
@@ -28,376 +28,5408 @@
<surname>Koopman</surname>
<contrib>Vertaald door </contrib>
</author>
- <!-- 22 May 2004 -->
</authorgroup>
</chapterinfo>
- <title>* Printen</title>
+
+ <title>Afdrukken</title>
<sect1 id="printing-synopsis">
- <title>* Samenvatting</title>
+ <title>Overzicht</title>
+
+ <indexterm><primary>wachtrijsysteem LPD</primary></indexterm>
+
+ <indexterm><primary>afdrukken</primary></indexterm>
+
+ <para>&os; kan gebruikt worden om op een scala aan printers af te
+ drukken, van de oudste matrixprinter tot de nieuwste
+ laserprinters en alles er tussenin, waardoor op hoge kwaliteit
+ afgedrukt kan worden vanuit de gebruikte programma's.</para>
+
+ <para>&os; kan ook ingesteld worden als printserver in een netwerk.
+ Dan kan &os; afdrukopdrachten ontvangen van uiteenlopende
+ computers, waaronder &os;, &windows; en &macos; hosts. &os;
+ zorgt ervoor dat er &eacute;&eacute;n afdrukopdracht per keer
+ wordt afgedrukt, houdt statistieken bij van gebruikers en
+ computers die de meeste afdrukken maken, drukt
+ <quote>voorbladen</quote> af, zodat duidelijk is van wie de
+ afdruk is en nog veel meer.</para>
+
+ <para>Na het lezen van dit hoofdstuk weet de lezer:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Hoe het &os; afdrukwachtrijsysteem moet worden
+ ingesteld;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe afdrukfilters kunnen worden ge&iuml;nstalleerd, om
+ bepaalde afdrukopdrachten op een andere manier af te
+ handelen, zoals het omzetten van documenten naar formaten die
+ een printer begrijpt;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe voorbladen kunnen worden afgedrukt;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe er op printers die op andere computers zijn
+ aangesloten kan worden afgedrukt;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe er op printers die direct op het netwerk zijn
+ aangesloten kan worden afgedrukt;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe afdrukbeperkingen kunnen worden opgelegd, zoals het
+ beperken van de grootte van de afdrukopdracht, en bepaalde
+ gebruikers verbieden af te drukken;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe afdrukstatistieken kunnen worden bijgehouden en het
+ printergebruik in de gaten kan worden gehouden;</para>
+ </listitem>
- <para></para>
+ <listitem>
+ <para>Hoe problemen met afdrukken kunnen worden
+ opgelost.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Aangeraden voorkennis:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Hoe een nieuwe kernel wordt ingesteld, gebouwd en
+ ge&iuml;nstalleerd (<xref linkend="kernelconfig">).</para>
+ </listitem>
+ </itemizedlist>
</sect1>
<sect1 id="printing-intro-spooler">
- <title>* Inleiding</title>
+ <title>Inleiding</title>
+
+ <para>Om printers onder &os; te kunnen gebruiken moeten ze
+ kunnen werken met het Berkeley line afdrukwachtrijsysteem, ook
+ wel bekend als het wachtrijsysteem
+ <application>LPD</application>. Dit is het standaard
+ afdruksysteem onder &os;. Dit hoofdstuk introduceert het
+ wachtrijsysteem <application>LPD</application>, vaak simpelweg
+ <application>LPD</application> genoemd en begeleidt bij het
+ instellen.</para>
+
+ <para>Als de gebruiker al bekend is met
+ <application>LPD</application> of een ander
+ afdrukwachtrijsysteem, dan kan verder worden lezen vanaf <link
+ linkend="printing-intro-setup">Standaardinstallatie</link>.</para>
+
+ <para><application>LPD</application> regelt alles met betrekking
+ tot de printer van een host. Het is verantwoordelijk voor een
+ aantal zaken:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het regelt de toegang tot aangesloten printers en
+ printers die op andere hosts op het netwerk zijn
+ aangesloten;</para>
+ </listitem>
+
+ <indexterm><primary>afdrukopdrachten</primary></indexterm>
+
+ <listitem>
+ <para>Het geeft gebruikers de mogelijkheid bestanden aan te
+ bieden die afgedrukt moeten worden; deze aangeboden bestanden
+ worden <emphasis>afdrukopdrachten</emphasis> genoemd;</para>
+ </listitem>
+
+ <listitem>
+ <para>Het voorkomt dat gebruikers tegelijkertijd een printer
+ benaderen door een <emphasis>wachtrij</emphasis> bij te
+ houden voor elke printer;</para>
+ </listitem>
+
+ <listitem>
+ <para>Het kan <emphasis>voorbladen</emphasis> afdukken (in het
+ Engels ook wel bekend als <emphasis>banner</emphasis>, of
+ <emphasis>burst</emphasis> pagina's) zodat gebruikers hun
+ afdruk tussen andere afdrukken makkelijk terug kunnen
+ vinden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Het handelt de communicatie af voor printers die op een
+ seri&euml;le poort zijn aangesloten;</para>
+ </listitem>
+
+ <listitem>
+ <para>Het kan afdrukopdrachten over een netwerk versturen naar
+ een <application>LPD</application> wachtrij op een andere
+ host;</para>
+ </listitem>
+
+ <listitem>
+ <para>Het kan speciale filters aanroepen die afdrukopdrachten
+ converteren voor verschillende printertalen of
+ afdrukmogelijkheden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Het houdt statistieken bij van het printergebruik.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Middels een instellingenbestand
+ (<filename>/etc/printcap</filename>) en door speciale filters
+ beschikbaar te stellen, kan het <application>LPD</application>
+ systeem alle, of enkele van bovenstaande taken uitvoeren
+ op een grote verscheidenheid aan afdrukhardware.</para>
<sect2 id="printing-intro-why">
- <title>* Waarom je het wachtrijsysteem zou moeten
- gebruiken</title>
+ <title>Waarom het wachtrijsysteem gebruikt zou moet
+ worden</title>
+
+ <para>Als er maar &eacute;&eacute;n gebruiker is op een systeem,
+ staat terecht ter discussie waarom het wachtrijsysteem nodig is
+ als toegangscontrole, voorbladen en printerstatistieken niet
+ nodig zijn. Hoewel directe toegang tot de printer is in te
+ stellen, is het raadzaam het wachtrijsysteem toch te
+ gebruiken, omdat:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><application>LPD</application> afdrukopdrachten in de
+ achtergrond afhandelt. Dan is het niet nodig te wachten
+ tot de gegevens naar de printer zijn verzonden;</para>
+ </listitem>
- <para></para>
+ <indexterm><primary>&tex;</primary></indexterm>
+
+ <listitem>
+ <para><application>LPD</application> op eenvoudige wijze een
+ afdrukopdracht door een filter kan afdrukken om kopteksten
+ met datum/tijd toe te voegen of een speciaal
+ bestandsformaat (zoals een &tex; DVI bestand) om te zetten
+ naar een formaat dat de printer begrijpt. Deze handelingen
+ hoeven dan niet handmatig uitgevoerd te worden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Veel gratis en commerci&euml;le software met een
+ afdrukfunctie verwacht dat er een wachtrijsysteem aanwezig
+ is op een systeem om afdrukopdrachten naar te sturen. Door
+ een wachtrijsysteem op te zetten, wordt toekomstig te
+ installeren of reeds ge&iuml;stalleerde software op
+ eenvoudige wijze ondersteund.</para>
+ </listitem>
+ </itemizedlist>
</sect2>
</sect1>
<sect1 id="printing-intro-setup">
- <title>* Standaard opzet</title>
+ <title>Standaardinstallatie</title>
+
+ <para>Om printers met het <application>LPD</application>
+ wachtrijsysteem te kunnen gebruiken, dienen zowel de
+ printerhardware als de <application>LPD</application> software
+ ge&iuml;nstalleerd te worden. Dit document beschrijft deze
+ installatie in twee stappen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>In het onderdeel <link
+ linkend="printing-simple">Eenvoudige
+ printerinstallatie</link> staat hoe een printer moet worden
+ aangesloten, hoe <application>LPD</application> er mee kan
+ communiceren en hoe tekstbestanden afgedrukt kunnen
+ worden.</para>
+ </listitem>
+
+ <listitem>
+ <para>In <link linkend="printing-advanced">Geavanceerde
+ printerinstallatie</link> staat beschreven hoe een scala
+ aan bestandsformaten afgedrukt kan worden, hoe voorbladen
+ kunnen worden afgedrukt en hoe statistieken van de printer
+ kunnen worden bijgehouden.</para>
+ </listitem>
+ </itemizedlist>
<sect2 id="printing-simple">
- <title>* Eenvoudige printer opzet</title>
+ <title>Eenvoudige printerinstallatie</title>
+
+ <para>Nu wordt toegelicht hoe de printerhardware en de
+ <application>LPD</application> software ingesteld moeten worden
+ om een printer te kunnen gebruiken. Het behandelt de
+ basis:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><link
+ linkend="printing-hardware">Hardware-instelling</link>
+ geeft een aantal aanwijzingen voor het aansluiten van een
+ printer op een poort van een computer.</para>
+ </listitem>
+
+ <listitem>
+ <para><link
+ linkend="printing-software">Software-instellingen</link>
+ toont hoe het instellingenbestand
+ (<filename>/etc/printcap</filename>) voor het
+ <application>LPD</application>-systeem moet worden
+ opgezet.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Hoe een printer ge&iuml;nstalleerd moet worden die via een
+ netwerkprotocol gegevens ontvangt, in plaats van een
+ seri&euml;le of parallelle poort, staat in <link
+ linkend="printing-advanced-network-net-if">Printers met
+ netwerkinterfaces</link>.</para>
+
+ <para>Hoewel dit onderdeel <quote>Eenvoudige
+ printerinstallatie</quote> heet, is het redelijk complex. De
+ printer met de computer en het
+ <application>LPD</application>-systeem laten samenwerken is het
+ moeilijkste. De geavanceerde opties, zoals voorbladen en
+ statistieken, zijn relatief makkelijk als de printer eenmaal
+ werkt.</para>
<sect3 id="printing-hardware">
- <title>* Hardware Setup</title>
+ <title>Hardware-instelling</title>
+
+ <para>Hier worden de verschillende manieren waarop een printer
+ op een computer kan worden aangesloten beschreven. Het
+ bespreekt de soorten poorten en kabels en de
+ kernelinstellingen die nodig kunnen zijn om &os; met een
+ printer te laten communiceren.</para>
+
+ <para>Als een printer al is aangesloten en succesvol is
+ gebruikt onder een ander besturingssysteem, dan kan
+ waarschijnlijk verder gelezen worden in <link
+ linkend="printing-software">Software-instellingen</link>.</para>
<sect4 id="printing-ports">
- <title>* Poorten en kabels</title>
+ <title>Poorten en kabels</title>
+
+ <para>De printers die tegenwoordig voor PC's verkocht worden
+ hebben eigenlijk altijd een van de volgende drie
+ poorten:</para>
+
+ <itemizedlist>
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>serieel</secondary>
+ </indexterm>
+
+ <listitem>
+ <para><emphasis>Seri&euml;le</emphasis> poort, ook
+ bekend als RS-232 of COM poorten, gebruiken een
+ seri&euml;le poort op een computer om gegevens naar een
+ printer te sturen. Seri&euml;le poorten zijn heel
+ gebruikelijk in de computerindustrie en kabels zijn
+ eenvoudig verkrijgbaar en makkelijk te maken.
+ Seri&euml;le poorten hebben soms speciale kabels
+ nodig en vereisen soms het instellen van ingewikkelde
+ communicatieparameters. De meeste seri&euml;le poorten
+ hebben een maximale doorvoersnelheid van
+ 115.200&nbsp;bps waardoor het afdrukken van grote
+ grafische afdrukopdrachten erg onpraktisch
+ wordt.</para>
+ </listitem>
+
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>parallel</secondary>
+ </indexterm>
+
+ <listitem>
+ <para><emphasis>Parallelle</emphasis> poorten
+ gebruiken een parallelle poort op een computer om
+ gegevens naar een printer te sturen. Parallelle
+ poorten zijn gebruikelijk in de PC-markt en zijn
+ sneller dan RS-232 serieel. Kabels zijn goed
+ verkrijgbaar, maar moeilijker handmatig te
+ vervaardigen. Meestal zijn er geen
+ communicatieparameters bij parallelle poorten, wat het
+ instellen erg eenvoudig maakt.</para>
+
+ <indexterm>
+ <primary>centronics</primary>
+
+ <see>parallelle printers</see>
+ </indexterm>
+
+ <para>Parallelle poorten staan ook wel bekend als
+ <quote>Centronics</quote> poorten, genoemd naar het
+ soort aansluiting op de printer.</para>
+ </listitem>
- <para></para>
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>USB</secondary>
+ </indexterm>
+
+ <listitem>
+ <para>USB poorten, genoemd naar de Universal Serial
+ Bus, kunnen zelfs op nog hogere snelheid werken dan
+ parallelle of RS-232 seri&euml;le poorten. De
+ kabels zijn eenvoudig en goedkoop. USB is voor
+ afdrukken superieur aan RS-232 Serieel en Parallel,
+ maar wordt op &unix;-systemen niet altijd goed
+ ondersteund. Een van de manieren om dit te omzeilen is
+ de aanschaf van een printer met zowel een USB als een
+ parallelle poort, zoals veel printers die
+ hebben.</para>
+ </itemizedlist>
+
+ <para>Over het algemeen kunnen parallelle poorten
+ meestal in &eacute;&eacute;n richting communiceren (van
+ computer naar printer), terwijl seri&euml;le en USB
+ poorten in twee richtingen kunnen communiceren.
+ Nieuwere parallelle poorten (EPP en ECP) en printers kunnen
+ onder &os; in beide richtingen communiceren, mits een
+ IEEE-1284 gekeurde kabel wordt gebruikt.</para>
+
+ <indexterm><primary>&postscript;</primary></indexterm>
+
+ <para>Tweewegcommunicatie met een printer over een
+ parallelle poort verloopt meestal op een van de volgende
+ twee manieren. De eerste manier is door gebruik te maken
+ van een op maat gemaakt stuurprogramma voor &os; dat de
+ taal spreekt die door de printer wordt gebruikt. Dit geldt
+ meestal voor inkjet printers en er kan dan gebruikt gemaakt
+ worden van rapportagemogelijkheden over bijvoorbeeld
+ inktniveau's en andere statusinformatie. De tweede methode
+ wordt gebruikt als een printer &postscript;
+ ondersteunt.</para>
+
+ <para>&postscript;-taken zijn eigenlijk programma's die
+ naar de printer worden gestuurd. Het hoeft zelfs niet in
+ een afdruk te resulteren; het resultaat van de opdracht kan
+ direct weer naar de computer worden gestuurd. &postscript;
+ gebruikt ook tweewegcommunicatie om een computer op de
+ hoogte te stellen van opgetreden fouten, zoals fouten in
+ het &postscript;-programma of vastgelopen papier.
+ Gebruikers kunnen dit soort informatie handig vinden. De
+ beste manier om bij een &postscript;-printer effectief bij
+ te houden wat het printergebruik is, vraagt om
+ tweewegcommunicatie: de printer wordt gevraagd om het
+ totaal aantal afgedrukt pagina's, de afdrukopdracht wordt
+ verzonden en vervolgens wordt nogmaals om het totaal aantal
+ afgedrukte pagina's gevraagd. Het verschil van deze
+ getallen geeft het aantal afgedrukte pagina's van de
+ afdrukopdracht van de betreffende gebruiker.</para>
</sect4>
<sect4 id="printing-parallel">
- <title>* Parallel poorten</title>
+ <title>Parallelle poorten</title>
+
+ <para>Om een printer met een parallelle poort aan te
+ sluiten, moet een Centronics kabel de printer met de
+ computer verbinden. De instructies die geleverd zijn bij
+ de printer, de computer of beide, moeten voldoende zijn
+ om dit te verduidelijken.</para>
- <para></para>
+ <para>Onthoud op welke parallelle poort de printer is
+ aangesloten. De eerste parallelle poort heet onder &os;
+ <filename>ppc0</filename>, de tweede
+ <filename>ppc1</filename>, enzovoort. De benaming voor
+ de printer gaat analoog: <filename>/dev/lpt0</filename>
+ voor de printer op de eerste parallelle poort
+ enzovoort.</para>
</sect4>
<sect4 id="printing-serial">
- <title>* Seri&euml;le poorten</title>
+ <title>Seri&euml;le poorten</title>
+
+ <para>Gebruik de juiste seri&euml;le kabel om een printer met
+ een seri&euml;le poort op een computer aan te sluiten.
+ De instructies die geleverd zijn bij de printer, de
+ computer of beide, moeten voldoende zijn om dit te
+ verduidelijken.</para>
+
+ <para>Als onduidelijk is wat de <quote>juiste seri&euml;le
+ kabel</quote> is, kan een van onderstaande opties
+ geprobeerd worden:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Een <emphasis>modem</emphasis>kabel verbindt elke
+ pin van de stekker aan het ene eind direct met de
+ corresponderende pin van de stekker aan het andere
+ eind. Dit type kabel heet ook wel een
+ <quote>DTE-naar-DCE</quote>-kabel.</para>
+ </listitem>
+
+ <indexterm><primary>null-modem kabel</primary></indexterm>
+
+ <listitem>
+ <para>Een <emphasis>null-modem</emphasis> kabel verbindt
+ enkele pinnetjes direct, verwisselt andere
+ (bijvoorbeeld van verstuur gegevens naar ontvang
+ gegevens) en sluit sommige draden kort in de stekker.
+ Dit type kabel heet ook wel een
+ <quote>DTE-to-DTE</quote>-kabel.</para>
+ </listitem>
+
+ <listitem>
+ <para>Een
+ <emphasis>seri&euml;le printer</emphasis>kabel, nodig
+ bij sommige ongebruikelijke printers, is als een
+ null-modem kabel, maar stuurt sommige signalen naar hun
+ tegenhangers in plaats van ze intern kort te
+ sluiten.</para>
+ </listitem>
+ </itemizedlist>
- <para></para>
+ <indexterm><primary>baud rate</primary></indexterm>
+
+ <indexterm><primary>pariteit</primary></indexterm>
+
+ <indexterm>
+ <primary>flow-control protocol</primary>
+ </indexterm>
+
+ <para>Het is ook nodig de communicatieparameters voor de
+ printer in te stellen, meestal via het bedieningspaneel of
+ middels DIP-schakelaars op de printer. Selecteer de
+ hoogste <literal>bps</literal> (bits per seconde, soms
+ <emphasis>baud</emphasis>) die zowel door de computer als
+ de printer wordt ondersteund. Kies 7 of 8 data bits.
+ Geen, even of oneven pariteit en 1 of 2 stop bits.
+ Selecteer ook het flow-control protocol: ofwel geen, ofwel
+ XON/XOFF (ook bekend als <quote>in-band</quote> of
+ <quote>software</quote>) flow-control. Onthoud deze
+ instellingen voor de hier op volgende
+ software-instellingen.</para>
</sect4>
</sect3>
<sect3 id="printing-software">
- <title>* Software setup</title>
+ <title>Software-instellingen</title>
+
+ <para>Nu wordt beschreven welke software-instellingen nodig
+ zijn om onder &os; af te drukken met behulp van het
+ wachtrijsysteem <application>LPD</application>.</para>
+
+ <para>Een overzicht van de te doorlopen stappen:</para>
+
+ <procedure>
+ <step>
+ <para>Maak, indien nodig, de kernel geschikt voor de poort
+ die door de printer wordt gebruikt. In <link
+ linkend="printing-kernel">Kernelinstellingen</link> is
+ te lezen hoe dit gedaan kan worden.</para>
+ </step>
+
+ <step>
+ <para>Stel de communicatievorm voor de parallelle poort in,
+ als gebruik wordt gemaakt van een parallelle printer. In
+ <link
+ linkend="printing-parallel-port-mode">Communicatietype
+ instellen voor een parallelle poort</link> staan de
+ details.</para>
+ </step>
+
+ <step>
+ <para>Test of het besturingssysteem gegevens naar de
+ printer kan sturen. In <link
+ linkend="printing-testing">Printercommunicatie
+ controleren</link> staat een aantal suggesties.</para>
+ </step>
+
+ <step>
+ <para>Stel <application>LPD</application> in voor de
+ printer door <filename>/etc/printcap</filename> aan te
+ passen. Dat wordt later in het hoofdstuk
+ beschreven.</para>
+ </step>
+ </procedure>
<sect4 id="printing-kernel">
- <title>* Kernel configuratie</title>
+ <title>Kernelinstellingen</title>
+
+ <para>Het besturingssysteem is gecompileerd om met een
+ beperkte verzameling apparaten te kunnen werken. De
+ seri&euml;le en parallelle poorten zijn onderdeel van
+ deze verzameling. Daarom kan het nodig zijn om
+ ondersteuning voor een extra seri&euml;le of parallelle
+ poort toe te voegen als een kernel hier nog niet voor is
+ ingesteld.</para>
+
+ <para>Om te achterhalen of een huidige kernel een
+ seri&euml;le poort ondersteunt:</para>
+
+ <screen>&prompt.root; <userinput>grep sio<replaceable>N</replaceable> /var/run/dmesg.boot</userinput></screen>
+
+ <para>Hier is <replaceable>N</replaceable> het aantal
+ seri&euml;le poorten, beginnende bij nul. Als de uitvoer
+ op het volgende lijkt, dan wordt de poort door een kernel
+ ondersteund:</para>
- <para></para>
+ <screen>sio2 at port 0x3e8-0x3ef irq 5 on isa
+sio2: type 16550A</screen>
+
+ <para>Om te achterhalen of een kernel een parallelle
+ poort ondersteunt:</para>
+
+ <screen>&prompt.root; <userinput>grep ppc<replaceable>N</replaceable> /var/run/dmesg.boot</userinput></screen>
+
+ <para>Hier is <replaceable>N</replaceable> het aantal
+ parallelle poorten beginnende bij nul. Als de uitvoer er
+ ongeveer als volgt uit ziet, dan wordt de poort door een
+ kernel ondersteund:</para>
+
+ <screen>ppc0: &lt;Parallel port&gt; at port 0x378-0x37f irq 7 on isa0
+ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
+ppc0: FIFO with 16/16/8 bytes threshold</screen>
+
+ <para>Het kan nodig zijn een kernel aan te passen om het
+ besturingssysteem in staat te stellen een parallelle of
+ seri&euml;le poort die voor een printer wordt gebruikt te
+ herkennen en te gebruiken.</para>
+
+ <para>In het onderdeel over kernelinstellingen staat meer
+ informatie om ondersteuning voor een seri&euml;le poort toe
+ te voegen. Lees de betreffende <emphasis>en</emphasis> de
+ volgende sectie om ondersteuning voor een parallelle poort
+ toe te voegen.</para>
</sect4>
</sect3>
<sect3 id="printing-dev-ports">
- <title>* Het toevoegen van <filename>/dev</filename> bestanden
- voor de poorten</title>
+ <title>Ingangen in <filename>/dev</filename> toevoegen voor
+ poorten</title>
+
+ <note>
+ <para>&os;&nbsp;5.0 beschikt over het bestandssysteem
+ <literal>devfs</literal> dat automatisch apparaatnodes
+ cre&euml;ert wanneer deze nodig zijn. Als een versie van
+ &os; wordt gebruikt die <literal>devfs</literal> aan heeft
+ staan, dan kan deze sectie overgeslagen worden.</para>
+ </note>
+
+ <para>Een kernel die communicatie via seri&euml;le of
+ parallelle poort ondersteund, is niet voldoende. Er is ook
+ een software-interface nodig waarover programma's gegevens
+ kunnen zenden en ontvangen. Dat is de functie van de
+ bestanden in de map <filename>/dev</filename>.</para>
+
+ <para><emphasis>Volg onderstaande stappen om een ingang in
+ <filename>/dev</filename> voor een poort toe te
+ voegen:</emphasis></para>
+
+ <procedure>
+ <step>
+ <para>Wordt <username>root</username> met &man.su.1;. Geef
+ het <username>root</username>-wachtwoord als daar om
+ wordt gevraagd.</para>
+ </step>
+
+ <step>
+ <para>Ga naar de map <filename>/dev</filename>:</para>
+
+ <screen>&prompt.root; <userinput>cd /dev</userinput></screen>
+ </step>
+
+ <step>
+ <para>Geef in:</para>
+
+ <screen>&prompt.root; <userinput>./MAKEDEV <replaceable>poort</replaceable></userinput></screen>
+
+ <para>Hier is <replaceable>poort</replaceable> de
+ apparaatingang voor de poort die wordt aangemaakt.
+ Gebruik <literal>lpt0</literal> voor de printer op de
+ eerste parallelle poort, <literal>lpt1</literal> voor de
+ printer op de tweede poort, enzovoort. Gebruik
+ <literal>ttyd0</literal> voor de eerste seri&euml;le
+ poort, <literal>ttyd1</literal> voor de tweede,
+ enzovoort.</para>
+ </step>
+
+ <step>
+ <para>Voer het volgende commando uit om vast te stellen of
+ de apparaatingang is aangemaakt:</para>
+
+ <screen>&prompt.root; <userinput>ls -l <replaceable>poort</replaceable></userinput></screen>
+
+ </step>
+ </procedure>
<sect4 id="printing-parallel-port-mode">
- <title>* Het communicatietype instellen voor de parallelle
+ <title>Communicatietype instellen voor een parallelle
poort</title>
- <para></para>
+ <para>Wanneer een parallelle poort wordt gebruikt, kan
+ worden aangegeven of &os; voor de printer
+ interrupt-gestuurde of <quote>polled</quote> communicatie
+ moet gebruiken. Het generieke printer
+ apparaatstuurprogramma (&man.lpt.4;) onder
+ &os;&nbsp;4.X en 5.X gebruikt het systeem &man.ppbus.4;.
+ Dit bestuurt de chipset van de poort met het stuurprogramma
+ &man.ppc.4;.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>De <emphasis>interrupt-gestuurde</emphasis>
+ methode is standaard in de GENERIC kernel. In dit
+ geval gebruikt het besturingssysteem een IRQ om te
+ bepalen of de printer klaar is om gegevens te
+ ontvangen.</para>
+ </listitem>
+
+ <listitem>
+ <para>Bij de <emphasis>polled</emphasis> methode vraagt
+ het besturingssysteem met vaste intervallen aan de
+ printer of deze klaar is om gegevens te ontvangen. Als
+ de printer antwoordt met <quote>klaar</quote>, stuurt
+ de kernel meer gegevens.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>De interrupt-gestuurde methode is meestal iets sneller,
+ maar gebruikt een kostbaar IRQ nummer. Van sommige HP
+ printers wordt beweerd dat ze niet goed werken in
+ interruptmodus, schijnbaar door een (nog niet begrepen)
+ timing probleem. Deze printers moeten gebruik maken van de
+ polled methode. Gebruik de methode die werkt. Sommige
+ printers werken met beide methodes, maar zijn tergend
+ langzaam in de interrupt modus.</para>
+
+ <para>Het communicatietype kan op twee manieren worden
+ ingesteld: door de kernel in te stellen of door gebruik te
+ maken van &man.lptcontrol.8;.</para>
+
+ <para><emphasis>Het communicatietype instellen door de kernel
+ aan te passen:</emphasis></para>
+
+ <procedure>
+ <step>
+ <para>Pas het kernelinstellingenbestand aan. Zoek naar
+ een <literal>ppc0</literal> ingang. Gebruik
+ <literal>ppc1</literal> voor het opzetten van een
+ tweede parallelle poort. Gebruik
+ <literal>ppc2</literal> voor de derde poort,
+ enzovoort.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Voeg onder &os;&nbsp;4.X het
+ <literal>irq</literal> nummer toe om gebruik te
+ maken van interrupt-gestuurde modus:</para>
+
+ <programlisting>device ppc0 at isa? irq <replaceable>N</replaceable></programlisting>
+
+ <para>Hier is <replaceable>N</replaceable> het IRQ
+ nummer voor een parallelle poort van de
+ computer.</para>
+
+ <para>Wijzig voor &os;&nbsp;5.X de volgende
+ regel in <filename>/boot/device.hints</filename> en
+ vervang <replaceable>N</replaceable> door het
+ juiste IRQ nummer:</para>
+
+ <programlisting>hint.ppc.0.irq="<replaceable>N</replaceable>"</programlisting>
+
+ <para>Het kernelinstellingenbestand moet ook het
+ stuurprogramma &man.ppc.4; bevatten:</para>
+
+ <screen>device ppc</screen>
+ </listitem>
+
+ <listitem>
+ <para>Voeg het <literal>irq</literal> nummer niet toe
+ om gebruik te maken van polled modus.</para>
+
+ <para>Gebruik voor &os;&nbsp;4.X de volgende regel
+ in het kernelinstellingenbestand:</para>
+
+ <programlisting>device ppc0 at isa?</programlisting>
+
+ <para>Verwijder voor &os;&nbsp;5.X de onderstaande
+ regel in
+ <filename>/boot/device.hints</filename>:</para>
+
+ <programlisting>hint.ppc.0.irq="<replaceable>N</replaceable>"</programlisting>
+
+ <para>In sommige gevallen is het onder
+ &os;&nbsp;5.X niet voldoende om een poort in
+ polled modus te zetten. In veel gevallen komt dat
+ door het stuurprogramma &man.acpi.4;. Dit is in
+ staat om apparaten te testen en aan te sluiten en
+ kan zodoende het communcatietype van de printer
+ wijzigen. Raadpleeg de instellingen voor
+ &man.acpi.4; om dit probleem te verhelpen.</para>
+ </listitem>
+ </itemizedlist>
+ </step>
+
+ <step>
+ <para>Sla het bestand op. Maak en installeer de nieuwe
+ kernel en herstart de computer. In <link
+ linkend="kernelconfig">De &os;-kernel
+ instellen</link> staan meer details.</para>
+ </step>
+ </procedure>
+
+ <para><emphasis>Communictatietype instellen met
+ </emphasis> &man.lptcontrol.8;:</para>
+
+ <procedure>
+ <step>
+ <para>Voer het volgende commando uit om
+ <literal>lpt<replaceable>N</replaceable></literal> op
+ interrupt-gestuurde modus in te stellen.:</para>
+
+ <screen>&prompt.root; <userinput>lptcontrol -i -d /dev/lpt<replaceable>N</replaceable></userinput></screen>
+ </step>
+
+ <step>
+ <para>Voer het volgende commando uit om
+ <literal>lpt<replaceable>N</replaceable></literal> op
+ polled modus in te stellen.</para>
+
+ <screen>&prompt.root; <userinput>lptcontrol -p -d /dev/lpt<replaceable>N</replaceable></userinput></screen>
+ </step>
+ </procedure>
+
+ <para>Zet deze commando's in het bestand
+ <filename>/etc/rc.local</filename> zodat het
+ communicatietype juist wordt ingesteld bij het opstarten.
+ In &man.lptcontrol.8; staat meer informatie.</para>
</sect4>
<sect4 id="printing-testing">
- <title>* Het controleren van de printercommunicatie</title>
+ <title>Printercommunicatie controleren</title>
+
+ <para>Voor het instellen van het wachtrijsysteem, is het
+ verstandig te controleren of het besturingssyteem gegevens
+ naar een printer kan versturen. Het is een stuk
+ makkelijker om problemen met printercommunicatie en het
+ wachtrijsysteem apart op te lossen.</para>
+
+ <para>De printer wordt getest door er tekst naar toe te
+ sturen. Voor printers die direct tekens kunnen afdrukken
+ is het programma &man.lptest.1; handig: het genereert alle
+ 96 afdrukbare ASCII tekens op 96 regels.</para>
+
+ <indexterm><primary>&postscript;</primary></indexterm>
+
+ <para>Voor &postscript; (of andere op taal gebaseerde)
+ printers, is een meer geavanceerde test nodig. Een
+ eenvoudig &postscript;-programma zoals het volgende
+ volstaat:</para>
+
+ <programlisting>%!PS
+100 100 moveto 300 300 lineto stroke
+310 310 moveto /Helvetica findfont 12 scalefont setfont
+(Werkt dit?) show
+showpage</programlisting>
+
+ <para>Bovenstaande &postscript;-code kan in een bestand
+ worden opgeslagen en in de voorbeelden in de volgende
+ paragrafen gebruikt worden.</para>
+
+ <indexterm><primary>PCL</primary></indexterm>
+
+ <note>
+ <para>Als in dit document wordt gesproken over een
+ printertaal, wordt uitgegaan van een taal als
+ &postscript; en niet PCL van HP. Hoewel PCL zeer
+ functioneel is, kan het direct platte tekst afdrukken
+ door gebruik te maken van escapetekens. &postscript; kan
+ niet direct platte tekst afdrukken. Voor dat soort
+ printertalen zijn speciale aanpassingen nodig.</para>
+ </note>
<sect5 id="printing-checking-parallel">
- <title>* Het controleren van een parallelle printer</title>
+ <title>Parallelle printer controleren</title>
- <para></para>
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>parallel</secondary>
+ </indexterm>
+
+ <para>In deze sectie wordt beschreven hoe te controleren of
+ &os; kan communiceren met een printer die op een
+ parallelle poort is aangesloten.</para>
+
+ <para><emphasis>Voer de volgende stappen uit om een printer
+ op een parallelle poort te testen:</emphasis></para>
+
+ <procedure>
+ <step>
+ <para>&man.su.1; naar <username>root</username>.</para>
+ </step>
+
+ <step>
+ <para>Stuur gegevens naar de printer.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Gebruik &man.lptest.1; als de printer platte
+ tekst af kan drukken:</para>
+
+ <screen>&prompt.root; <userinput>lptest &gt; /dev/lpt<replaceable>N</replaceable></userinput></screen>
+
+ <para>Hier is <replaceable>N</replaceable> het
+ nummer van de parallelle poort, beginnende bij
+ nul.</para>
+ </listitem>
+
+ <listitem>
+ <para>Als de printer &postscript; of een andere
+ printertaal begrijpt, stuur dan een klein
+ programma naar de printer:</para>
+
+ <screen>&prompt.root; <userinput>cat &gt; /dev/lpt<replaceable>N</replaceable></userinput></screen>
+
+ <para>Geef het programma regel voor regel
+ <emphasis>heel nauwkeurig</emphasis> in. Een
+ regel kan niet worden gewijzigd als er op
+ <literal>RETURN</literal> of
+ <literal>ENTER</literal> is gedrukt. Geef na het
+ afronden van de invoer voor het programma het
+ einde-van-invoer teken. Dit is meestal
+ <literal>CONTROL+D</literal>.</para>
+
+ <para>Het programma kan ook in een bestand worden
+ opgeslagen:</para>
+
+ <screen>&prompt.root; <userinput>cat <replaceable>bestand</replaceable> &gt; /dev/lpt<replaceable>N</replaceable></userinput></screen>
+
+ <para>Hier is <replaceable>bestand</replaceable> de
+ naam van het bestand waarin het programma is
+ opgeslagen dat naar een printer gestuurd kan
+ worden.</para>
+ </listitem>
+ </itemizedlist>
+ </step>
+ </procedure>
+
+ <para>Nu moet er iets worden afgedrukt. Tekst die er niet
+ goed uitziet is geen probleem. Dit wordt later
+ gerepareerd.</para>
</sect5>
<sect5 id="printing-checking-serial">
- <title>* Het controleren van een seri&euml;le printer</title>
+ <title>Seri&euml;le printer controleren</title>
+
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>serieel</secondary>
+ </indexterm>
+
+ <para>In deze sectie wordt beschreven hoe te controleren of
+ &os; kan communiceren met een printer die op een
+ seri&euml;le poort is aangesloten.</para>
+
+ <para><emphasis>Voer de volgende stappen uit om een printer
+ op de seri&euml;le poort te testen:</emphasis></para>
+
+ <procedure>
+ <step>
+ <para>&man.su.1; naar <username>root</username>.</para>
+ </step>
+
+ <step>
+ <para>Voeg de volgende regel toe aan
+ <filename>/etc/remote</filename>:</para>
+
+ <programlisting>printer:dv=/dev/<replaceable>poort</replaceable>:br#<replaceable>bps-snelheid</replaceable>:pa=<replaceable>pariteit</replaceable></programlisting>
+
+ <indexterm>
+ <primary>bits-per-seconde</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>seri&euml;le poort</primary>
+ </indexterm>
+
+ <indexterm><primary>pariteit</primary></indexterm>
+
+ <para>Hier is <replaceable>poort</replaceable> de
+ apparaatingave voor de seri&euml;le poort
+ (<literal>ttyd0</literal>, <literal>ttyd1</literal>,
+ enzovoort), <replaceable>bps-snelheid</replaceable>
+ is het aantal bits per seconde waarop de printer
+ communiceert en <replaceable>pariteit</replaceable>
+ is de pariteit die door de printer wordt vereist
+ (<literal>even</literal>, <literal>odd</literal>,
+ <literal>none</literal> of
+ <literal>zero</literal>).</para>
- <para></para>
+ <para>Hier volgt een voorbeeldregel voor een printer
+ verbonden met een seri&euml;le lijn op de derde
+ seri&euml;le poort op 19200&nbsp;bps, zonder
+ pariteit:</para>
+
+ <programlisting>printer:dv=/dev/ttyd2:br#19200:pa=none</programlisting>
+ </step>
+
+ <step>
+ <para>Maak verbinding met de printer met
+ &man.tip.1;:</para>
+
+ <screen>&prompt.root; <userinput>tip printer</userinput></screen>
+
+ <para>Als dit niet werkt, pas dan
+ <filename>/etc/remote</filename> opnieuw aan en
+ probeer gebruik te maken van
+ <filename>/dev/cuaa<replaceable>N</replaceable></filename>
+ in plaats van
+ <filename>/dev/ttyd<replaceable>N</replaceable></filename>.</para>
+ </step>
+
+ <step>
+ <para>Stuur gegevens naar de printer.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Gebruik &man.lptest.1; als de printer platte
+ tekst af kan drukken:</para>
+
+ <screen>&prompt.user; <userinput>$lptest</userinput></screen>
+ </listitem>
+
+ <listitem>
+ <para>Als de printer &postscript; of een andere
+ printertaal begrijpt, stuur dan een klein
+ programma naar de printer. Geef het programma
+ regel voor regel <emphasis>heel
+ nauwkeurig</emphasis> in. Backspace of andere
+ speciale toetsen kunnen een speciale betekenis
+ hebben voor de printer. Het kan ook nodig zijn
+ een speciaal einde-van-invoer teken te geven
+ zodat de printer weet dat het gehele programma
+ ontvangen is. Druk voor &postscript;-printers
+ <literal>CONTROL+D</literal>.</para>
+
+ <para>Het programma kan ook in een bestand worden
+ opgeslagen:</para>
+
+ <screen>&prompt.user; <userinput>&gt;<replaceable>bestand</replaceable></userinput></screen>
+
+ <para>Hier is <replaceable>bestand</replaceable> de
+ naam van het bestand waarin het programma is
+ opgeslagen. Nadat &man.tip.1; het bestand heeft
+ verstuurd kan het juiste einde-van-invoer
+ teken ingegeven worden.</para>
+ </listitem>
+ </itemizedlist>
+ </step>
+ </procedure>
+
+ <para>Nu moet er iets worden afgedrukt. Tekst die er niet
+ niet goed uitziet is geen probleem. Dit wordt later
+ gerepareerd.</para>
</sect5>
</sect4>
</sect3>
<sect3 id="printing-printcap">
- <title>* De wachtrij aanzetten: het
- <filename>/etc/printcap</filename> bestand</title>
+ <title>De wachtrij aanzetten:
+ <filename>/etc/printcap</filename></title>
+
+ <para>Op dit punt moet de printer zijn aangesloten, de kernel
+ ingesteld zijn om met de printer te communiceren (indien
+ nodig) en is het mogelijk eenvoudige gegevens naar de printer
+ te sturen. Nu kan <application>LPD</application> ingesteld
+ worden zodat de toegang tot de printer wordt geregeld.</para>
+
+ <para><application>LPD</application> wordt ingesteld door het
+ bestand <filename>/etc/printcap</filename> aan te passen.
+ Het wachtrijsysteem <application>LPD</application> leest
+ dit bestand iedere keer dat het systeem wordt aangeroepen
+ zodat wijzigingen direct van toepassing zijn.</para>
+
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>mogelijkheden</secondary>
+ </indexterm>
+
+ <para>De opmaak van het bestand &man.printcap.5; is voor de
+ hand liggend. Met een willekeurige tekstverwerker kunnen
+ wijzigen in <filename>/etc/printcap</filename> aangebracht
+ worden. De opmaak is identiek aan die van andere bestanden
+ die voor dergelijke instellingen worden gebruik, zoals
+ <filename>/usr/share/misc/termcap</filename> en
+ <filename>/etc/remote</filename>. In &man.cgetent.3; staat
+ een uitgebreid overzicht van dit formaat.</para>
+
+ <para>De vereenvoudigde instellingen bestaan uit de volgende
+ stappen:</para>
+
+ <procedure>
+ <step>
+ <para>Kies een naam (en een paar handige aliassen) voor de
+ printer en voeg ze toe aan
+ <filename>/etc/printcap</filename>. In <link
+ linkend="printing-naming">Printernaamgeving</link>
+ staat meer informatie over het toekennen van een naam aan
+ een printer.</para>
+ </step>
+
+ <indexterm><primary>voorbladen</primary></indexterm>
+
+ <step>
+ <para>Het afdrukken van voorbladen (standaard) kan uitgezet
+ worden met de optie <literal>sh</literal>. In <link
+ linkend="printing-no-header-pages">Voorbladen
+ onderdrukken</link> staat meer informatie.</para>
+ </step>
+
+ <step>
+ <para>Maak een wachtrijmap aan en specificeer de locatie
+ door middel van de optie <literal>sd</literal>. In
+ <link linkend="printing-spooldir">Wachtrijmap
+ aanmaken</link> staat meer informatie.</para>
+ </step>
+
+ <step>
+ <para>Bepaal welke ingave in <filename>/dev</filename> voor
+ de printer wordt gebruikt en geef dit in
+ <filename>/etc/printcap</filename> aan door gebruik te
+ maken van de opte <literal>lp</literal>. In <link
+ linkend="printing-device">Printerapparaat
+ identificeren</link> staat meer informatie. Als de
+ printer is aangesloten op een seri&euml;le poort moeten
+ de communicatieparameters worden ingesteld met de optie
+ <literal>ms#</literal>. Dit wordt beschreven in <link
+ linkend="printing-commparam">Communicatieparameters
+ voor het wachtrijsysteem instellen</link>.</para>
+ </step>
+
+ <step>
+ <para>Installeer een filter voor platte tekst. In <link
+ linkend="printing-textfilter">Tekstfilter
+ installeren</link> staan details.</para>
+ </step>
+
+ <step>
+ <para>Test de instellingen door iets met &man.lpr.1; af te
+ druken. Details staan in <link
+ linkend="printing-trying">Printer uitproberen</link> en
+ <link linkend="printing-troubleshooting">Problemen
+ oplossen</link>.</para>
+ </step>
+ </procedure>
+
+ <note>
+ <para>Op taal gebaseerde printers, zoals
+ &postscript;-printers, kunnen niet direct platte tekst
+ afdrukken. De vereenvoudigde instellingen, zoals hierboven
+ beschreven en hieronder verder beschreven, gaan er van uit
+ dat alleen bestanden naar een printer worden gestuurd die
+ de printer begrijpt.</para>
+ </note>
+
+ <para>Gebruikers verwachten vaak dat ze platte tekst naar
+ printers op een systeem kunnen sturen. Programma's die
+ <application>LPD</application> gebruiken om af te drukken
+ gaan hier ook vaak van uit. Als een dergelijke printer wordt
+ ge&iuml;nstalleerd en het moet mogelijk zijn zowel
+ afdrukopdrachten in de printertaal als in platte tekst naar
+ een printer te sturen, dan is het zeer aan te raden een extra
+ stap in deze vereenvoudigde opzet in te voegen: installeer
+ een conversieprogramma dat automatisch platte tekst omzet in
+ &postscript; (of een andere printertaal). In <link
+ linkend="printing-advanced-if-conversion">Platte tekst
+ op &postscript;-printers afdrukken</link> staat hoe dit in
+ zijn werk gaat.</para>
<sect4 id="printing-naming">
- <title>* Printernaamgeving</title>
+ <title>Printernaamgeving</title>
+
+ <para>De eerste (makkelijke) stap is het kiezen van een naam
+ voor een printer. Het maakt niet uit of een naam
+ functioneel of grappig is, aangezien ook een aantal
+ aliassen aan een printer toegekend kunnen worden.</para>
+
+ <para>Ten minste &eacute;&eacute;n van de printers die in
+ <filename>/etc/printcap</filename> worden genoemd moet het
+ alias <literal>lp</literal> hebben. Dit is de
+ standaardnaam voor de printer. Als gebruikers de
+ omgevingsvariabele <envar>PRINTER</envar> niet ingesteld
+ hebben en ook geen printernaam specificeren als ze
+ <application>LPD</application> gebruiken, dan wordt
+ standaard de printer <literal>lp</literal> gebruikt.</para>
+
+ <para>Het is verder gebruikelijk om het laaste alias zo te
+ kiezen dat het een volledige beschrijving van de printer
+ is, inclusief merk en model.</para>
+
+ <para>Als een naam en een aantal aliassen zijn gekozen,
+ kunnen ze aan <filename>/etc/printcap</filename> worden
+ toegevoegd. De naam van een printer wordt in de meest
+ linker kolom geplaatst. Scheid ieder alias met een
+ verticale streep en plaats een dubbele punt achter het
+ laatste alias.</para>
+
+ <para>In het volgende voorbeeld is de beginsituatie een
+ uitgekleed <filename>/etc/printcap</filename> waarin twee
+ printers worden gedefinieerd (een Diablo 630 lineprinter
+ en een Panasonic KX-P4455
+ &postscript;-laserprinter):</para>
+
+ <programlisting>#
+# /etc/printcap voor host rose
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:
- <para></para>
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:</programlisting>
+
+ <para>In dit voorbeeld heet de eerste printer
+ <literal>rattan</literal> en heeft de volgende aliassen:
+ <literal>line</literal>, <literal>diablo</literal>,
+ <literal>lp</literal> en <literal>Diablo 630 Line
+ Printer</literal>. Omdat deze printer het alias
+ <literal>lp</literal> heeft, is het de standaard printer.
+ De tweede printer heet <literal>bamboo</literal> en heeft
+ de aliassen <literal>ps</literal>, <literal>PS</literal>,
+ <literal>S</literal>, <literal>panasonic</literal> en
+ <literal>Panasonic KX-P4455 PostScript
+ v51.4</literal>.</para>
</sect4>
<sect4 id="printing-no-header-pages">
- <title>* Voorbladen onderdrukken</title>
+ <title>Voorbladen onderdrukken</title>
+
+ <indexterm>
+ <primary>afdrukken</primary>
+
+ <secondary>voorbladen</secondary>
+ </indexterm>
+
+ <para>Het wachtrijsysteem <application>LPD</application>
+ drukt standaard een <emphasis>voorblad</emphasis> af voor
+ elke afdrukopdracht. Het voorblad bevat de gebruikersnaam
+ van de gebruiker die de afdrukopdracht gaf, de computer
+ waar de opdracht is gegeven en, in mooie grote letters, de
+ naam van de afdrukopdracht. Het nadeel hiervan is dat al
+ deze extra tekst het debuggen van de eenvoudige
+ printerinstallatie bemoeilijkt. Daarom wordt het afdrukken
+ van voorbladen onderdrukt.</para>
+
+ <para>Om voorbladen te onderdrukken, wordt de optie
+ <literal>sh</literal> toegevoegd voor de relevante printer
+ in <filename>/etc/printcap</filename>. Hieronder staat een
+ voorbeeld van <filename>/etc/printcap</filename> met de
+ optie <literal>sh</literal>:</para>
+
+ <programlisting>#
+# /etc/printcap voor host rose - nergens worden voorbladen afgedrukt
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:
- <para></para>
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:</programlisting>
+
+ <para>Het juiste formaat is gebruikt: de eerste regel begint
+ in de meest linker kolom, volgende regels springen in.
+ Elke regel eindigt met een backslash, behalve de
+ laatste.</para>
</sect4>
<sect4 id="printing-spooldir">
- <title>* Het aanmaken van de wachtrijdirectory</title>
+ <title>Wachtrijmap aanmaken</title>
+
+ <indexterm><primary>printer wachtrij</primary></indexterm>
+
+ <indexterm><primary>afdrukopdrachten</primary></indexterm>
+
+ <para>De volgende stap in deze eenvoudige opzet is het
+ aanmaken van een <emphasis>wachtrijmap</emphasis>. Dit is
+ een map waar afdrukopdrachten geplaatst worden totdat ze
+ worden afgedrukt. Ook wordt er een aantal bestanden
+ geplaatst die nodig zijn voor het functioneren van het
+ wachtrijsysteem.</para>
+
+ <para>Vanwege het veranderlijke karakter van wachtrijmappen
+ is het gebruikelijk om deze mappen onder
+ <filename>/var/spool</filename> te plaatsen. Het is niet
+ nodig om een back-up van de inhoud van deze mappen te
+ maken. Ze kunnen eenvoudigweg opnieuw worden aangemaakt
+ met &man.mkdir.1;.</para>
+
+ <para>Het is ook gebruikelijk om de naam van de map overeen
+ te laten komen met die van de printer, zoals onder is
+ weergegeven:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /var/spool/<replaceable>printernaam</replaceable></userinput></screen>
+
+ <para>Als er veel printers zijn aangesloten op een netwerk,
+ is het beter de wachtrijmappen aan te maken in een enkele
+ map die speciaal wordt gebruikt voor afdrukken met
+ <application>LPD</application>. In dit voorbeeld wordt dat
+ gedaan voor de printers <literal>rattan</literal> en
+ <literal>bamboo</literal>:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /var/spool/lpd</userinput>
+&prompt.root; <userinput>mkdir /var/spool/lpd/rattan</userinput>
+&prompt.root; <userinput>mkdir /var/spool/lpd/bamboo</userinput></screen>
+
+ <note>
+ <para>Als de afdrukopdrachten priv&eacute; moeten blijven,
+ dan is het belangrijk de wachtrijmap niet algemeen
+ toegankelijk te maken. Wachtrijmappen moeten eigendom
+ zijn van gebruiker daemon en groep daemon. Uitsluitend
+ deze gebruiker en groep moeten de map kunnen lezen,
+ schrijven en doorzoeken:</para>
+
+ <screen>&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/rattan</userinput>
+&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/bamboo</userinput>
+&prompt.root; <userinput>chmod 770 /var/spool/lpd/rattan</userinput>
+&prompt.root; <userinput>chmod 770 /var/spool/lpd/bamboo</userinput></screen>
+ </note>
+
+ <para>Tenslotte moet <application>LPD</application> verteld
+ worden dat deze mappen bestaan. Dit kan met het bestand
+ <filename>/etc/printcap</filename>. De locatie van de
+ wachtrijmap wordt opgegeven met de optie
+ <literal>sd</literal>:</para>
- <para></para>
+ <programlisting>#
+# /etc/printcap voor host rose - opgeven van de wachtrijmappen
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:
+
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:</programlisting>
+
+ <para>De naam van de printer staat in de eerste kolom, maar
+ alle andere regels die de printer beschrijven worden
+ ingesprongen en elke regel eindigt met een
+ backslash.</para>
+
+ <para>Als geen wachtrijmap wordt opgegeven met
+ <literal>sd</literal>, dan wordt standaard
+ <filename>/var/spool/lpd</filename> gebruikt.</para>
</sect4>
<sect4 id="printing-device">
- <title>* Het printerdevice identificeren</title>
+ <title>Printerapparaat identificeren</title>
+
+ <para>In <link linkend="printing-dev-ports">Ingangen in
+ <filename>/dev</filename> toevoegen voor poorten</link> is
+ bepaald welke ingang in de map <filename>/dev</filename>
+ door &os; wordt gebruikt om met een printer te
+ comminiceren. Nu moet <application>LPD</application> dit
+ ook weten. Als het wachtrijsysteem een afdrukopdracht
+ krijgt, wordt het relevante apparaat geopend door het
+ filterprogramma (dat verantwoordelijk is voor het sturen
+ van gegevens naar een printer).</para>
+
+ <para>Geef de locatie van de ingang in
+ <filename>/dev</filename> op in
+ <filename>/etc/printcap</filename> door gebruik te maken
+ van de optie <literal>lp</literal>.</para>
+
+ <para>In het huidige voorbeeld wordt aangenomen dat
+ <literal>rattan</literal> op de eerste parallelle poort is
+ aangesloten en <literal>bamboo</literal> op de zesde
+ seri&euml;le poort. Hier volgen de toevoegingen voor
+ <filename>/etc/printcap</filename>:</para>
+
+ <programlisting>#
+# /etc/printcap voor host rose - juiste apparaat bepaald
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:
- <para></para>
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:\
+ :lp=/dev/ttyd5:</programlisting>
+
+ <para>Als voor een printer de optie <literal>lp</literal>
+ niet wordt gebruikt in <filename>/etc/printcap</filename>,
+ dan gebruikt <application>LPD</application> standaard
+ <filename>/dev/lp</filename>. Momenteel bestaat
+ <filename>/dev/lp</filename> niet in &os;.</para>
+
+ <para>Als de te installeren printer is aangesloten op een
+ parallelle poort, dan staan verdere instructies in <link
+ linkend="printing-textfilter">Tekstfilter
+ installeren</link>. In andere gevallen kunnen de
+ instructies in de volgende paragraaf gevold worden.</para>
</sect4>
<sect4 id="printing-commparam">
- <title>* Het configureren van communicatieparameters voor het
- wachtrijsysteem</title>
+ <title>Communicatieparameters voor het wachtrijsysteem
+ instellen</title>
+
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>serieel</secondary>
+ </indexterm>
+
+ <para>Voor printers die zijn aangesloten op een seri&euml;le
+ poort kan <application>LPD</application> de bps-snelheid,
+ pariteit en andere seri&euml;le communicatie parameters
+ instellen voor het filterprogramma dat gegevens naar een
+ printer stuurt. Dit is gunstig omdat:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>De verschillende communicatieparameters
+ uitgeprobeerd kunnen worden door
+ <filename>/etc/printcap</filename> aan te passen. Het
+ is niet nodig het filterprogramma opnieuw te
+ compileren;</para>
+ </listitem>
- <para></para>
+ <listitem>
+ <para>Het wachtrijsysteem kan hetzelfde filter gebruiken
+ voor verschillende printers die mogelijk verschillende
+ seri&euml;le communicatie-instellingen hebben.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Met de volgende opties in
+ <filename>/etc/printcap</filename> kunnen seri&euml;le
+ communicatieparameters worden ingesteld voor het apparaat
+ waar <literal>lp</literal> naar verwijst:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>br#<replaceable>bps-snelheid</replaceable></literal></term>
+
+ <listitem>
+ <para>Stelt de communicatiesnelheid van het apparaat in
+ op <replaceable>bps-snelheid</replaceable>, waarbij
+ <replaceable>bps-snelheid</replaceable> de waarde
+ 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800,
+ 2400, 4800, 9600, 19200, 38400, 57600 of 115200
+ bits-per-seconde kan aannemen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>ms#<replaceable>stty-modus</replaceable></literal></term>
+
+ <listitem>
+ <para>Bepaalt de opties voor het geval het
+ printerapparaat een terminal is. In &man.stty.1;
+ staat uitleg over de beschikbare opties.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Als <application>LPD</application> het apparaat opent
+ dat met <literal>lp</literal> is opgegeven, worden de
+ eigenschappen van het apparaat bepaald door de optie
+ <literal>ms#</literal>. Met name van belang zijn de modi
+ <literal>parenb</literal>, <literal>parodd</literal>,
+ <literal>cs5</literal>, <literal>cs6</literal>,
+ <literal>cs7</literal>, <literal>cs8</literal>,
+ <literal>cstopb</literal>, <literal>crtscts</literal> en
+ <literal>ixon</literal>. Deze worden uitgelegd in
+ &man.stty.1;.</para>
+
+ <para>Nu wordt de voorbeeldprinter op de zesde seri&euml;le
+ poort aangepast. De bps-snelheid wordt ingesteld op 38400.
+ Als modus wordt gekozen: geen pariteit met
+ <literal>-parenb</literal>, 8-bit tekens met
+ <literal>cs8</literal>, geen modem controle met
+ <literal>clocal</literal> en hardware flow controle met
+ <literal>crtscts</literal>:</para>
+
+ <programlisting>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:</programlisting>
</sect4>
<sect4 id="printing-textfilter">
- <title>* Een tekstfilter installeren</title>
+ <title>Tekstfilter installeren</title>
+
+ <indexterm>
+ <primary>afdrukken</primary>
+
+ <secondary>filters</secondary>
+ </indexterm>
+
+ <para>Nu kan <application>LPD</application> verteld worden
+ welke tekstfilters gebruikt moeten worden bij het versturen
+ van afdrukopdrachten. Een <emphasis>tekstfilter</emphasis>
+ is een programma dat <application>LPD</application>
+ aanroept als het een afdrukopdracht krijgt. Wanneer
+ <application>LPD</application> het tekstfilter aanroept,
+ wordt de standaard invoer van het filter gekoppeld aan de
+ afdrukopdracht en de standaard uitvoer aan het
+ printerapparaat dat door de optie <literal>lp</literal>
+ is opgegeven. Er wordt aangenomen dat het filter van
+ standaard invoer leest, vervolgens de nodige handelingen
+ uitvoert en het resultaat naar de standaard uitvoer
+ schrijft, zodat het afgedrukt wordt. In <link
+ linkend="printing-advanced-filters">Filters</link> staat
+ meer informatie over het tekstfilter.</para>
+
+ <para>Voor deze eenvoudige printerinstallatie kan het
+ tekstfilter een klein shellscript zijn dat
+ <command>/bin/cat</command> aanroept om de afdrukopdracht
+ naar de printer te sturen. &os; wordt geleverd met een
+ ander filter, <filename>lpf</filename>, dat backspaces en
+ onderlijnde tekst afhandelt voor printers die hier niet mee
+ overweg kunnen. Natuurlijk kan elk filter gebruikt worden
+ dat gewenst is. Het filter <command>lpf</command> wordt
+ uitgebreid beschreven in <link
+ linkend="printing-advanced-lpf">lpf: een
+ tekstfilter</link>.</para>
+
+ <para>Nu wordt eerst het shellscript
+ <filename>/usr/local/libexec/if-simple</filename> gemaakt
+ dat als simpel tekstfilter dient. Plaats de volgende tekst
+ in het bestand met een tekstverwerker naar keuze:</para>
- <para></para>
+ <programlisting>#!/bin/sh
+#
+# if-simple - Eenvoudig tekstfilter voor lpd
+# Ge&iuml;nstalleerd in /usr/local/libexec/if-simple
+#
+# Kopieert eenvoudige stdin naar stdout.
+# Filterargumenten worden genegeerd.
+
+/bin/cat &amp;&amp; exit 0
+exit 2</programlisting>
+
+ <para>Zorg dat het bestand uitvoerbaar is:</para>
+
+ <screen>&prompt.root; <userinput>chmod 555 /usr/local/libexec/if-simple</userinput></screen>
+
+ <para>Zorg dat <application>LPD</application> het filter
+ gebruikt door dit aan te geven met de optie
+ <literal>if</literal> in
+ <filename>/etc/printcap</filename>. Nu volgt hoe dit te
+ doen voor de twee printers uit het voorbeeld:</para>
+
+ <programlisting>#
+# /etc/printcap voor host rose - met tekstfilter
+#
+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:\
+ :if=/usr/local/libexec/if-simple:</programlisting>
+
+ <note>
+ <para>Een kopie van het script
+ <filename>if-simple</filename> staat in de map <filename
+ class="directory">/usr/share/examples/printing</filename>.</para>
+ </note>
</sect4>
<sect4>
- <title>* <application>LPD</application> aanzetten</title>
+ <title><application>LPD</application> aanzetten</title>
- <para></para>
+ <para>&man.lpd.8; wordt gestart vanuit
+ <filename>/etc/rc</filename> door de variabele
+ <literal>lpd_enable</literal>. Standaard staat deze
+ variabele op <literal>NO</literal>. Als dit nog niet is
+ gedaan, voeg dan de volgende regel toe aan
+ <filename>/etc/rc.conf</filename> en herstart de
+ computer:</para>
+
+ <programlisting>lpd_enable="YES"</programlisting>
+
+ <para>Of voer het commando &man.lpd.8; uit:</para>
+
+ <screen>&prompt.root; <userinput>lpd</userinput></screen>
</sect4>
<sect4 id="printing-trying">
- <title>* De printer uitproberen</title>
+ <title>Printer uitproberen</title>
+
+ <para>Nu volgt het laatste onderdeel van de eenvoudige
+ <application>LPD</application> installatie. Helaas zijn
+ felicitaties nog niet gepast. De printer moet worden
+ getest en eventuele problemen moeten worden opgelost. Om
+ de installatie te testen kan iets afgedrukt worden.
+ Afdrukken gaat met het commando &man.lpr.1;. Dit stuurt
+ een opdracht naar een printer.</para>
+
+ <para>Het programma &man.lpr.1; is te combineren met het
+ programma &man.lptest.1; uit <link
+ linkend="printing-testing">Printercommunicatie
+ controleren </link> om tekst te genereren.</para>
+
+ <para><emphasis>Om de eenvoudige
+ <application>LPD</application> installatie te
+ testen:</emphasis></para>
- <para></para>
+ <screen>&prompt.root; <userinput>lptest 20 5 | lpr -P<replaceable>printernaam</replaceable></userinput></screen>
+
+ <para>Hier is <replaceable>printernaam</replaceable> de naam
+ van een printer (of een alias) die in
+ <filename>/etc/printcap</filename> wordt genoemd. De
+ standaard printer kan worden getest door bij het aanroepen
+ van &man.lpr.1; de optie <option>-P</option> weg te laten.
+ Nogmaals: test een &postscript;-printer door een
+ &postscript;-programma naar een printer te sturen en maak
+ geen gebruik van &man.lptest.1;. Dit kan door het
+ programma in een bestand op te slaan en de volgende
+ commandoregel uit te voeren: <command>lpr
+ <replaceable>bestand</replaceable></command>.</para>
+
+ <para>Voor een &postscript;-printer moet het resultaat van
+ het programma verschijnen. Als gebruik wordt gemaakt van
+ &man.lptest.1; ziet het resulaat er ongeveer zo uit:</para>
+
+ <programlisting>!"#$%&amp;'()*+,-./01234
+"#$%&amp;'()*+,-./012345
+#$%&amp;'()*+,-./0123456
+$%&amp;'()*+,-./01234567
+%&amp;'()*+,-./012345678</programlisting>
+
+ <para>Om de printer uitvoeriger te testen kunnen grotere
+ programma's geprobeerd worden (voor taal gebaseerde
+ printers) of kan &man.lptest.1; aangeroepen worden met
+ andere argumenten. Bijvoorbeeld: <command>lptest 80
+ 60</command>, drukt 60 regels af met elk 80
+ karakters.</para>
+
+ <para>Als de printer niet werkt, lees dan verder in <link
+ linkend="printing-troubleshooting">Problemen
+ oplossen</link>.</para>
</sect4>
</sect3>
</sect2>
</sect1>
<sect1 id="printing-advanced">
- <title>* Geavanceerde printer instellingen</title>
+ <title>Geavanceerde printerinstallatie</title>
+
+ <para>Deze sectie behandelt het gebruik van filters om speciaal
+ opgemaakte tekst en voorbladen af te drukken, via het netwerk af
+ te drukken en printergebruik te beperken en statistieken bij te
+ houden.</para>
<sect2 id="printing-advanced-filter-intro">
- <title>* Filters</title>
+ <title>Filters</title>
+
+ <indexterm>
+ <primary>afdrukken</primary>
+
+ <secondary>filters</secondary>
+ </indexterm>
+
+ <para>Hoewel <application>LPD</application> veel van het
+ afdrukwerk afhandelt (netwerkverkeer, wachtrijafhandeling,
+ toegangscontrole, enzovoort), wordt het
+ <emphasis>echte</emphasis> werk door de filters gedaan.
+ Filters zijn programma's die met een printer communiceren en
+ inspelen op printerspecifieke eigenschappen. In de eenvoudige
+ printeropzet is een filter ge&iuml;nstalleerd voor platte
+ tekst, een zeer eenvoudig filter dat met de meeste printers zou
+ moeten werken (<link linkend="printing-textfilter">Tekstfilter
+ installeren</link>).</para>
+
+ <para>Om echter gebruik te maken van formaatomzetting,
+ printeradministratie, printerspecifieke aanpassingen,
+ enzovoort, is het nodig te weten hoe filters werken.
+ Uiteindelijk is het de verantwoordelijkheid van het filter om
+ deze zaken af te handelen. Het slechte nieuws is dat
+ <emphasis>de beheerder</emphasis> in het meerderdeel van de
+ gevallen het filter moet aanleveren. Het goede nieuws is dat
+ veel filters algemeen beschikbaar zijn en als ze dat niet zijn,
+ zijn ze vaak makkelijk te schrijven.</para>
+
+ <para>&os; heeft een ingebouwd filter,
+ <filename>/usr/libexec/lpr/lpf</filename>, die met veel
+ printers werkt die platte tekst kunnen afdrukken. Het filter
+ regelt backspace en tabs in bestanden en administreert
+ printergebruik, maar dat is zo'n beetje alles wat dit filter
+ doet. Er zijn ook diverse filters en filtercomponenten in de
+ &os; <link linkend="ports">Portscollectie</link>.</para>
+
+ <para>Hieronder wordt het volgende beschreven:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>In <link linkend="printing-advanced-filters">Hoe
+ filters werken</link> staat een overzicht van de rol die
+ een filter speelt in het afdrukproces. Lees dat onderdeel
+ om een indruk te krijgen wat er <quote>onder de
+ motorkap</quote> gebeurt als
+ <application>LPD</application> filters gebruikt. Deze
+ kennis helpt mogelijke problemen te voorkomen of op te
+ lossen als meerdere filters worden ge&iuml;nstalleerd voor
+ printers;</para>
+ </listitem>
+
+ <listitem>
+ <para><application>LPD</application> gaat er van uit dat elke
+ printer standaard platte tekst af kan drukken. Dit geeft
+ problemen voor &postscript; (of andere op taal gebaseerde)
+ printers die niet in staat zijn direct platte tekst af te
+ drukken. In <link
+ linkend="printing-advanced-if-conversion">Platte tekst
+ op &postscript;-printers afdrukken</link> staat wat er
+ kan worden gedaan om dit probleem te verhelpen. Lees
+ verder in dit onderdeel als het om &postscript;-printers
+ gaat;</para>
+ </listitem>
+
+ <listitem>
+ <para>Voor veel programma's is &postscript; een populair
+ uitvoerformaat. Sommige mensen schrijven &postscript; code
+ zelfs direct. &postscript;-printers zijn echter kostbaar.
+ In <link linkend="printing-advanced-ps">&postscript;
+ simuleren op niet-&postscript;-printers</link> staat hoe
+ de tekstfilter van een printer aangepast moet worden zodat
+ die &postscript; accepteert en afdrukt op een
+ <emphasis>niet-&postscript;</emphasis>-printer. Dit
+ onderdeel is van toepassing voor
+ niet-&postscript;-printers;</para>
+ </listitem>
+
+ <listitem>
+ <para>In <link
+ linkend="printing-advanced-convfilters">Conversiefilters</link>
+ wordt een methode beschreven om de conversie van bepaalde
+ bestandsformaten te automatiseren, zoals van grafische of
+ tekstopmaak programma's, naar formaten die een printer kan
+ begrijpen. Na het lezen van dit onderdeel is een beheerder
+ in staat om een printer zodanig in te stellen dat
+ gebruikers <command>lpr -t</command> kunnen invoeren om
+ troff gegevens af te drukken, <command>lpr -d</command> om
+ &tex; DVI gegevens af te drukken of <command>lpr
+ -v</command> om rasterplaatjes af te drukken, enzovoorts.
+ Het wordt aangeraden deze sectie te lezen;</para>
+ </listitem>
+
+ <listitem>
+ <para>In <link
+ linkend="printing-advanced-of">Uitvoerfilters</link>
+ wordt een niet vaak gebruikte functionaliteit van
+ <application>LPD</application> behandeld: uitvoerfilters.
+ Tenzij voorbladen worden afgedrukt (<link
+ linkend="printing-advanced-header-pages">Voorbladen</link>),
+ kan deze sectie waarschijnlijk overgeslagen worden;</para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="printing-advanced-lpf">lpf: een
+ tekstfilter</link> beschrijft <command>lpf</command>, een
+ redelijk complete, eenvoudige tekstfilter voor lineprinters
+ (en laserprinters die zich als lineprinters voordoen) dat
+ wordt geleverd bij &os;. Voor een snelle manier om
+ printeradministratie aan de praat te krijgen voor platte
+ tekst of voor printers waar rook uit komt bij het zien van
+ backspace karakters, is het serieus te overwegen gebruik te
+ maken van <command>lpf</command>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <para>Een kopie van de scripts die hieronder worden beschreven,
+ staan in de map <filename
+ class="directory">/usr/share/examples/printing</filename>.</para>
+ </note>
<sect3 id="printing-advanced-filters">
- <title>* Hoe filters werken</title>
+ <title>Hoe filters werken</title>
+
+ <para>Zoals eerder genoemd, is een filter een programma dat
+ wordt uitgevoerd door <application>LPD</application> voor het
+ afhandelen van het apparaatafhankelijke deel van de
+ communicatie met een printer.</para>
+
+ <para>Als <application>LPD</application> een bestand wil
+ afdrukken uit een afdrukopdracht, start het een
+ filterprogramma. Het koppelt de standaard invoer van de
+ filter aan het af te drukken bestand, de standaard uitvoer
+ aan de printer en de standaard foutmelding aan het
+ logboekbestand voor foutmeldingen (zoals opgegeven via de
+ optie <literal>lf</literal> in
+ <filename>/etc/printcap</filename> of standaard
+ <filename>/dev/console</filename>).</para>
+
+ <indexterm>
+ <primary><command>troff</command></primary>
+ </indexterm>
+
+ <para>Welk filter <application>LPD</application> start en de
+ argumenten van het filter hangen af van wat er in het bestand
+ <filename>/etc/printcap</filename> wordt opgegeven en de
+ argumenten die de gebruiker geeft op de &man.lpr.1;
+ commandoregel. Als een gebruiker bijvoorbeeld
+ <command>lpr -t</command> ingeeft, start
+ <application>LPD</application> het filter troff, zoals wordt
+ opgegeven via de optie <literal>tf</literal> voor de
+ betreffende printer. Als een gebruiker platte tekst wilt
+ afdrukken, dan wordt het filter <literal>if</literal> gestart
+ (dit klopt bijna: zie <link
+ linkend="printing-advanced-of">Uitvoerfilters</link> voor
+ de details).</para>
+
+ <para>Er zijn drie soorten filters die in
+ <filename>/etc/printcap</filename> kunnen worden
+ opgegeven:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het tekstfilter, dat in de
+ <application>LPD</application> documentatie verwarrend
+ genoeg <emphasis>input filter</emphasis> wordt genoemd,
+ verwerkt het afdrukken van gewone tekst. Beschouw het
+ als de standaard filter. <application>LPD</application>
+ verwacht dat elke printer standaard platte tekst kan
+ afdrukken en het is de taak van de tekstfilter om er voor
+ te zorgen dat backspaces, tabs en andere speciale
+ karakters de printer niet in de war sturen. In een
+ omgeving waar moet worden bijgehouden hoeveel er wordt
+ afgedrukt, moet de tekstfilter ook administreren hoeveel
+ pagina's er zijn afgedrukt. Dit gaat meestal door het
+ aantal afgedrukte regels te tellen en dit te vergelijken
+ met het aantal regels per pagina dat door de printer
+ wordt ondersteund. De tekstfilter wordt aangeroepen met
+ de volgende lijst argumenten:</para>
+
+ <cmdsynopsis>
+ <command>filter-name</command>
+ <arg>-c</arg>
+ <arg choice="plain">-w<replaceable>width</replaceable></arg>
+ <arg choice="plain">-l<replaceable>length</replaceable></arg>
+ <arg choice="plain">-i<replaceable>indent</replaceable></arg>
+ <arg choice="plain">-n <replaceable>login</replaceable></arg>
+ <arg choice="plain">-h <replaceable>host</replaceable></arg>
+ <arg choice="plain"><replaceable>acct-file</replaceable></arg>
+ </cmdsynopsis>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-c</option></term>
+
+ <listitem>
+ <para>wordt gebruikt als de afdrukopdracht is
+ gegeven met <command>lpr -l</command></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>width</replaceable></term>
+
+ <listitem>
+ <para>is de waarde van de optie
+ <literal>pw</literal> (<emphasis>page
+ width</emphasis>: pagina breedte), zoals
+ opgegeven in
+ <filename>/etc/printcap</filename>, standaard
+ 132</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>length</replaceable></term>
+
+ <listitem>
+ <para>is de waarde van de optie
+ <literal>pl</literal> (<emphasis>page
+ length</emphasis>: paginalengte), standaard
+ 66</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>indent</replaceable></term>
+
+ <listitem>
+ <para>geeft aan hoeveel wordt ingesprongen door
+ <command>lpr -i</command>, standaard 0</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>login</replaceable></term>
+
+ <listitem>
+ <para>de gebruikersnaam van de gebruiker die de
+ afdrukopdracht gaf</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>host</replaceable></term>
+
+ <listitem>
+ <para>de hostnaam waar de afdrukopdracht gegeven
+ is</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>acct-file</replaceable></term>
- <para></para>
+ <listitem>
+ <para>de naam van het administratiebestand zoals
+ opgegeven via de optie
+ <literal>af</literal>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+
+ <indexterm>
+ <primary>afdrukken</primary>
+
+ <secondary>filters</secondary>
+ </indexterm>
+
+ <listitem>
+ <para>Een <emphasis>conversiefilter</emphasis> converteert
+ een specifiek bestandsformaat naar een formaat dat een
+ printer begrijpt. Bijvoorbeeld: ditroff
+ typesettinggegevens kunnen niet direct worden afgedrukt,
+ maar er bestaat wel een conversiefilter om
+ ditroffgegevens te converteren naar een formaat dat een
+ printer kan verteren en afdrukken. Dit wordt in <link
+ linkend="printing-advanced-convfilters">Conversiefilters</link>
+ beschreven. Conversiefilters zijn ook nodig om
+ printergebruik te administreren, mocht dat nodig zijn.
+ Conversiefilters worden met de volgende argumenten
+ aangeroepen:</para>
+
+ <cmdsynopsis>
+ <command>filter-name</command>
+ <arg choice="plain">-x<replaceable>pixel-width</replaceable></arg>
+ <arg choice="plain">-y<replaceable>pixel-height</replaceable></arg>
+ <arg choice="plain">-n <replaceable>login</replaceable></arg>
+ <arg choice="plain">-h <replaceable>host</replaceable></arg>
+ <arg choice="plain"><replaceable>acct-file</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>Hier is <replaceable>pixel-width</replaceable> de
+ waarde van de de optie <literal>px</literal> (standaard
+ 0) en <replaceable>pixel-height</replaceable> is de
+ waarde van de optie <literal>py</literal> (standaard
+ 0).</para>
+ </listitem>
+
+ <listitem>
+ <para>Het <emphasis>uitvoerfilter</emphasis> wordt alleen
+ gebruikt als er geen tekstfilter is of als er voorbladen
+ worden afgedrukt. De ervaring leert dat uitvoerfilters
+ zelden worden gebruikt. In sectie <link
+ linkend="printing-advanced-of">Uitvoerfilters</link>
+ worden ze beschreven Er zijn slechts twee argumenten die
+ aan een uitvoerfilter worden meegegeven:</para>
+
+ <cmdsynopsis>
+ <command>filter-name</command>
+ <arg choice="plain">-w<replaceable>width</replaceable></arg>
+ <arg choice="plain">-l<replaceable>length</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>Die zijn identiek aan de argumenten
+ <option>-w</option> en <option>-l</option> van het
+ tekstfilter.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Filters moeten <emphasis>afsluiten</emphasis> met de
+ volgende waarde:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>exit 0</term>
+
+ <listitem>
+ <para>Als het filter een bestand succesvol heeft
+ afgedrukt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>exit 1</term>
+
+ <listitem>
+ <para>Als het filter niet geslaagd is om een bestand af
+ te drukken, maar wil dat <application>LPD</application>
+ het nogmaals probeert. <application>LPD</application>
+ herstart het filter als die afsluit met deze
+ status.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>exit 2</term>
+
+ <listitem>
+ <para>Als het filter niet geslaagd is om een bestand af
+ te drukken, maar niet wil dat
+ <application>LPD</application> het nogmaals probeert.
+ <application>LPD</application> verwijdert het bestand
+ uit de wachtrij.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Het tekstfilter dat bij &os; wordt geleverd,
+ <filename>/usr/libexec/lpr/lpf</filename>, benut de
+ argumenten voor paginabreedte en -lengte om te bepalen
+ wanneer een nieuwe pagina moet worden begonnen en om het
+ printergebruik bij te houden. Het gebruikt de argumenten
+ voor login, host en administratiebestand om accountingregels
+ aan te maken.</para>
+
+ <para>Controleer bij het zoeken naar filters of ze
+ LPD-compatibel zijn. Zo ja, dan ondersteunen ze de
+ argumenten zoals hierboven beschreven. Zorg bij het zelf
+ schrijven van filters voor algemeen gebruik dat ze dezelfde
+ argumenten en exitcodes ondersteunen.</para>
</sect3>
<sect3 id="printing-advanced-if-conversion">
- <title>* Platte tekst op &postscript; printers afdrukken</title>
+ <title>Platte tekst op &postscript;-printers afdrukken</title>
+
+ <indexterm><primary>afdrukopdrachten</primary></indexterm>
+
+ <para>Als een computer en &postscript; (of andere op taal
+ gebaseerde) printer maar &eacute;&eacute;n gebruiker hebben
+ die belooft nooit platte tekst naar de printer te sturen of
+ programma's te gebruiken die dat doen, dan is dit onderdeel
+ overbodig.</para>
+
+ <para>Als gebruikers zowel zowel &postscript; als platte tekst
+ naar een printer willen sturen, dan is het aan te raden de
+ printerinstellingen hierop aan te passen. Hiervoor moet het
+ tekstfiler bij elke nieuwe opdracht bepalen of het om platte
+ tekst of &postscript; gaat. Alle &postscript;-opdrachten
+ beginnen met <literal>%!</literal> (raadpleeg de
+ printerhandleiding voor andere printertalen). Als dit de
+ eerste twee karakters zijn van een opdracht is het
+ &postscript; en kan de rest van een opdracht direct
+ doorgestuurd worden. Is dit niet het geval, dan moet de
+ filter de tekst omzetten in &postscript; en het resultaat
+ afdrukken.</para>
+
+ <para>Hoe gaat dat werken?</para>
+
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>serieel</secondary>
+ </indexterm>
+
+ <para>Voor seri&euml;le printers kan het meest eenvoudig
+ <command>lprps</command> ge&iuml;nstalleerd worden.
+ <command>lprps</command> is een &postscript; afdrukfilter
+ die tweewegcommunicatie met een printer heeft. Het werkt
+ het statusbestand van een printer bij met uitgebreide
+ informatie afkomstig van een printer, zodat gebruikers en
+ beheerders precies kunnen zien wat de status van een printer
+ is (zoals: <errorname>toner bijna op</errorname> of
+ <errorname>papier vastgelopen</errorname>). Maar
+ belangrijker, het omvat het programma <command>psif</command>
+ dat bepaalt of een binnenkomende opdracht platte tekst is en
+ <command>textps</command> (dat ook geleverd wordt met
+ <command>lprps</command>) om opdrachten om te zetten naar
+ &postscript;. Vervolgens wordt een opdracht met
+ <command>lprps</command> naar een printer gestuurd.</para>
+
+ <para><command>lprps</command> is onderdeel van de &os;
+ <link linkend="ports">Portscollectie</link>. De software kan
+ natuurlijk ook handmatig gedownload, gecompileerd en
+ ge&iuml;nstalleerd worden. Nadat <command>lprps</command> is
+ ge&iuml;nstalleerd moet de installatielocatie ervan aan
+ <command>psif</command> worden doorgeven dat onderdeel is van
+ <command>lprps</command>. Als <command>lprps</command> is
+ ge&iuml;nstalleerd via de Portscollectie, gebruik dan
+ het volgende voor de seri&euml;le &postscript;-printer in
+ <filename>/etc/printcap</filename>:</para>
- <para></para>
+ <programlisting>:if=/usr/local/libexec/psif:</programlisting>
+
+ <para>Ook moet de optie <literal>rw</literal> worden opgeven,
+ die <application>LPD</application> vertelt om een printer in
+ read-write modus te openen.</para>
+
+ <para>Als een parallelle &postscript;-printer wordt ingesteld
+ (en dus geen tweewegcommunicatie toegepast kan worden met de
+ printer, zoals vereist door <command>lprps</command>), dan
+ kan het volgende shellscript gebruikt worden als
+ tekstfilter:</para>
+
+ <programlisting>#!/bin/sh
+#
+# psif - Druk &postscript; of platte tekst af op een &postscript;
+# printer. Script versie; NIET de versie die wordt geleverd bij lprps
+# Ge&iuml;nstalleerd in /usr/local/libexec/psif
+#
+
+IFS="" read -r first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
+
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # &postscript; opdracht, afdrukken.
+ #
+ echo "$first_line" &amp;&amp; cat &amp;&amp; printf "\004" &amp;&amp; exit 0
+ exit 2
+else
+ #
+ # Platte tekst, converteren en dan afdrukken.
+ #
+ ( echo "$first_line"; cat ) | /usr/local/bin/textps &amp;&amp; printf "\004" &amp;&amp; exit 0
+ exit 2
+fi</programlisting>
+
+ <para>In bovenstaand script is <command>textps</command> een
+ programma dat ge&iuml;nstalleerd is om platte tekst om te
+ zetten naar &postscript;. Elk tekst-naar-&postscript;
+ programma volstaat. De &os; <link
+ linkend="ports">Portscollectie</link> bevat een uitgebreid
+ tekst-naar-&postscript;-programma, <literal>a2ps</literal>,
+ dat wellicht handig is om te gebruiken.</para>
</sect3>
<sect3 id="printing-advanced-ps">
- <title>* &postscript; simuleren op niet &postscript;
- printers</title>
+ <title>&postscript; simuleren op
+ niet-&postscript;-printers</title>
+
+ <indexterm>
+ <primary>&postscript;</primary>
+
+ <secondary>emuleren</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>Ghostscript</primary>
+ </indexterm>
+
+ <para>&postscript; is <emphasis>de facto</emphasis> de
+ standaard voor op hoge kwaliteit typesetten en afdrukken.
+ &postscript; is echter een <emphasis>dure</emphasis>
+ standaard. Gelukkig heeft Aladdin Enterprises een gratis
+ &postscript; kloon, <application>Ghostscript</application>,
+ die werkt onder &os;. Ghostscript kan de meeste &postscript;
+ bestanden lezen en ze omzetten naar verschillende soorten
+ apparaten, waaronder veel niet-&postscript;-printers. Door
+ Ghostscript te installeren en een printer gebruik te laten
+ maken van een speciaal tekstfilter, kan een
+ niet-&postscript;-printer zich gedragen als een echte
+ &postscript;-printer.</para>
+
+ <para>Ghostscript is beschikbaar via de &os; <link
+ linkend="ports">Portscollectie</link>. Het kan ook vrij
+ makkelijk gedownload, gecompileerd en ge&iuml;nstalleerd
+ worden.</para>
+
+ <para>Om &postscript; te simuleren moet een tekstfilter
+ detecteren of het een &postscript; bestand aan het afdrukken
+ is. Zo niet, dan stuurt het filter het bestand direct naar
+ een printer, anders gebruikt het filter Ghostscript om het
+ bestand om te zetten naar een formaat dat door een printer
+ wordt begrepen.</para>
+
+ <para>Een voorbeeld: het volgende script is een tekstfilter
+ voor HP DeskJet 500 printers. Voor andere printers moet het
+ argument <option>-sDEVICE</option> argument voor het commando
+ <command>gs</command> (Ghostscript) vervangen worden. (Met
+ <command>gs -h</command> wordt een lijst met apparaten
+ getoond worden die de huidige Ghostscript installatie
+ ondersteunt.)</para>
- <para></para>
+ <programlisting>#!/bin/sh
+#
+# ifhp - Druk Ghostscript-gesimuleerd &postscript; af op een DeskJet
+# 500. Ge&iuml;nstalleerd in /usr/local/libexec/ifhp
+
+#
+# Behandel LF als CR+LF (om een "trap-effect" op HP/PCL
+# printer te voorkomen):
+#
+printf "\033&amp;k2G" || exit 2
+
+#
+# Lees de eerste twee karakters van het bestand
+#
+IFS="" read -r first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
+
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # Het is &postscript;. Gebruik Ghostscript om te converteren
+ # en druk het af.
+ #
+ /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
+ -sOutputFile=- - &amp;&amp; exit 0
+else
+ #
+ # Platte tekst of HP/PCL, dus direct afdrukken; druk een
+ # pagina-einde af om de laatste pagina te ejecteren.
+ #
+ echo "$first_line" &amp;&amp; cat &amp;&amp; printf "\033&amp;l0H" &amp;&amp;
+exit 0
+fi
+
+exit 2</programlisting>
+
+ <para>Tot slot moet <application>LPD</application> op de hoogte
+ gebracht worden van het filter via de optie
+ <literal>if</literal>:</para>
+
+ <programlisting>:if=/usr/local/libexec/ifhp:</programlisting>
+
+ <para>Dat is alles. Nu kan <command>lpr plain.text</command>
+ en <filename>lpr watdanook.ps</filename> ingevoerd worden en
+ beiden worden juist afgedrukt.</para>
</sect3>
<sect3 id="printing-advanced-convfilters">
- <title>* Conversie filters</title>
+ <title>Conversiefilters</title>
+
+ <para>Na de eenvoudige installatie, zoals beschreven in <link
+ linkend="printing-simple">Eenvoudige
+ printerinstallatie</link>, te hebben voltooid, is het
+ waarschijnlijk wenselijk om conversiefilters te installeren
+ voor favoriete bestandsformaten (naast platte
+ ASCII-tekst).</para>
<sect4>
- <title>* Waarom conversie filters installeren?</title>
+ <title>Waarom conversiefilters installeren?</title>
+
+ <indexterm>
+ <primary>&tex;</primary>
+
+ <secondary>DVI bestanden afdrukken</secondary>
+ </indexterm>
+
+ <para>Conversiefilters maken het afdrukken van verschillende
+ bestanden eenvoudig. Stel dat veel gebruik gemaakt wordt
+ van het tekstverwerkingsprogramma &tex; en een &postscript;
+ printer. Elke keer als door &tex; een DVI-bestand wordt
+ gegenereerd, kan dat niet direct afgedrukt worden. Het
+ DVI-bestand moet omgezet worden naar &postscript;. De te
+ geven opdrachten zijn de volgende:</para>
+
+ <screen>&prompt.user; <userinput>dvips zeewieranalyse.dvi</userinput>
+&prompt.user; <userinput>lpr zeewieranalyse.ps</userinput></screen>
+
+ <para>Na installatie van een conversiefilter voor
+ DVI-bestanden kan deze handmatige conversie overgeslagen
+ worden door <application>LPD</application> de conversie te
+ laten uitvoeren. Elke keer als een DVI-bestand wordt
+ afgedrukt, hoeft alleen de volgende opdracht gegeven te
+ worden:</para>
- <para></para>
+ <screen>&prompt.user; <userinput>lpr -d zeewieranalyse.dvi</userinput></screen>
+
+ <para><application>LPD</application> voert de
+ DVI-bestandsconversie uit door <option>-d</option> te
+ geven. In <link
+ linkend="printing-lpr-options-format">Opties voor opmaak
+ en conversie</link> staat een lijst van
+ conversie-opties.</para>
+
+ <para>Voor elke conversie-optie moet een
+ <emphasis>conversiefilter</emphasis> ge&iuml;nstalleerd
+ worden en moet in <filename>/etc/printcap</filename> de
+ locatie worden opgegeven. Een conversiefilter is als de
+ tekstfilter voor de eenvoudige printerinstallatie (<link
+ linkend="printing-textfilter">Tekstfilter
+ installeren</link>), behalve dat in plaats van platte
+ tekst af te drukken, de conversiefilter het bestand
+ converteert naar een formaat dat een printer
+ begrijpt.</para>
</sect4>
<sect4>
- <title>* Welke conversie filters moet ik installeren?</title>
+ <title>Welke conversiefilters installeren?</title>
+
+ <para>Installeer de conversiefilters die nodig zijn. Als
+ veel DVI bestanden worden afgedrukt, dan is het handig een
+ DVI-filter te installeren. Als veel troff wordt afgedrukt,
+ dan is het waarschijnlijk handig een troff-filter te
+ installeren.</para>
+
+ <para>De volgende tabel geeft een samenvatting van filters
+ waarmee <application>LPD</application> kan werken, hoe ze
+ in <filename>/etc/printcap</filename> kunnen worden
+ aangeroepen en hoe ze met <command>lpr</command> kunnen
+ worden aangeroepen:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Bestandsformaat</entry>
+
+ <entry><filename>/etc/printcap</filename>
+ optie</entry>
+
+ <entry><command>lpr</command> optie</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>FORTRAN-tekst</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>raster</entry>
- <para></para>
+ <entry><literal>vf</literal></entry>
+
+ <entry><option>-v</option></entry>
+ </row>
+
+ <row>
+ <entry>platte tekst</entry>
+
+ <entry><literal>if</literal></entry>
+
+ <entry>geen, <option>-p</option>, of
+ <option>-l</option></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>In het voorbeeld waarbij <command>lpr -d</command>
+ wordt gebruikt, moet voor de printer een optie
+ <literal>df</literal> gedefinieerd staan in
+ <filename>/etc/printcap</filename>.</para>
+
+ <indexterm><primary>FORTRAN</primary></indexterm>
+
+ <para>Ondanks wat anderen mogelijk beweren, zijn formaten als
+ FORTRAN-tekst en plot waarschijnlijk verouderd. Dit biedt
+ de mogelijkheid een nieuwe betekenis te geven aan deze
+ opties door zelf een filter te installeren. Stel dat
+ direct Printerleaf bestanden afgedrukt moeten worden
+ (bestanden van het DTP programma Interleaf), maar nooit
+ plotbestanden worden afgedrukt. Dan kan een Printerleaf
+ conversiefilter ge&iuml;nstalleerd worden onder de optie
+ <literal>gf</literal> en gebruikers kunnen
+ ge&iuml;nstrueerd worden om <command>lpr -g</command> te
+ gebruiken om Printerleaf bestanden af te drukken.</para>
</sect4>
<sect4>
- <title>* Conversie filters installeren</title>
+ <title>Conversiefilters installeren</title>
+
+ <para>Aangezien conversiefilters programma's zijn die niet
+ vallen onder de &os; basisinstallatie, kunnen ze het best
+ onder <filename>/usr/local</filename> geplaatst worden. De
+ map <filename>/usr/local/libexec</filename> is een
+ veelgebruikte locatie, omdat hier programma's te vinden
+ zijn die alleen door <application>LPD</application>
+ gebruikt worden. Gewone gebruikers hoeven ze nooit te
+ gebruiken.</para>
+
+ <para>Om een conversiefilter te activeren, moet de
+ bestandslocatie onder de juiste optie voor de betreffende
+ printer in <filename>/etc/printcap</filename> opgegeven
+ worden.</para>
+
+ <para>In het onderstaande voorbeeld wordt de
+ DVI-conversiefilter toegevoegd onder de sectie van de
+ printer <literal>bamboo</literal>. Hieronder staat opnieuw
+ het voorbeeldbestand <filename>/etc/printcap</filename>, nu
+ met de nieuwe optie <literal>df</literal> voor de printer
+ <literal>bamboo</literal>:</para>
+
+ <programlisting>#
+# /etc/printcap voor host rose - df filter voor bamboo toegevoegd
+#
+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>De DVI filter is een shellscript met de naam
+ <filename>/usr/local/libexec/psdf</filename>. Het script
+ ziet er als volgt uit:</para>
- <para></para>
+ <programlisting>#!/bin/sh
+#
+# psdf - DVI naar PostScript afdrukfilter
+# Ge&iuml;nstalleerd in /usr/local/libexec/psdf
+#
+# Aangeroepen door lpd wanneer een gebruiker lpr -d uitvoert
+#
+exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"</programlisting>
+
+ <para>Dit script roept <command>dvips</command> in
+ filtermodus aan (het <option>-f</option> argument) op de
+ standaard uitvoer, de af te drukken opdracht. Vervolgens
+ start het &postscript; afdrukfilter
+ <command>lprps</command> (zie <link
+ linkend="printing-advanced-if-conversion">Platte tekst op
+ &postscript;-printers afdrukken</link>) met de argumenten
+ die <application>LPD</application> aan het script
+ doorgeeft. <command>lprps</command> gebruikt deze
+ argumenten om de afgedrukte pagina's te
+ administreren.</para>
</sect4>
<sect4>
- <title>* Meer conversie filters voorbeelden</title>
+ <title>Meer conversiefilter voorbeelden</title>
+
+ <para>Aangezien er geen vaste procedure is om
+ conversiefilters te installeren nu enkele voorbeelden.
+ Gebruik deze als hulp bij het zelf maken van filters.
+ Gebruik ze zonder aanpassingen indien mogelijk.</para>
+
+ <para>Dit voorbeeldscript is een raster (eigenlijk een
+ GIF-bestand) conversiefilter voor een HP LaserJet III-Si
+ printer:</para>
+
+ <programlisting>#!/bin/sh
+#
+# hpvf - Converteer GIF bestanden naar HP/PCL, druk vervolgens af
+# Ge&iuml;nstalleerd in /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>Het script converteert achtereenvolgens het GIF-bestand
+ naar een PNM-bestand (portable anymap), een PGM-bestand
+ (portable graymap), een PMB-bestand (portable bitmap) en
+ tenslotte naar LaserJet/PCL formaat.</para>
+
+ <para>Een <filename>/etc/printcap</filename> bestand dat
+ bovenstaand filter gebruikt ziet er als volgt uit:</para>
+
+ <programlisting>#
+# /etc/printcap voor host orchid
+#
+teak|hp|laserjet|HP 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>Het volgende script is een conversiefilter voor troff
+ gegevens afkomstig van het groff typesettingsysteem voor
+ de &postscript;-printer <literal>bamboo</literal>:</para>
+
+ <programlisting>#!/bin/sh
+#
+# pstf - Converteert groff's troffgegevens naar PS, drukt vervolgens af.
+# Ge&iuml;nstalleerd in /usr/local/libexec/pstf
+#
+exec grops | /usr/local/libexec/lprps "$@"</programlisting>
+
+ <para>Bovenstaande script maakt eveneens gebruik van
+ <command>lprps</command> om de communicatie met een printer
+ af te handelen. Als een printer op een parallelle poort
+ is aangesloten, ziet het er als volgt uit:</para>
+
+ <programlisting>#!/bin/sh
+#
+# pstf - Converteert groff's troff naar PS, drukt vervolgens af.
+# Ge&iuml;nstalleerd in /usr/local/libexec/pstf
+#
+exec grops</programlisting>
+
+ <para>Dat is alles. In <filename>/etc/printcap</filename>
+ moet het volgende toegevoegd worden om het filter
+ beschikbaar te maken:</para>
- <para></para>
+ <programlisting>:tf=/usr/local/libexec/pstf:</programlisting>
+
+ <para>Hieronder een voorbeeld waarvan FORTRAN-programmeurs
+ waarschijnlijk tranen in hun ogen krijgen: een
+ FORTRAN-tekstfilter voor een willekeurige printer die in
+ staat is platte tekst af te drukken. Het filter wordt
+ actief gemaakt voor <literal>teak</literal>:</para>
+
+ <programlisting>#!/bin/sh
+#
+# hprf - FORTRAN tekstfilter voor LaserJet 3si:
+# Ge&iuml;nstalleerd in /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>De onderstaande regel wordt toegevoegd aan
+ <filename>/etc/printcap</filename> voor de printer
+ <literal>teak</literal> om het filter beschikbaar te
+ maken:</para>
+
+ <programlisting>:rf=/usr/local/libexec/hprf:</programlisting>
+
+ <para>Het laatste voorbeeld is wellicht meer complex. Er
+ wordt een DVI-filter toegevoegd voor de eerder genoemde
+ LaserJet printer <literal>teak</literal>. Eerst het
+ makkelijke gedeelte: in <filename>/etc/printcap</filename>
+ wordt de locatie van de DVI-filter opgegeven:</para>
+
+ <programlisting>:df=/usr/local/libexec/hpdf:</programlisting>
+
+ <para>Nu het moeilijke gedeelte: het schrijven van het
+ filter. Daarvoor is een
+ DVI-naar-LaserJet/PCL conversieprogramma nodig. De &os;
+ <link linkend="ports">Portscollectie</link> heeft er een:
+ <command>dvi2xx</command>. Door dit package te installeren
+ komt het programma dat nodig is beschikbaar,
+ <command>dvilj2p</command>, waarmee DVI geconverteerd kan
+ worden naar LaserJet IIp, LaserJet III en
+ LaserJet 2000 formaten.</para>
+
+ <para><command>dvilj2p</command> maakt het filter
+ <command>hpdf</command> redelijk complex, omdat
+ <command>dvilj2p</command> niet van de standaard invoer kan
+ lezen. Het wil werken met een bestandsnaam. Nog lastiger
+ is dat de bestandsnaam moet eindigen op
+ <filename>.dvi</filename>, zodat moeilijk gebruik
+ gemaakt kan worden van <filename>/dev/fd/0</filename> als
+ standaard. Dit probleem kan omzeild worden door een
+ (symbolische) link aan te maken van een tijdelijk bestand
+ (eindigend op <filename>.dvi</filename>) naar
+ <filename>/dev/fd/0</filename>. Hiermee wordt
+ <command>dvilj2p</command> gedwongen van de standaard
+ invoer te lezen.</para>
+
+ <para>De enige andere hobbel die genomen moet worden, is dat
+ <filename>/tmp</filename> niet gebruikt kan worden als
+ tijdelijke link. Symbolische links zijn eigendom van de
+ gebruiker en groep <username>bin</username>. Het filter
+ wordt uitgevoerd door de gebruiker
+ <username>daemon</username>. De map
+ <filename>/tmp</filename> heeft het sticky-bit aan
+ staan. Het filter kan wel de link aanmaken, maar het is
+ niet mogelijk de link te verwijderen als de opdracht is
+ uitgevoerd, omdat de link eigendom is van een andere
+ gebruiker.</para>
+
+ <para>In plaats hiervan maakt het filter een symbolische link
+ aan in de huidige werkmap, de wachtrijmap (als opgegeven in
+ de optie <literal>sd</literal> in
+ <filename>/etc/printcap</filename>). Dit is een perfecte
+ plaats voor filters om hun werk te doen. Zeker gezien er
+ (soms) meer vrije schijfruimte is in de wachtrijmap dan
+ onder <filename>/tmp</filename>.</para>
+
+ <para>Dit is het uiteindelijke filter:</para>
+
+ <programlisting>#!/bin/sh
+#
+# hpdf - Druk DVI gegevens af op een HP/PCL printer
+# Ge&iuml;nstalleerd in /usr/local/libexec/hpdf
+
+PATH=/usr/local/bin:$PATH; export PATH
+
+#
+# Definieer een functie om tijdelijke bestanden op te ruimen. Deze
+# staan in de huidige map; de wachtrijmap voor de printer.
+#
+cleanup() {
+ rm -f hpdf$$.dvi
+}
+
+#
+# Definieer een functie om fatale fouten te verwerken: geef de
+# opgegeven boodschap weer en sluit af met 2. Afsluiten met 2 vertelt
+# LPD niet nog eens te proberen de afdrukopdracht af te drukken.
+#
+fatal() {
+ echo "$@" 1&gt;&amp;2
+ cleanup
+ exit 2
+}
+
+#
+# Als de gebruiker de opdracht annuleert, stuurt LPD een SIGINT, dus
+# ondervang SIGINT (en enkele andere signalen) om onze rommel op te
+# ruimen.
+#
+trap cleanup 1 2 15
+
+#
+# Voor de zekerheid bestaande tijdelijke bestanden opruimen
+#
+cleanup
+
+#
+# Link het DVI invoerbestand aan de standaard invoer (het af te
+# drukken bestand).
+#
+ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
+
+#
+# Make LF = CR+LF
+#
+printf "\033&amp;k2G" || fatal "Cannot initialize printer"
+
+#
+# Converteer en druk af. De retourneerwaarde van dvilj2p lijkt niet
+# betrouwbaar, dus negeren we het.
+#
+dvilj2p -M1 -q -e- dfhp$$.dvi
+
+#
+# Opruimen en afsluiten
+#
+cleanup
+exit 0</programlisting>
</sect4>
<sect4 id="printing-advanced-autoconv">
- <title>* Geautomatiseerde conversie: een alternatief voor
- conversie filters</title>
+ <title>Automatische conversie: een alternatief voor
+ conversiefilters</title>
+
+ <para>Al deze conversiefilters bieden vele mogelijkheden voor
+ afdrukomgevingen, maar dwingen de gebruiker aan te geven
+ (op de &man.lpr.1; commandoregel) welk filter gebruikt
+ moet worden. Als gebruikers niet zo vaardig zijn in het
+ gebruik van computers, wordt het al snel vervelend steeds
+ aan te moeten geven welk filter gebruikt moet worden.
+ Vervelender is echter wanneer een gebruiker een verkeerd
+ filter gebruikt voor een bepaald bestandsformaat. Het
+ resultaat kan zijn dat een printer honderden pagina's
+ papier uitspuugt.</para>
+
+ <para>In plaats van het installeren van conversiefilters, is
+ het te proberen om het (standaard) tekstfilter het
+ bestandstype van het af te drukken bestand te laten
+ detecteren en dan automatisch het juiste conversiefilter
+ aan te laten roepen. Programma's als
+ <command>file</command> kunnen hierbij handig zijn. Voor
+ <emphasis>sommige</emphasis> bestandsformaten kan het
+ moeilijk zijn de verschillen te ontdekken en voor deze
+ bestanden kan alsnog een conversiefilter beschikbaar worden
+ gesteld.</para>
+
+ <indexterm><primary>apsfilter</primary></indexterm>
- <para></para>
+ <indexterm>
+ <primary>afdrukken</primary>
+
+ <secondary>filters</secondary>
+
+ <tertiary>apsfilter</tertiary>
+ </indexterm>
+
+ <para>De &os; <link linkend="ports">Portscollectie</link>
+ heeft een tekstfilter die automatisch bestanden
+ converteert: <command>apsfilter</command>. Het detecteert
+ platte tekst, &postscript; en DVI-bestanden, voert de
+ juiste conversie uit en druk de bestanden af.</para>
</sect4>
</sect3>
<sect3 id="printing-advanced-of">
- <title>* Output filters</title>
+ <title>Uitvoerfilters</title>
+
+ <para>Het wachtrijsysteem <application>LPD</application>
+ ondersteunt een ander type filter waar nog geen aandacht aan
+ is besteed: een uitvoerfilter. Een uitvoerfilter is bedoeld
+ om alleen platte tekst af te drukken, net als een
+ tekstfilter, maar met veel vereenvoudigingen. Wanneer een
+ uitvoerfilter wordt gebruikt, maar geen tekstfilter,
+ dan:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>start <application>LPD</application> een
+ uitvoerfilter voor de gehele opdracht, in plaats van voor
+ elk bestand in de opdracht;</para>
+ </listitem>
+
+ <listitem>
+ <para>biedt <application>LPD</application> de uitvoerfilter
+ niet de voorziening van het identificeren van het begin
+ of eind van de bestanden in de afdrukopdracht;</para>
+ </listitem>
+
+ <listitem>
+ <para>stuurt <application>LPD</application> de
+ gebruikersnaam en de hostnaam niet door aan het filter.
+ Het is dus niet bedoeld om een afdrukadministratie bij
+ te houden. In feite zijn er maar twee argumenten:</para>
+
+ <cmdsynopsis>
+ <command>filter-name</command>
+ <arg choice="plain">-w<replaceable>width</replaceable></arg>
+ <arg choice="plain">-l<replaceable>length</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>Hierbij is <replaceable>width</replaceable> afkomstig
+ van de optie <literal>pw</literal> en
+ <replaceable>length</replaceable> afkomstig van de optie
+ <literal>pl</literal> voor de betreffende printer.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>De eenvoud van een uitvoerfilter is verleidelijk. Als
+ elk bestand in een afdrukopdracht op een nieuwe pagina moet
+ beginnen, is een uitvoerfilter <emphasis>niet
+ geschikt</emphasis>. In dat geval dient een tekstfilter
+ (ook wel invoerfilter) gebruikt te worden (zie <link
+ linkend="printing-textfilter">Tekstfilter
+ installeren</link>. Verder is een uitvoerfilter eigenlijk
+ <emphasis>veel ingewikkelder</emphasis>, omdat de te
+ verwerken bytestroom gecontroleerd moet worden op speciale
+ tekens en steeds signalen naar zichzelf moet sturen in
+ opdracht van <application>LPD</application>.</para>
+
+ <para>Een uitvoerfiler is <emphasis>noodzakelijk</emphasis> als
+ voorbladen gewenst zijn en het nodig is om escape-reeksen of
+ andere initialisatietekens te sturen voor het afdrukken van
+ het voorblad. Maar het is tevens
+ <emphasis>nutteloos</emphasis> als het voorblad voor rekening
+ van de afkomstige gebruiker moet komen, aangezien
+ <application>LPD</application> geen gebruiker of
+ hostinformatie naar het uitvoerfilter stuurt.</para>
+
+ <para>Op een enkele printer staat
+ <application>LPD</application> het gebruik van zowel een
+ uitvoerfilter als van een tekst of andere filter toe. In
+ deze gevallen start <application>LPD</application> het
+ uitvoerfilter alleen voor het afdrukken van het voorblad (zie
+ <link
+ linkend="printing-advanced-header-pages">Voorbladen</link>).
+ <application>LPD</application> verwacht vervolgens van het
+ uitvoerfilter dat deze <emphasis>zichzelf stopt</emphasis>
+ door twee bytes naar het filter te sturen: ASCII 031 gevolgd
+ door ASCII 001. Als een uitvoerfilter deze twee bytes ziet
+ (031, 001), moet die stoppen door een
+ <literal>SIGSTOP</literal> naar zichzelf te sturen. Als
+ <application>LPD</application> klaar is met het uitvoeren van
+ alle andere filters, dan herstart deze het uitvoerfilter door
+ er een <literal>SIGCONT</literal> naar toe te sturen.</para>
+
+ <para>Als er wel een uitvoerfilter, maar
+ <emphasis>geen</emphasis> tekstfilter is en
+ <application>LPD</application> is niet bezig met het
+ verwerken van een opdracht met platte tekst, dan gebruikt
+ <application>LPD</application> het uitvoerfilter voor het
+ afdrukken van de opdracht. Zoals eerder vermeld, drukt de
+ uitvoerfilter elk bestand van de opdracht achter elkaar
+ af zonder pagina-einden of andere signalen voor
+ paginavoortgang. Dit is waarschijnlijk
+ <emphasis>niet</emphasis> gewenst. In bijna alle gevallen is
+ een tekstfilter nodig.</para>
- <para></para>
+ <para>Het programma <command>lpf</command>, dat eerder
+ ge&iuml;ntoduceerd is als tekstfilter, kan ook worden
+ uitgevoerd als uitvoerfilter. Als een ad-hoc uitvoerfilter
+ nodig is, maar het schrijven van de bytedetectie en
+ signaalverzending code niet wenselijk is, dan is
+ <command>lpf</command> het proberen waard.
+ <command>lpf</command> kan ook opgenomen worden in een
+ shellscript om initialisatiecode af te handelen die eventueel
+ nodig is voor een printer.</para>
</sect3>
<sect3 id="printing-advanced-lpf">
- <title>* <command>lpf</command>: een tekstfilter</title>
+ <title><command>lpf</command>: een tekstfilter</title>
- <para></para>
+ <para>Het programma <filename>/usr/libexec/lpr/lpf</filename>
+ uit de gecompileerde &os; distributie is een tekstfilter
+ (invoerfilter) die uitvoer kan inspringen (een opdracht
+ gegeven met <command>lpr -i</command>), karakters onveranderd
+ kan doorlaten (een opdracht gegeven met <command>lpr
+ -l</command>), de printpositie voor backspaces en tabs in
+ de opdracht kan aanpassen en afgedrukte pagina's kan
+ administreren. Het kan ook functioneren als
+ uitvoerfilter.</para>
+
+ <para><command>lpf</command> is geschikt voor vele
+ afdrukomgevingen. Hoewel het zelf niet in staat is
+ initialisatiesequenties naar een printer te sturen, is het
+ vrij eenvoudig om een shellscript te schrijven dat de
+ initialisatie doet en vervolgens <command>lpf</command>
+ aanroept.</para>
+
+ <indexterm><primary>pagina-administratie</primary></indexterm>
+
+ <indexterm>
+ <primary>administreren</primary>
+
+ <secondary>printer</secondary>
+ </indexterm>
+
+ <para>Als <command>lpf</command> afgedrukte pagina's moet
+ administreren, is het nodig om de juiste waarden in te vullen
+ voor de opties <literal>pw</literal> en
+ <literal>pl</literal> in het bestand
+ <filename>/etc/printcap</filename>. Deze waarden worden
+ gebruikt om te bepalen hoeveel tekst er op een pagina past en
+ hoeveel pagina's er in een afdrukopdracht zijn afgedrukt.
+ Zie <link linkend="printing-advanced-acct">Printergebruik
+ administreren</link> voor meer informatie.</para>
</sect3>
</sect2>
<sect2 id="printing-advanced-header-pages">
- <title>* Voorbladen</title>
+ <title>Voorbladen</title>
+
+ <para>Als er <emphasis>veel</emphasis> gebruikers zijn die
+ allemaal verschillende printers gebruiken, dan is het te
+ overwegen gebruik te maken van <emphasis>voorbladen</emphasis>
+ als noodzakelijk kwaad.</para>
+
+ <indexterm>
+ <primary>bannerpagina's</primary>
+
+ <see>voorbladen</see>
+ </indexterm>
+
+ <indexterm><primary>voorbladen</primary></indexterm>
+
+ <para>Voorbladen, in het Engels ook wel bekend als
+ <emphasis>banner</emphasis> of <emphasis>burst</emphasis>
+ pagina's, identificeren wie een bepaalde opdracht heeft
+ afgedrukt. Ze worden meestal bedrukt met grote, dikgedrukte
+ letters, eventueel met een decoratieve rand, zodat ze in een
+ stapel afdrukken opvallen tussen de afgedrukte documenten. Ze
+ maken het gebruikers mogelijk hun afdrukopdracht snel te
+ vinden. Het nadeel van het gebruik van voorbladen is dat er
+ een extra blad moet worden afgedrukt voor elke opdracht,
+ waarmee hun nut niet langer duurt dan een paar minuten.
+ Uiteindelijk belanden ze in een papierbak of afvalberg.
+ Voorbladen gaan vooraf aan elke opdracht, niet aan elk bestand
+ in een opdracht, waardoor de verspilling beperkt blijft.</para>
+
+ <para>Het <application>LPD</application>-systeem kan automatisch
+ voorbladen afdrukken <emphasis>als</emphasis> een printer
+ direct platte tekst kan afdrukken. In geval van een
+ &postscript;-printer, is het nodig een extern programma aan te
+ roepen om een voorblad te genereren (zie <link
+ linkend="printing-advanced-header-pages-ps">Voorbladen op
+ &postscript;-printers</link>.</para>
<sect3 id="printing-advanced-header-pages-enabling">
- <title>* Voorbladen aanzetten</title>
+ <title>Voorbladen afdrukken</title>
+
+ <para>In de sectie <link linkend="printing-simple">Eenvoudige
+ printerinstallatie</link> is het afdrukken van
+ voorbladen uitgeschakeld door de optie <literal>sh</literal>
+ (<quote>suppress header</quote>) in het bestand
+ <filename>/etc/printcap</filename> op te geven. Om wel
+ voorbladen af te drukken, hoeft alleen de optie
+ <literal>sh</literal> verwijderd te worden.</para>
+
+ <para>Dit klinkt wat al te makkelijk, of niet?</para>
- <para></para>
+ <para>Dat klopt. Het <emphasis>kan</emphasis> nodig zijn een
+ uitvoerfilter op te geven die initialisatiestrings naar een
+ printer stuurt. Hier is een voorbeeld uitvoerfilter voor
+ HP PCL-compatible printers:</para>
+
+ <programlisting>#!/bin/sh
+#
+# hpof - Uivoerfilter voor HP PCL-compatible printers
+# Ge&iuml;nstalleerd in /usr/local/libexec/hpof
+
+printf "\033&amp;k2G" || exit 2
+exec /usr/libexec/lpr/lpf</programlisting>
+
+ <para>Geef de locatie van het uitvoerfilter op met de optie
+ <literal>of</literal>. Zie <link
+ linkend="printing-advanced-of">Uitvoerfilters</link> voor
+ meer informatie.</para>
+
+ <para>Hier is een voorbeeldbestand
+ <filename>/etc/printcap</filename> voor de printer
+ <literal>teak</literal> die eerder is ge&iuml;ntroduceerd;.
+ Het afdrukken van voorbladen is geactiveerd en bovenstaande
+ uitvoerfilter is toegevoegd:</para>
+
+ <programlisting>#
+# /etc/printcap voor host orchid
+#
+teak|hp|laserjet|HP 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>Als gebruikers nu een opdracht sturen naar
+ <literal>teak</literal>, wordt er bij elke opdracht een
+ voorblad afgedrukt. Als gebruikers liever willen zoeken naar
+ hun afdrukken, dan kunnen ze de voorbladen onderdrukken door
+ de opdracht te geven met het commando
+ <command>lpr -h</command>. Zie <link
+ linkend="printing-lpr-options-misc">Voorbladopties</link>
+ voor meer opties voor &man.lpr.1;.</para>
+
+ <note>
+ <para><application>LPD</application> drukt een karakter voor
+ pagina-einde af na elk voorblad. Als een printer een ander
+ teken of sequentie gebruikt voor het be&euml;indigen van
+ een pagina, dan kan dit opgeven worden met de optie
+ <literal>ff</literal> in
+ <filename>/etc/printcap</filename>.</para>
+ </note>
</sect3>
<sect3 id="printing-advanced-header-pages-controlling">
- <title>* Voorbladen beheren</title>
+ <title>Voorbladen beheren</title>
+
+ <para>Door het afdrukken van voorbladen aan te zetten,
+ produceert <application>LPD</application> een <emphasis>lang
+ voorblad</emphasis> waarop in grote letters de gebruiker,
+ host en opdracht te lezen zijn. Hier volgt een voorbeeld.
+ Kelly heeft de opdracht <quote>outline</quote> afgedrukt
+ vanaf host <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
+
+
+
+
+
+
- <para></para>
+ Job: outline
+ Date: Sun Sep 17 11:04:58 1995</programlisting>
+
+ <para><application>LPD</application> geeft een paginabegin na
+ deze tekst, zodat de opdracht op een nieuwe pagina begint
+ (tenzij de optie <literal>sf</literal> (<emphasis>suppress
+ form feeds</emphasis>, <quote>onderdruk paginabegin</quote>)
+ is toegevoegd bij de desbetreffende printer in
+ <filename>/etc/printcap</filename>).</para>
+
+ <para>Als dit wenselijk is, kan <application>LPD</application>
+ ook een <emphasis>korte tekst</emphasis> op het voorblad
+ afdrukken; geef hiervoor de optie <literal>sb</literal>
+ (<emphasis>short banner</emphasis>, <quote>kort
+ voorblad</quote>) op in het bestand
+ <filename>/etc/printcap</filename>. Het voorblad
+ ziet er dan als volgt uit:</para>
+
+ <programlisting>rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995</programlisting>
+
+ <para>Standaard drukt <application>LPD</application> het
+ voorblad als eerste af en vervolgens de opdracht. Om dat om
+ te keren, moet de optie <literal>hl</literal>
+ (<emphasis>header last</emphasis>, <quote>voorblad
+ laatst</quote>) in
+ <filename>/etc/printcap</filename> worden opgeven.</para>
</sect3>
<sect3 id="printing-advanced-header-pages-accounting">
- <title>* Accounting voor voorbladen</title>
+ <title>Voorbladen administreren</title>
+
+ <para>Het gebruik van <application>LPD</application>'s
+ ingebouwde voorbladen dwingt een bepaald paradigma af wat
+ betreft het administreren van printergebruik: voorbladen
+ moeten <emphasis>gratis</emphasis> zijn.</para>
+
+ <para>Waarom?</para>
+
+ <para>Omdat het uitvoerfilter het enige externe programma is
+ dat controle heeft als het voorblad afgedrukt wordt dat het
+ gebruik zou kunnen administeren. Het heeft echter geen
+ beschikking over informatie over <emphasis>gebruiker of
+ host</emphasis> of een administratiebestand. Het heeft dus
+ geen idee wie voor het gebruik moet worden belast. Het
+ volstaat ook niet om gewoon <quote>&eacute;&eacute;n pagina
+ toe te voegen</quote> aan het tekstfilter of een ander
+ filter (dat wel beschikt over gebruiker en host informatie),
+ omdat gebruikers het afdrukken van een voorblad kunnen
+ onderdrukken met <command>lpr -h</command>. Ze worden dan
+ aangeslagen voor voorbladen die niet zijn afgedrukt.
+ Milieubewuste gebruikers gebruiken vast
+ <command>lpr -h</command>, maar dit kan niet worden
+ afgedwongen.</para>
- <para></para>
+ <para>Het is <emphasis>ook niet voldoende</emphasis> om elk
+ filter zijn eigen voorblad te laten genereren (om zo het
+ gebruik te kunnen administeren). Als gebruikers het
+ afdrukken van voorbladen willen onderdrukken met
+ <command>lpr -h</command>, krijgen ze toch een voorblad en
+ worden er ook voor belast, aangezien
+ <application>LPD</application> de optie <option>-h</option>
+ niet doorgeeft aan de filters.</para>
+
+ <para>Wat zijn dan de mogelijkheden?</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Accepteer het paradigma van
+ <application>LPD</application> en maak voorbladen
+ gratis;</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeer een alternatief voor
+ <application>LPD</application>, zoals
+ <application>LPRng</application>. In <link
+ linkend="printing-lpd-alternatives">Alternatieven voor
+ het standaard wachtrijsysteem</link> staat meer over
+ andere afdruksoftware die in plaats van
+ <application>LPD</application> ge&iuml;nstalleerd kan
+ worden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Schrijf een <emphasis>slimme</emphasis>
+ uitvoerfilter. Gewoonlijk is een uitvoerfilter bedoeld
+ om niet meer te doen dan het initialiseren van een
+ printer of wat eenvoudige karakterconversie. Het is
+ geschikt voor voorbladen en opdrachten met platte tekst
+ (als er een tekstfilter is). Maar als er een tekstfilter
+ is voor opdrachten met platte tekst, dan start
+ <application>LPD</application> het uitvoerfilter alleen
+ voor voorbladen. Het uitvoerfilter kan dan het
+ voorblad dat <application>LPD</application> genereert
+ analyseren om te bepalen welke gebruiker en host belast
+ moeten worden voor het afdrukken van het voorblad. Het
+ enige probleem is dat het uitvoerfilter nog steeds niet
+ weet in welk bestand het gebruik moet worden bijgehouden
+ (de naam van het bestand opgegeven in de
+ <literal>af</literal> wordt niet meegegeven), maar als
+ een bekend bestand gebruikt wordt, kan dit in het
+ uitvoerfiler worden opgeven. Om het parsen af te
+ handelen kan gebruik gemaakt worden van de optie
+ <literal>sh</literal> (<emphasis>short header</emphasis>,
+ <quote>kort voorblad</quote>) in
+ <filename>/etc/printcap</filename>. Dit kan echter wat
+ omslachtig zijn en gebruikers waarderen zeker de meer
+ gulle systeembeheerder die voorbladen gratis
+ maakt.</para>
+ </listitem>
+ </itemizedlist>
</sect3>
<sect3 id="printing-advanced-header-pages-ps">
- <title>* Voorbladen op &postscript; printers</title>
+ <title>Voorbladen op &postscript;-printers</title>
+
+ <para>Zoals hierboven beschreven, kan
+ <application>LPD</application> een voorblad in platte tekst
+ genereren, dat geschikt is voor de meeste printers.
+ Natuurlijk kan &postscript; platte tekst niet direct
+ afdrukken, zodat de voorbladfunctie van
+ <application>LPD</application> nutteloos is.</para>
+
+ <para>Een voor de hand liggende manier om voorbladen te
+ krijgen, is elk conversiefilter en tekstfilter zijn eigen
+ voorblad te laten genereren. De filters moeten gebruik maken
+ van de argumenten gebruiker en host om een geschikt voorblad
+ te genereren. Het nadeel van deze methode is dat gebruikers
+ altijd een voorblad krijgen, ook wanneer zij een opdracht
+ geven met <command>lpr -h</command>.</para>
+
+ <para>Deze methode wordt nader beschreven. Het volgende script
+ heeft drie argumenten (gebuikersnaam, hostnaam en de naam van
+ de opdracht) en maakt een eenvoudig &postscript;
+ voorblad:</para>
+
+ <programlisting>#!/bin/sh
+#
+# make-ps-header - genereer een PostScript voorblad op stdout
+# Ge&iuml;nstalleerd in /usr/local/libexec/make-ps-header
+#
+
+#
+# Dit zijn PostScript eenheden (72 in een inch). Pas dit aan voor A4
+# of het gebruikte formaat:
+#
+page_width=612
+page_height=792
+border=72
+
+#
+# Controleer argumenten
+#
+if [ $# -ne 3 ]; then
+ echo "Usage: `basename $0` &lt;user&gt; &lt;host&gt; &lt;job&gt;" 1&gt;&amp;2
+ exit 1
+fi
+
+#
+# Bewaar deze, voornamelijk voor de leesbaarheid in de &postscript;-code.
+#
+user=$1
+host=$2
+job=$3
+date=`date`
+
+#
+# Stuur de &postscript;-code naar stdout.
+#
+exec cat &lt;&lt;EOF
+%!PS
+
+%
+% Vermijd conflicten met de opdracht van de gebruiker die volgt.
+%
+save
+
+%
+% Maak een dikke, onaangename border in de marge van het papier.
+%
+$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
+
+%
+% Toon de gebruikersnaam duidelijk, groot en prominent
+%
+/Helvetica-Bold findfont 64 scalefont setfont
+$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
+($user) show
+
+%
+% Nu volgen de saaie bijzonderheden
+%
+/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
+
+%
+% Dat is alles
+%
+restore
+showpage
+EOF</programlisting>
+
+ <para>Nu kan zowel het conversiefilter als het tekstfilter dit
+ script aanroepen om eerst een voorblad te genereren en
+ vervolgens de opdracht van de gebruiker af te drukken. Hier
+ volgt het eerder gebruikte DVI-conversieprogramma, aangepast
+ om een voorblad te maken:</para>
- <para></para>
+ <programlisting>#!/bin/sh
+#
+# psdf - DVI naar PostScript printfilter
+# Ge&iuml;nstalleerd in /usr/local/libexec/psdf
+#
+# Aangeroepen door lpd, wanneer de gebruiker lpr -d uitvoert
+#
+
+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 "No login name"
+[ "$host" ] || fail "No host name"
+
+( /usr/local/libexec/make-ps-header $login $host "DVI File"
+ /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args</programlisting>
+
+ <para>Merk op hoe het filter eerst de argumentenlijst moet
+ nagaan om te bepalen wat de gebruikers- en hostnaam zijn.
+ Dit is gelijk voor de andere conversiefilters. Het
+ tekstfilter heeft echter een andere set argumenten (zie <link
+ linkend="printing-advanced-filters">Hoe filters
+ werken</link>).</para>
+
+ <para>Zoals eerder is beschreven, is het in bovenstaande opzet,
+ hoewel deze simpel is, niet mogelijk <quote>voorbladen
+ te onderdrukken</quote> (de optie <option>-h</option> in
+ <command>lpr</command>). Als gebruikers een boom willen
+ sparen (of een paar centen bij betaalde voorbladen) dan is
+ dit dus niet mogelijk, aangezien elke filter een voorblad
+ afdrukt voor iedere opdracht.</para>
+
+ <para>Om gebruikers in staat te stellen per opdracht voorbladen
+ te onderdrukken, moet gebruik gemaakt worden van de truc
+ uit <link
+ linkend="printing-advanced-header-pages-accounting">Voorbladen
+ administreren</link>: schrijf een uitvoerfilter dat het door
+ LPD gegenereerde voorblad inleest en een &postscript; versie
+ genereert. Als de gebruiker de opdracht geeft met
+ <command>lpr -h</command>, dan genereert
+ <application>LPD</application> geen voorblad en het
+ uitvoerfilter ook niet. Anders leest het uitvoerfilter de
+ tekst van <application>LPD</application> in en stuurt een
+ geschikt voorblad in &postscript; naar de printer.</para>
+
+ <para>Voor een &postscript;-printer op een seri&euml;le lijn
+ kan gebruik gemaakt worden van <command>lprps</command>,
+ dat met een uitvoerfilter wordt geleverd en het bovenstaande
+ kan doen. Voorbladen worden door <command>psof</command>
+ niet geteld.</para>
</sect3>
</sect2>
<sect2 id="printing-advanced-network-printers">
- <title>* Printen over een netwerk</title>
+ <title>Afdrukken via het netwerk</title>
+
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>netwerk</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>afdrukken via netwerk</primary>
+ </indexterm>
+
+ <para>&os; ondersteunt afdrukken via het netwerk: het sturen van
+ opdrachten naar printers op afstand. Afdrukken via een netwerk
+ betekent over het algemeen twee verschillende dingen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het benaderen van een printer aangesloten op een andere
+ computer. Een printer met een conventionele
+ seri&euml;le of parallelle verbinding wordt op een bepaalde
+ computer ge&iuml;nstalleerd. Vervolgens wordt
+ <application>LPD</application> zodanig ingesteld dat
+ afdrukken vanaf andere computers in het netwerk mogelijk
+ is. In <link
+ linkend="printing-advanced-network-rm">Printers
+ ge&iuml;nstalleerd op andere hosts</link> staat hoe dit
+ te doen.</para>
+ </listitem>
+
+ <listitem>
+ <para>Het benaderen van een printer die direct is aangesloten
+ op een netwerk. Een printer heeft een netwerkinterface
+ naast (of in plaats van) een gewone seri&euml;le of
+ parallelle poort. Zo een printer kan als volgt
+ werken:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het begrijpt het <application>LPD</application>
+ protocol en kan zelfs opdrachten van andere hosts in
+ de wachtrij plaatsen. In dit geval werkt een printer
+ als een gewone host die <application>LPD</application>
+ heeft draaien. Volg de procedure in <link
+ linkend="printing-advanced-network-rm">Printers
+ ge&iuml;nstalleerd op andere hosts</link> om een
+ dergelijke printer te installeren</para>
+ </listitem>
+
+ <listitem>
+ <para>Het kan zijn dat een printer een netwerkverbinding
+ ondersteunt. In dit geval kan een printer worden
+ <quote>aangesloten</quote> op een bepaalde host op het
+ netwerk door deze host verantwoordelijk te maken voor
+ het plaatsen van opdrachten in een wachtrij en het
+ versturen van opdrachten naar de printer. In <link
+ linkend="printing-advanced-network-net-if">Printers
+ met netwerkinterfaces</link> staan enkele suggesties
+ om zulke printers te installeren.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
<sect3 id="printing-advanced-network-rm">
- <title>* Printers ge&iuml;nstalleerd op externe machine's</title>
+ <title>Printers ge&iuml;nstalleerd op andere hosts</title>
+
+ <para>Het wachtrijsysteem <application>LPD</application> heeft
+ een ingebouwde mogelijkheid om opdrachten naar andere hosts
+ te sturen die ook <application>LPD</application> draaien (of
+ een systeem dat compatibel is met
+ <application>LPD</application>). Deze eigenschap maakt het
+ mogelijk om een printer op een host te installeren en deze
+ toegankelijk te maken voor andere hosts. Het werkt ook met
+ printers die over een netwerkinterface beschikken en het
+ <application>LPD</application>-protocol begrijpen.</para>
+
+ <para>Om dit soort afdrukken op afstand mogelijk te maken, moet
+ een printer eerst op een host ge&iuml;nstalleerd worden, de
+ <emphasis>printerhost</emphasis>, door de printerinstallatie
+ te volgen als beschreven in <link
+ linkend="printing-simple">Eenvoudige
+ printerinstallatie</link>. Stel desgewenst de printer in
+ voor geavanceerde taken volgens <link
+ linkend="printing-advanced">Geavanceerde
+ printerinstallatie</link>. Test de printer en controleer
+ of deze werkt met eventueel speciaal ingestelde opties voor
+ <application>LPD</application>. De <emphasis>local
+ host</emphasis> moet geauthoriseerd zijn om de
+ <application>LPD</application>-dienst op de
+ <emphasis>remote host</emphasis> te gebruiken (zie <link
+ linkend="printing-advanced-restricting-remote">Opdrachten
+ van printers op afstand beperken</link>).</para>
+
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>netwerk</secondary>
+ </indexterm>
+
+ <indexterm><primary>afdrukken via netwerk</primary></indexterm>
+
+ <para>Als een printer een netwerkinterface heeft die compatibel
+ is met <application>LPD</application>, dan is de
+ <emphasis>printerhost</emphasis> in onderstaande beschrijving
+ de printer zelf en de <emphasis>printernaam</emphasis> is de
+ naam die voor de printer is ingesteld. Meer informatie staat
+ in de documentatie bij de printer en/of de
+ printernetwerkinterface.</para>
+
+ <tip>
+ <para>Bij een HP Laserjet voert de printernaam
+ <literal>text</literal> automatisch de CRLF-conversie uit.
+ Het is dan niet nodig het script <filename>hpif</filename>
+ te gebruiken.</para>
+ </tip>
+
+ <para>Op hosts die toegang moeten krijgen tot de printer, moet
+ in <filename>/etc/printcap</filename> een regel worden
+ toegevoegd met het volgende:</para>
- <para></para>
+ <orderedlist>
+ <listitem>
+ <para>Geef de regel een willekeurige naam. Om het
+ eenvoudig te houden kunnen wellicht het beste dezelfde
+ namen en aliassen worden gebruikt als op de
+ printerhost;</para>
+ </listitem>
+
+ <listitem>
+ <para>Laat de optie <literal>lp</literal> expliciet leeg
+ (<literal>:lp=:</literal>);</para>
+ </listitem>
+
+ <listitem>
+ <para>Maak een wachtrijmap aan en geef de locatie op met de
+ optie <literal>sd</literal>.
+ <application>LPD</application> slaat hier
+ afdrukopdrachten op alvorens ze naar de printerhost
+ te sturen;</para>
+ </listitem>
+
+ <listitem>
+ <para>Geef de naam van de printerhost op met de optie
+ <literal>rm</literal>;</para>
+ </listitem>
+
+ <listitem>
+ <para>Geef de naam van de printer op de
+ <emphasis>printerhost</emphasis> op met de optie
+ <literal>rp</literal>.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Dit is het. Conversiefilters, paginadimensies,
+ enzovoort, hoeven niet in <filename>/etc/printcap</filename>
+ opgegeven te worden.</para>
+
+ <para>Hier volgt een voorbeeld. De host <hostid>rose</hostid>
+ heeft twee printers: <literal>bamboo</literal> en
+ <literal>rattan</literal>. Gebruikers op de host
+ <hostid>orchid</hostid> krijgen toegang tot deze printers.
+ Hier volgt <filename>/etc/printcap</filename> voor
+ <hostid>orchid</hostid> (uit <link
+ linkend="printing-advanced-header-pages-enabling">Voorbladen
+ afdrukken</link>). Er stond in het bestand al een regel voor
+ de printer <literal>teak</literal>. Voor de twee printers op
+ de host <hostid>rose</hostid> zijn twee regels
+ toegevoegd:</para>
+
+ <programlisting>#
+# /etc/printcap voor host orchid - printers (op afstand) op rose toegevoegd
+#
+
+#
+# teak is lokaal - direct aangesloten op orchid:
+#
+teak|hp|laserjet|HP 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 is aangesloten op rose; stuur opdrachten voor rattan naar rose:
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
+
+#
+# bamboo is ook aangesloten op:
+#
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:</programlisting>
+
+ <para>Op <hostid>orchid</hostid> moeten wachtrijmappen
+ worden aangemaakt:</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>Nu kunnen gebruikers op <hostid>orchid</hostid> afdrukken
+ op <literal>rattan</literal> en <literal>bamboo</literal>.
+ Een gebruiker op <hostid>orchid</hostid> geeft bijvoorbeeld
+ de volgende invoer:</para>
+
+ <screen>&prompt.user; <userinput>lpr -P bamboo -d sushi-review.dvi</userinput></screen>
+
+ <para>Dan kopieert <application>LPD</application> op
+ <hostid>orchid</hostid> de opdracht naar de wachtrijmap
+ <filename>/var/spool/lpd/bamboo</filename> en ziet dat het
+ een DVI-opdracht is. Zodra de host <hostid>rose</hostid>
+ ruimte heeft in zijn wachtrijmap <literal>bamboo</literal>,
+ sturen de twee <application>LPD</application>'s het bestand
+ naar <hostid>rose</hostid>. Het bestand wacht in de wachtrij
+ van <hostid>rose</hostid> totdat het succesvol is afgedrukt.
+ Het wordt geconverteerd naar &postscript; (aangezien
+ <literal>bamboo</literal> een &postscript;-printer is) op
+ <hostid>rose</hostid>.</para>
</sect3>
<sect3 id="printing-advanced-network-net-if">
- <title>* Printers met een netwerkaansluiting</title>
+ <title>Printers met netwerkinterfaces</title>
+
+ <para>Netwerkkaarten voor printers zijn er in twee versies:
+ een versie die een wachtrij nabootst (de duurdere versies),
+ of versies die alleen de mogelijkheid geven om er informatie
+ naar te sturen alsof het een seri&euml;le of parallelle poort
+ is (de goedkopere versies). In <link
+ linkend="printing-advanced-network-rm">Printers
+ ge&iuml;nstalleerd op andere hosts</link> wordt het voor
+ de duurdere beschreven.</para>
+
+ <para>Het formaat van <filename>/etc/printcap</filename> maakt
+ het mogelijk om op te geven welke seri&euml;le, of parallelle
+ poort gebruikt moet worden en (in geval van een seri&euml;le
+ poort) de baud-snelheid, of er communicatie moet worden
+ toegepast, vertragingen voor tabs, conversies voor nieuwe
+ regelkarakters en meer. Er is geen mogelijkheid om een
+ verbinding met een printer op te geven die op een TCP/IP of
+ andere netwerkpoort luistert.</para>
+
+ <para>Om informatie naar een netwerkprinter te sturen, is het
+ nodig een programma te ontwikkelen dat door tekst- en
+ conversiefilters kan worden aangeroepen. Hier volgt een
+ voorbeeld: het script <command>netprint</command> stuurt alle
+ informatie van de standaard invoer naar een netwerkprinter.
+ Als eerste argument wordt de hostnaam van de printer
+ opgegeven en als tweede argument het poortnummer waarmee de
+ verbinding moet worden opgezet. Er wordt alleen
+ eenrichtingcommunicatie ondersteund (&os; naar printer).
+ Veel netwerkprinters ondersteunen tweewegcommunicatie. Het
+ kan wenselijk zijn hiervan gebruik te maken (om printerstatus
+ op te vragen, statistieken bij te houden, enzovoort).</para>
+
+ <programlisting>#!/usr/bin/perl
+#
+# netprint - Tekstfilter voor printer aangesloten op het netwerk
+# Ge&iuml;nstalleerd in /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];
- <para></para>
+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>Dit script kan vervolgens in verschillende filters
+ gebruikt worden. Stel dat een Diablo 750-N matrixprinter op
+ het netwerk is aangesloten. Op poort 5100 accepteert de
+ printer informatie om af te drukken. De hostnaam van de
+ printer is <hostid>scrivener</hostid>. Hier volgt het
+ tekstfilter voor de printer:</para>
+
+ <programlisting>#!/bin/sh
+#
+# diablo-if-net - Tekstfilter voor Diablo printer 'scrivener' luistert
+# op poort 5100. Ge&iuml;nstalleerd in /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>* Printer gebruik limieteren</title>
+ <title>Printergebruik beperken</title>
+
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>toegang beperken</secondary>
+ </indexterm>
+
+ <para>Nu volgt informatie over het beperken van printergebruik.
+ Het <application>LPD</application>-systeem maakt het mogelijk
+ te bepalen wie er toegang heeft tot een printer, zowel lokaal
+ als op afstand, of meerdere kopie&euml;n afgedrukt mogen
+ worden, hoe lang opdrachten mogen zijn en hoe lang wachtrijen
+ mogen worden.</para>
<sect3 id="printing-advanced-restricting-copies">
- <title>* Meerdere kopie&euml;n limieteren</title>
+ <title>Meerdere kopie&euml;n beperken</title>
+
+ <para>Het <application>LPD</application> systeem maakt het heel
+ makkelijk voor gebruikers om meerdere afdrukken van een
+ bestand te maken. Gebruikers kunnen opdrachten afdrukken met
+ bijvoorbeeld <command>lpr -#5</command> en krijgen dan vijf
+ kopie&euml;n van elk bestand in de opdracht. De
+ systeembeheerder kan beslissen of dit wenselijk is.</para>
+
+ <para>Wanneer meerdere kopie&euml;n onwenselijk zijn, kan de
+ optie <option>-#</option> van &man.lpr.1; worden
+ uitgeschakeld door de optie <literal>sc</literal> in
+ <filename>/etc/printcap</filename> op te nemen. Als
+ gebruikers opdrachten versturen met de optie
+ <option>-#</option>, zien ze het volgende:</para>
+
+ <screen>lpr: multiple copies are not allowed</screen>
+
+ <para>Als het mogelijk is van andere hosts af te drukken (zie
+ <link linkend="printing-advanced-network-rm">Printers
+ ge&iuml;nstalleerd op andere hosts</link>), moet de optie
+ <literal>sc</literal> ook in
+ <filename>/etc/printcap</filename> van de andere hosts
+ aanwezig zijn. Anders kunnen gebruikers nog steeds
+ multi-kopie opdrachten van andere hosts sturen.</para>
+
+ <para>Hier volgt een voorbeeld. Hieronder staat
+ <filename>/etc/printcap</filename> voor de host
+ <hostid>rose</hostid>. De printer <literal>rattan</literal>
+ is redelijk krachtig, dus meerdere kopie&euml;n zijn
+ toegestaan. De laserprinter <literal>bamboo</literal> is wat
+ gevoeliger, dus meerdere kopie&euml; zijn uitgeschakeld door
+ de optie <literal>sc</literal> toe te voegen:</para>
+
+ <programlisting>#
+# /etc/printcap voor host rose - beperk meerdere kopie&euml;n op 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>Nu moet ook de optie <literal>sc</literal> worden
+ toegevoegd in <filename>/etc/printcap</filename> van host
+ <hostid>orchid</hostid> (tegelijk worden meerdere
+ kopie&euml;n voor de printer <literal>teak</literal>
+ uitgeschakeld):</para>
+
+ <programlisting>#
+# /etc/printcap voor host orchid - geen meerdere kopie&euml;n voor lokale
+# printer teak of printer op afstand bamboo
+teak|hp|laserjet|HP 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></para>
+ <para>Door de optie <literal>sc</literal> te gebruiken, wordt
+ het gebruik van <command>lpr -#</command> voorkomen.
+ Gebruikers kunnen echter &man.lpr.1; meerdere keren
+ aanroepen of meerdere keren versturen in een opdracht:</para>
+
+ <screen>&prompt.user; <userinput>lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign</userinput></screen>
+
+ <para>Er zijn vele manieren om dit misbruik te voorkomen (onder
+ andere door het te negeren). Dit wordt hier echter niet
+ beschreven.</para>
</sect3>
<sect3 id="printing-advanced-restricting-access">
- <title>* Toegang tot printers limieteren</title>
+ <title>Printertoegang beperken</title>
+
+ <para>Door gebruik te maken van het &unix; groepmechanisme en
+ de optie <literal>rg</literal> in
+ <filename>/etc/printcap</filename> kan geregeld worden wie er
+ op welke printer kan afdrukken. De gebruikers die toegang
+ hebben tot een printer moeten in een groep worden geplaatst
+ en deze groep moet in de optie <literal>rg</literal> worden
+ genoemd.</para>
+
+ <para>Gebruikers buiten deze groep (inclusief
+ <username>root</username>) worden begroet met <errorname>lpr:
+ Not a member of the restricted group</errorname> als ze op
+ deze beheerde printer willen afdrukken.</para>
+
+ <para>Net als met de optie <literal>sc</literal>
+ (<emphasis>suppress multiple copies</emphasis>: onderdruk
+ meerdere kopie&euml;n) moet <literal>rg</literal>, indien
+ wenselijk, ook op andere hosts worden opgegeven die ook
+ toegang hebben tot printers (zie <link
+ linkend="printing-advanced-network-rm">Printers
+ ge&iuml;nstalleerd op andere hosts</link>).</para>
+
+ <para>In het volgende voorbeeld heeft iedereen toegang tot de
+ printer <literal>rattan</literal>, maar alleen gebruikers in
+ de groep <literal>artists</literal> kunnen gebruik maken van
+ <literal>bamboo</literal>. Hier volgt
+ <filename>/etc/printcap</filename> voor de host
+ <hostid>rose</hostid>:</para>
+
+ <programlisting>#
+# /etc/printcap voor host rose - beperkte toegang voor groep bamboo
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
- <para></para>
+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>De andere voorbeeldbestanden
+ <filename>/etc/printcap</filename> (voor de host
+ <hostid>orchid</hostid>) worden niet aangepast. Natuurlijk
+ kan iedereen op <hostid>orchid</hostid> afdrukken op
+ <hostid>bamboo</hostid>. Het kan zijn dat er sowieso alleen
+ bepaalde gebruikers op <hostid>orchid</hostid> zijn
+ toegestaan en dat deze gebruikers toegang mogen hebben tot de
+ printer. Of wellicht niet.</para>
+
+ <note>
+ <para>Er kan per printer slechts &eacute;&eacute;n groep
+ worden opgegeven.</para>
+ </note>
</sect3>
<sect3 id="printing-advanced-restricting-sizes">
- <title>* De grootte van verstuurde opdrachten beheren</title>
+ <title>Grootte van afdrukopdrachten bepalen</title>
+
+ <indexterm><primary>afdrukopdrachten</primary></indexterm>
+
+ <para>Als veel gebruikers toegang hebben tot printers kan het
+ nodig zijn een limiet op te geven voor de grootte van de
+ bestanden die gebruikers naar een printer kunnen sturen. Er
+ is immers slechts beperkte ruimte op het bestandssysteem en
+ er moet ook voldoende ruimte zijn voor opdrachten van andere
+ gebruikers.</para>
+
+ <indexterm>
+ <primary>afdrukopdrachten</primary>
+
+ <secondary>beheren</secondary>
+ </indexterm>
- <para></para>
+ <para><application>LPD</application> heeft de mogelijkheid om
+ met de optie <literal>mx</literal> een limiet op te geven
+ voor het maximum aantal bytes van een bestand in een
+ afdrukopdracht. De eenheden worden opgegeven in
+ <literal>BUFSIZ</literal> blokken, die 1024 bytes groot zijn.
+ Een nul voor deze optie betekent geen limiet aan de
+ bestandsgrootte. Als de optie wordt weggelaten, wordt een
+ standaardlimiet van 1000 blokken gebruikt.</para>
+
+ <note>
+ <para>De limiet heeft betrekking op de
+ <emphasis>bestanden</emphasis> in een opdracht,
+ <emphasis>niet</emphasis> op de totale grootte van een
+ opdracht.</para>
+ </note>
+
+ <para><application>LPD</application> weigert een bestand dat
+ groter is dan de opgegeven limiet niet. In plaats daarvan
+ plaatst het zo veel mogelijk van het bestand op de wachtrij,
+ om dit vervolgens af te drukken. De rest wordt genegeerd.
+ Of dit gedrag wenselijk is, is onderwerp van debat.</para>
+
+ <para>Nu worden limieten voor de voorbeeldprinters
+ <literal>rattan</literal> en <literal>bamboo</literal>
+ opgegeven. Aangezien de &postscript;-bestanden van die
+ kunstenaars nogal groot dreigen te worden, krijgt deze groep
+ een limiet van vijf megabyte opgelegd. Er wordt geen limiet
+ opgelegd voor de platte tekst printer:</para>
+
+ <programlisting>#
+# /etc/printcap voor host rose
+#
+
+#
+# Geen limiet op opdrachtgrootte:
+#
+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:
+
+#
+# Limiet van vijf megabyte:
+#
+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>Ook hier zijn de limieten alleen van toepassing op
+ lokale gebruikers. Als toegang tot deze printers van andere
+ hosts mogelijk is, worden deze gebruikers niet beperkt. Het
+ is daarom nodig de optie <literal>mx</literal> ook in de
+ <filename>/etc/printcap</filename> van de betreffende hosts
+ op te geven. In <link
+ linkend="printing-advanced-network-rm">Printers
+ ge&iuml;nstalleerd op andere hosts</link> staat meer
+ informatie over afdrukken op andere hosts.</para>
+
+ <para>Er is een andere gespecialiseerde manier om
+ opdrachtgrootte voor printers op afstand te beperken (zie
+ <link
+ linkend="printing-advanced-restricting-remote">Opdrachten
+ van printers op afstand beperken</link>.</para>
</sect3>
<sect3 id="printing-advanced-restricting-remote">
- <title>* Opdrachten van externe printers limieteren</title>
+ <title>Opdrachten van printers op afstand beperken</title>
+
+ <para>Het wachtrijsysteem <application>LPD</application>
+ beschikt over verschillende methoden om afdrukopdrachten van
+ hosts op afstand te beperken:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>Hostbeperkingen</term>
+
+ <listitem>
+ <para>Met de bestanden
+ <filename>/etc/hosts.equiv</filename> en
+ <filename>/etc/hosts.lpd</filename> kan worden
+ ingesteld van welke hosts op afstand een lokale
+ <application>LPD</application>-opdracht wordt
+ geaccepteerd. <application>LPD</application>
+ controleert of een inkomend verzoek afkomstig is van
+ een host die wordt genoemd in een van deze bestanden.
+ Zo niet, dan weigert <application>LPD</application> het
+ verzoek.</para>
+
+ <para>Het formaat van deze bestanden is eenvoudig:
+ &eacute;&eacute;n host per regel.
+ <filename>/etc/hosts.equiv</filename> wordt ook
+ gebruikt door het protocol &man.ruserok.3; en heeft
+ invloed op programma's als &man.rsh.1; en &man.rcp.1;.
+ Voorzichtigheid is dus geboden.</para>
+
+ <para>Als voorbeeld volgt hier
+ <filename>/etc/hosts.lpd</filename> voor de host
+ <hostid>rose</hostid>:</para>
- <para></para>
+ <programlisting>orchid
+violet
+madrigal.fishbaum.de</programlisting>
+
+ <para>Dit betekent dat <hostid>rose</hostid> verzoeken
+ accepteert van de hosts <hostid>orchid</hostid>,
+ <hostid>violet</hostid> en
+ <hostid role="fqdn">madrigal.fishbaum.de</hostid>.
+ Voor iedere andere host die verbinding probeert te
+ maken met <application>LPD</application> op
+ <hostid>rose</hostid>, wordt de opdracht
+ geweigerd.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Omvangbeperkingen</term>
+
+ <listitem>
+ <para>De hoeveelheid vrije ruimte die over moet blijven
+ op een bestandssysteem waar een wachtrij zich bevindt
+ kan ook worden ingesteld. Hiervoor moet een bestand
+ met de naam <filename>minfree</filename> in de
+ wachtrijmap worden aangemaakt. In dit bestand kan
+ een getal worden gezet dat het aantal schijfblokken
+ (512 bytes) aan vrije ruimte aangeeft dat beschikbaar
+ moet blijven wil een opdracht worden
+ geaccepteerd.</para>
+
+ <para>Hiermee kan worden gegarandeerd dat gebruikers op
+ afstand een bestandssysteem niet vol kunnen schrijven.
+ Ook kan hierdoor een soort voorrang worden gegeven aan
+ lokale gebruikers: zij kunnen nog opdrachten plaatsen
+ als de vrije schijfruimte al lang beneden de opgegeven
+ limiet uit <filename>minfree</filename> is
+ gekomen.</para>
+
+ <para>Als voorbeeld wordt een bestand
+ <filename>minfree</filename> voor de printer
+ <literal>bamboo</literal> toegevoegd. In
+ <filename>/etc/printcap</filename> staat de juiste
+ wachtrijmap:</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>De wachtrijmap wordt opgegeven met de optie
+ <literal>sd</literal>. Er wordt een limiet van drie
+ megabyte ingesteld (wat gelijk staat aan 6144
+ schijfblokken) voor de hoeveelheid vrije schijfruimte
+ die op het bestandssysteem beschikbaar moet zijn
+ voordat <application>LPD</application> een opdracht op
+ afstand accepteert:</para>
+
+ <screen>&prompt.root; <userinput>echo 6144 &gt; /var/spool/lpd/bamboo/minfree
+ </userinput></screen>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Gebruikersbeperkingen</term>
+
+ <listitem>
+ <para>Met de optie <literal>rs</literal> in
+ <filename>/etc/printcap</filename> kan worden geregeld
+ welke gebruikers op afstand kunnen afdrukken op lokale
+ printers. Als <literal>rs</literal> voorkomt voor
+ een lokale printer accepteert
+ <application>LPD</application> opdrachten van hosts op
+ afstand <emphasis>als</emphasis> de gebruiker die de
+ opdracht wil plaatsen ook een account heeft met
+ dezelfde gebruikersnaam op de lokale host. Anders
+ weigert <application>LPD</application> de
+ opdracht.</para>
+
+ <para>Deze optie is met name nuttig in een omgeving waar
+ (bijvoorbeeld) verschillende afdelingen een netwerk
+ delen en gebruikers de grenzen van de afdeling
+ overschrijden. Door ze een account te geven op een
+ systeem kunnen ze de aangesloten printers gebruiken
+ vanaf het systeem van hun eigen afdeling. Wanneer ze
+ <emphasis>alleen</emphasis> gebruik mogen maken van de
+ printers en niet van overige diensten op de computer,
+ kunnen <quote>tokenaccounts</quote> worden aangemaakt,
+ zonder thuismap en met een nutteloze shell als
+ <filename>/usr/bin/false</filename>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</sect3>
</sect2>
<sect2 id="printing-advanced-acct">
- <title>* Accounting voor printer gebruik</title>
+ <title>Printergebruik administreren</title>
+
+ <indexterm>
+ <primary>administratie</primary>
+
+ <secondary>printer</secondary>
+ </indexterm>
+
+ <para>Het kan nodig zijn om afdrukken te doorbelasten. Inkt en
+ papier kosten geld en er zijn onderhoudskosten. Printers
+ zitten vol met bewegende delen en hebben de neiging kapot te
+ gaan. Nu is er gekeken naar de printers, het gebruikerspatroon
+ en de onderhoudskosten en op basis hiervan is een prijs
+ vastgesteld per pagina (of per centimeter, per meter, of per
+ wat dan ook). Hoe wordt nu een administratie bijgehouden van
+ gemaakte afdrukken?</para>
+
+ <para>Het slechte nieuws is dat het wachtrijsysteem
+ <application>LPD</application> hierbij niet echt helpt. Het
+ administreren van afdrukken is erg afhankelijk van het type
+ printer, het afdrukformaat en de wensen die een
+ systeembeheerder heeft ten aanzien van het doorbelasten van
+ printergebruik.</para>
+
+ <para>Om het administreren te implementeren, is het nodig om
+ aanpassingen te maken in de tekstfilter (om platte tekst
+ opdrachten te belasten) en de conversiefilters (om opdrachten
+ in andere bestandsformaten te belasten), om pagina's te tellen,
+ of de printer te vragen hoeveel pagina's er zijn afgedrukt.
+ Het volstaat niet om het eenvoudige uitvoerfilter te gebruiken,
+ aangezien dit niet in staat is het gebruik te administreren.
+ Zie <link
+ linkend="printing-advanced-filter-intro">Filters</link>.</para>
+
+ <para>In het algemeen zijn er twee manieren om gebruik te
+ administreren:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>Periodiek administreren</emphasis> is de meer
+ gebruikelijke manier, omdat het waarschijnlijk makkelijker
+ is. Als iemand een opdracht afdrukt, schrijft het filter
+ de gebruiker, host en het aantal pagina's in een
+ administratiebestand. Elke maand, semester, jaar, of
+ een andere gewenste periode kunnen de
+ administratiebestanden verzameld worden om het aantal
+ afgedrukte pagina's op te tellen en het gebruik in rekening
+ te brengen. De logboekbestanden kunnen vervolgens
+ geschoond worden, zodat met een schone lei de volgende
+ periode begonnen kan worden.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>Directe administratie</emphasis> is minder
+ gebruikelijk, waarschijnlijk omdat het moeilijker is. Met
+ deze methode zorgen de filters ervoor dat gebruikers voor
+ hun printergebruik worden afrekend op het moment dat ze er
+ gebruik van maken. Net als schijfquota is de administratie
+ onmiddelijk. Hiermee wordt voorkomen dat gebruikers kunnen
+ afdrukken wanneer ze over hun limiet zijn gegaan. Ook
+ biedt dit de mogelijkheid voor gebruikers om hun
+ afdrukquotum te controleren, of aan te passen. Deze
+ methode vereist databasecode om gebruikers en hun quota bij
+ te houden.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Het wachtrijsysteem <application>LPD</application>
+ ondersteunt beide methoden op eenvoudige wijze. Aangezien de
+ filters moeten worden aangeleverd (meestal), moet ook de code
+ voor de administratie worden geleverd. Er is echter een
+ voordeel: er is grote flexibiliteit in de administratiemethode.
+ Zo kan bijvoorbeeld gekozen worden tussen periodieke of directe
+ administratie. Er kan gekozen worden welke informatie
+ opgeslagen wordt: gebruikersnamen, hostnamen, type opdracht,
+ aantal afgedrukte pagina's, hoe lang het afdrukken duurde,
+ enzovoort. Dit alles kan worden gedaan door de filters aan te
+ passen.</para>
<sect3>
- <title>* Quick and Dirty printer accounting</title>
+ <title>Kort door de bocht printeradministratie</title>
+
+ <para>&os; wordt met twee programma's geleverd waarmee
+ periodieke administratie direct kan worden opgezet. Het zijn
+ het tekstfilter <command>lpf</command>, beschreven in <link
+ linkend="printing-advanced-lpf">lpf: een
+ tekstfilter</link> en &man.pac.8;, een programma dat posten
+ uit administratiebestanden verzamelt en optelt.</para>
+
+ <para>Zoals beschreven in de sectie over filters (<link
+ linkend="printing-advanced-filters">Filters</link>), roept
+ <application>LPD</application> de tekst- en conversiefilters
+ aan met de naam van het administratiebestand als argument.
+ De filters kunnen dit argument gebruiken om te bepalen in
+ welk bestand de gegevens voor de administratie moeten worden
+ weggeschreven. De naam van dit bestand is afkomstig van de
+ optie <literal>af</literal> uit
+ <filename>/etc/printcap</filename>. Als er geen absoluut pad
+ wordt opgegeven, dan is de locatie relatief aan de
+ wachtrijmap.</para>
+
+ <para><application>LPD</application> start
+ <command>lpf</command> met paginabreedte en -lengte
+ argumenten (afkomstig uit de opties <literal>pw</literal> en
+ <literal>pl</literal>). <command>lpf</command>
+ gebruikt deze argumenten om te bepalen hoeveel papier er
+ gebruikt zal worden. Nadat het bestand naar de printer is
+ gestuurd, schrijft het een post in het administratiebestand.
+ De posten zien er als volgt uit:</para>
+
+ <programlisting>2.00 rose:andy
+3.00 rose:kelly
+3.00 orchid:mary
+5.00 orchid:mary
+2.00 orchid:zhang</programlisting>
+
+ <para>Aangezien <command>lpf</command> geen ingebouwde logica
+ voor bestandslocking kent, moet voor elke printer een apart
+ administratiebestand gebruikt worden. Twee
+ <command>lpf</command>s kunnen elkaars posten corrumperen als
+ ze tegelijk in hetzelfde bestand schrijven. De optie
+ <literal>af=acct</literal> in
+ <filename>/etc/printcap</filename> biedt een makkelijke
+ manier om er zeker van te zijn dat aparte bestanden worden
+ gebruikt. Dan bevindt elk administratiebestand zich in de
+ wachtrijmap van de betreffende printer en krijgt de naam
+ <filename>acct</filename> krijgen</para>
+
+ <para>Wanneer het tijd is om met gebruikers af te rekenen voor
+ hun afdrukken, kan het programma &man.pac.8; gedraaid worden.
+ Hiervoor dient het programma in de wachtrijmap aangeroepen te
+ worden. Het resultaat is een dollar-centrische
+ samenvatting, zoals de volgende:</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>Dit zijn de argumenten die &man.pac.8; verwacht:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-P<replaceable>printer</replaceable></option></term>
+
+ <listitem>
+ <para>De <replaceable>printer</replaceable> waarvoor een
+ samenvatting moet worden gegenereerd. Deze optie werkt
+ alleen als er een absoluut pad is gegeven in de optie
+ <literal>af</literal> in
+ <filename>/etc/printcap</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-c</option></term>
+
+ <listitem>
+ <para>Sorteer de uitvoer op kosten, in plaats van
+ alfabetisch op gebruikersnaam.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-m</option></term>
+
+ <listitem>
+ <para>Negeer de hostnamen in het administratiebestand.
+ Met deze optie is de gebruiker
+ <username>smith</username> op host
+ <hostid>alpha</hostid> dezelfde gebruiker als
+ <username>smith</username> op host
+ <hostid>gamma</hostid>. Zonder deze optie zijn het
+ verschillende gebruikers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-p<replaceable>prijs</replaceable></option></term>
+
+ <listitem>
+ <para>Bereken de prijs met
+ <replaceable>prijs</replaceable> dollar per pagina of
+ per voet, in plaats van de prijs uit de optie
+ <literal>pc</literal> in
+ <filename>/etc/printcap</filename> of twee cent (de
+ standaard). De <replaceable>prijs</replaceable> kan
+ worden opgegeven als een decimaal getal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-r</option></term>
- <para></para>
+ <listitem>
+ <para>Keer de sorteervolgorde om.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-s</option></term>
+
+ <listitem>
+ <para>Maak een bestand met een samenvatting van de
+ administratie en leeg het administratiebestand.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable>namen</replaceable>
+ <replaceable>&hellip;</replaceable></term>
+
+ <listitem>
+ <para>Druk de administratiegegevens alleen af voor
+ gebruikersnamen <replaceable>namen</replaceable>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>In de standaard samenvatting die &man.pac.8; genereert,
+ is het aantal pagina's te zien dat iedere gebruiker vanaf een
+ bepaalde host heeft afgedrukt. Wanneer de hostname niet
+ van belang is (bijvoorbeeld omdat gebruikers iedere host
+ kunnen gebruiken), gebruik dan <command>pac -m</command> om
+ de volgende samenvatting te genereren:</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>Om het verschuldigde bedrag te berekenen gebruikt
+ &man.pac.8 de optie <literal>pc</literal> uit
+ <filename>/etc/printcap</filename> (standaard aantal van 200
+ of 2 cent per pagina). Specificeer, in honderden
+ centen, de prijs per pagina of per voet die berekent moet
+ worden. Deze waarde kan worden aangepast door &man.pac.8;
+ aan te roepen met de optie <option>-p</option>. De eenheden
+ van de optie <option>-p</option> zijn echter in dollars, niet
+ in honderden centen. Het onderstaande zorgt er bijvoorbeeld
+ voor dat elke pagina 1 dollar en 50 cent kost. Zo kunnen
+ echt grote winsten worden behaald:</para>
+
+ <screen>&prompt.root; <userinput>pac -p1.50</userinput></screen>
+
+ <para>Tenslotte kan met <command>pac -s</command> de
+ samenvatting worden opgeslagen in een bestand dat dezelfde
+ naam krijgt als het administratiebestand van de printer, maar
+ dan met <literal>_sum</literal> toegevoegd aan de naam.
+ Vervolgens wordt het administratiebestand geleegd. Als
+ &man.pac.8; opnieuw wordt aangeroepen, herleest &man.pac.8;
+ het samenvattingsbestand om de startwaarden te bepalen en
+ telt daar de informatie bij op van het standaard
+ administratiebestand.</para>
</sect3>
<sect3>
- <title>* Hoe kun je geprinte pagina's tellen?</title>
+ <title>Hoe kan het aantal afgedrukte pagina's worden
+ geteld?</title>
+
+ <para>Om ook maar de minste nauwkeurigheid bij het
+ administreren te verkrijgen, is het nodig te weten hoeveel
+ papier een afdrukopdracht gebruikt. Dit is het centrale
+ probleem van het bijhouden van printerstatistieken.</para>
+
+ <para>Voor opdrachten met platte tekst is het probleem niet zo
+ moeilijk op te lossen: het aantal regels in een opdracht
+ wordt geteld en vergeleken met het aantal regels per pagina
+ dat door een printer wordt ondersteund. Hierbij moet niet
+ worden vergeten dat backspaces in het bestand regels
+ overschrijven en dat lange logische regels worden afgedrukt
+ als meerdere fysieke regels.</para>
+
+ <para>Het tekstfilter <command>lpf</command>
+ (ge&iuml;ntroduceerd in <link
+ linkend="printing-advanced-lpf">lpf: een
+ tekstfilter</link>) houdt met deze zaken rekening bij het
+ administreren. Als het nodig is een tekstfilter te schrijven
+ dat ook het printergebruik moet bijhouden, dan is het nuttig
+ de broncode van <command>lpf</command> te bestuderen.</para>
- <para></para>
+ <para>Hoe worden andere bestandsformaten dan verwerkt?</para>
+
+ <para>Voor een DVI-naar-LaserJet, of DVI-naar-&postscript;
+ conversie kan het filter de diagnostische uitvoer van
+ <command>dvilj</command> of <command>dvips</command> bekijken
+ om te bepalen hoeveel pagina's er zijn geconverteerd. Voor
+ andere formaten kan hetzelfde worden gedaan met behulp van de
+ betreffende conversieprogramma's.</para>
+
+ <para>Deze methoden hebben echter als nadeel dat een printer
+ eventueel niet alle pagina's ook daadwerkelijk afdrukt. Zo
+ kan het papier vast komen te zitten, de toner opraken of de
+ printer ontploffen, terwijl de gebruiker toch moet
+ betalen.</para>
+
+ <para>Dus, wat kan hieraan worden gedaan?</para>
+
+ <para>Er is slechts &eacute;&eacute;n
+ <emphasis>betrouwbare</emphasis> manier om
+ <emphasis>nauwkeurig</emphasis> te administreren. Dat is
+ met behulp van een printer die kan vertellen hoeveel papier
+ er is gebruikt. Deze moet vervolgens worden aangesloten
+ met een seri&euml;le lijn, of een netwerkverbinding. Bijna
+ alle &postscript;-printers hebben deze mogelijkheid, andere
+ modellen en merken mogelijk ook (bijvoorbeeld Imagen
+ netwerklaserprinters). De filters dienen voor deze printers
+ aangepast te worden om het papierverbruik na elke opdracht te
+ achterhalen en de administratieve informatie
+ <emphasis>alleen</emphasis> op deze waarde te baseren. Er is
+ geen noodzaak om foutgevoelig regels te tellen of bestanden
+ te analyseren.</para>
+
+ <para>Natuurlijk kan een beheerder ook vrijgevig zijn en alle
+ afdrukken gratis maken.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="printing-using">
- <title>* Printers gebruiken</title>
+ <title>Printers gebruiken</title>
+
+ <indexterm>
+ <primary>printers</primary>
+
+ <secondary>gebruik</secondary>
+ </indexterm>
+
+ <para>Hieronder wordt beschreven hoe printers die onder &os;
+ ge&iuml;nstalleerd zijn gebruikt moeten worden. Nu volgt een
+ overzicht van de commando's op gebruikersniveau:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>&man.lpr.1;</term>
+
+ <listitem>
+ <para>Druk opdrachten af</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>&man.lpq.1;</term>
+
+ <listitem>
+ <para>Controleer printerwachtrijen</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>&man.lprm.1;</term>
+
+ <listitem>
+ <para>Verwijder opdrachten uit de wachtrij van een
+ printer</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Er is ook een administratief commando, &man.lpc.8;,
+ beschreven in <link linkend="printing-lpc">Printers
+ beheren</link>, dat gebruikt wordt om printers en hun
+ wachtrijen in te stellen.</para>
+
+ <para>Alledrie de commando's &man.lpr.1;, &man.lprm.1; en
+ &man.lpq.1; accepteren een optie
+ <option>-P<replaceable>printernaam</replaceable></option> om aan
+ te geven op welke printer uit <filename>/etc/printcap</filename>
+ een opdracht van toepassing is. Dit biedt de mogelijkheid
+ opdrachten te versturen, verwijderen en controleren voor
+ verschillende printers. Als <option>-P</option> niet wordt
+ gebruikt, werken deze commando's op de printer gedefinieerd in de
+ omgevingsvariabele <envar>PRINTER</envar>. Tot slot, wanneer
+ de omgevingsvariabele <envar>PRINTER</envar> niet is
+ gedefinieerd, wordt standaard verwezen naar de printer met de
+ naam <literal>lp</literal>.</para>
<sect2 id="printing-lpr">
- <title>* Print opdrachten</title>
+ <title>Opdrachten afdrukken</title>
+
+ <para>Om bestanden af te drukken:</para>
+
+ <screen>&prompt.user; <userinput>lpr <replaceable>bestandsnaam</replaceable> <replaceable>...</replaceable></userinput></screen>
+
+ <indexterm><primary>afdrukken</primary></indexterm>
+
+ <para>Dit drukt elk van de opgegeven bestanden af op de standaard
+ printer. Als geen bestanden worden opgegeven, drukt
+ &man.lpr.1; de standaard invoer af. De volgende opdracht drukt
+ bijvoorbeeld een paar belangrijke systeembestanden af:</para>
+
+ <screen>&prompt.user; <userinput>lpr /etc/host.conf /etc/hosts.equiv</userinput></screen>
+
+ <para>Om een specifieke printer te selecteren:</para>
+
+ <screen>&prompt.user; <userinput>lpr -P <replaceable>printernaam</replaceable> <replaceable>bestandsnaam</replaceable> <replaceable>...</replaceable></userinput></screen>
+
+ <para>Dit voorbeeld drukt een lange opgave van de huidige
+ map af op de printer <literal>rattan</literal>:</para>
+
+ <screen>&prompt.user; <userinput>ls -l | lpr -P rattan</userinput></screen>
+
+ <para>Omdat er geen bestanden worden meegegeven aan het commando
+ &man.lpr.1;, drukt <command>lpr</command> de gegevens af
+ die het van de standaard invoer leest: de uitvoer van het
+ commando <command>ls -l</command>.</para>
- <para></para>
+ <para>&man.lpr.1; accepteert ook een breed scala aan opties
+ om de vorm aan te passen, bestandsconversies toe te passen,
+ meerdere kopie&euml;n af te drukken, enzovoort. Meer
+ informatie staat in <link
+ linkend="printing-lpr-options">Afdrukopties</link>.</para>
</sect2>
<sect2 id="printing-lpq">
- <title>* Opdrachten controleren</title>
+ <title>Opdrachten controleren</title>
- <para></para>
+ <indexterm><primary>afdrukopdrachten</primary></indexterm>
+
+ <para>Als &man.lpr.1; wordt gebruikt om af te drukken, dan
+ worden de gegevens die afdrukt moet worden in een pakketje
+ samengevoegd dat een <quote>afdrukopdracht</quote> wordt
+ genoemd en naar het wachtrijsysteem
+ <application>LPD</application> gestuurd. Elke printer heeft
+ een wachtrij met opdrachten van alle gebruikers. Een printer
+ drukt deze opdrachten op volgorde van binnenkomst af.</para>
+
+ <para>De wachtrij voor de standaardprinter kan worden weergegeven
+ met &man.lpq.1;. Voor een specifieke printer moet de optie
+ <option>-P</option> meegegeven worden. Het volgende commando
+ toont de wachtrij van printer <literal>bamboo</literal>:</para>
+
+ <screen>&prompt.user; <userinput>lpq -P bamboo</userinput></screen>
+
+ <para>Hieronder volgt een voorbeeld van de uitvoer van het
+ commando <command>lpq</command>:</para>
+
+ <screen>bamboo is ready and printing
+Rank Owner Job Files Total Size
+active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
+2nd kelly 10 (standard input) 1635 bytes
+3rd mary 11 ... 78519 bytes</screen>
+
+ <para>Dit laat drie opdrachten zien in de wachtrij voor
+ <literal>bamboo</literal>. De eerste opdracht, gegeven door
+ gebruiker <username>kelly</username>, heeft opdrachtnummer 9
+ gekregen. Elke opdracht voor een printer krijgt een uniek
+ opdrachtnummer. Dit nummer kan in de meeste gevallen genegeerd
+ worden, maar is nodig om een opdracht te annuleren. In <link
+ linkend="printing-lprm">Opdrachten verwijderen</link> staan
+ meer details.</para>
+
+ <para>Opdrachtnummer negen bestaat uit twee bestanden; meerdere
+ bestanden opgegeven naar &man.lpr.1;, worden als
+ &eacute;&eacute;n enkele opdracht behandeld. Het is de actieve
+ opdracht (<literal>active</literal> onder de kolom
+ <quote>Rank</quote>), wat betekent dat de printer deze opdracht
+ momenteel aan het afdrukken is. De tweede opdracht bestaat uit
+ gegevens doorgegeven aan &man.lpr.1; als standaard invoer. De
+ derde opdracht is afkomstig van gebruiker
+ <username>mary</username>. Het is een veel grotere opdracht.
+ De bestandsnaam van het bestand dat ze probeert af te drukken
+ is te lang voor het overzicht, daarom toont &man.lpq.1; drie
+ puntjes.</para>
+
+ <para>De allereerste regel uitvoer van &man.lpq.1; is ook handig:
+ die vertelt wat de printer momenteel aan het doen is; dat wil
+ zeggen, wat <application>LPD</application> denkt dat de printer
+ aan het doen is.</para>
+
+ <para>Het commando &man.lpq.1; ondersteunt ook een optie
+ <option>-l</option> om een gedetailleerd, lang overzicht te
+ geven. Hieronder volgt voorbeelduitvoer van
+ <command>lpq -l</command>:</para>
+
+ <screen>waiting for bamboo to become ready (offline ?)
+kelly: 1st [job 009rose]
+ /etc/host.conf 73 bytes
+ /etc/hosts.equiv 15 bytes
+
+kelly: 2nd [job 010rose]
+ (standard input) 1635 bytes
+
+mary: 3rd [job 011rose]
+ /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes</screen>
</sect2>
<sect2 id="printing-lprm">
- <title>* Opdrachten verwijderen</title>
+ <title>Opdrachten verwijderen</title>
+
+ <para>Een gebruiker die van gedachten verandert over een af te
+ drukken opdracht, kan een opdracht uit een wachtrij halen met
+ het commando &man.lprm.1;. Vaak kan met &man.lprm.1; zelfs een
+ actieve opdracht worden verwijderd, maar een deel of alles van
+ de opdracht kan desondanks toch worden afgedrukt.</para>
- <para></para>
+ <para>Om een opdracht van de standaardprinter te verwijderen
+ dient eerst met &man.lpq.1; het opdrachtnummer gevonden te
+ worden. Typ vervolgens:</para>
+
+ <screen>&prompt.user; <userinput>lprm <replaceable>opdrachtnummer</replaceable></userinput></screen>
+
+ <para>Om een opdracht van een specifieke printer te verwijderen,
+ moet de optie <option>-P</option> worden toegevoegd. Het
+ volgende commando verwijdert opdrachtnummer 10 uit de wachtrij
+ van printer <literal>bamboo</literal>:</para>
+
+ <screen>&prompt.user; <userinput>lprm -P bamboo 10</userinput></screen>
+
+ <para>Het commando &man.lprm.1; heeft een aantal
+ snelkoppelingen:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>lprm -</term>
+
+ <listitem>
+ <para>Verwijder alle opdrachten (voor de standaardprinter)
+ van de huidige gebruiker.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>lprm <replaceable>gebruiker</replaceable></term>
+
+ <listitem>
+ <para>Verwijder alle opdrachten (voor de standaardprinter)
+ die van <replaceable>gebruiker</replaceable> zijn. De
+ superuser kan opdrachten van andere gebruikers
+ verwijderen. Andere gebruikers kunnen alleen hun eigen
+ opdrachten verwijderen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>lprm</term>
+
+ <listitem>
+ <para>Zonder een opdrachtnummer, gebruikersnaam of
+ <option>-</option> op de opdrachtregel, verwijdert
+ &man.lprm.1; de huidige actieve opdracht van de huidige
+ gebruiker op de standaard printer. Alleen de superuser
+ kan iedere actieve opdracht verwijderen.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Gebruik de optie <option>-P</option> met bovenstaande
+ snelkoppelingen om een specifieke printer in plaats van de
+ standaard printer te selecteren. Het volgende voorbeeld
+ verwijdert alle opdrachten van de huidige gebruiker uit de
+ wachtrij van printer <literal>rattan</literal>:</para>
+
+ <screen>&prompt.user; <userinput>lprm -P rattan -</userinput></screen>
+
+ <note>
+ <para>Als in een netwerkomgeving wordt gewerkt, staat
+ &man.lprm.1; alleen toe opdrachten te verwijderen vanaf
+ hosts waarvan de afdrukopdrachten zijn gegeven, ook als
+ dezelfde printer vanaf andere hosts bereikbaar is. Het
+ volgende voorbeeld demonstreert dit:</para>
+
+ <screen>&prompt.user; <userinput>lpr -P rattan mijnbestand</userinput>
+&prompt.user; <userinput>rlogin orchid</userinput>
+&prompt.user; <userinput>lpq -P rattan</userinput>
+Rank Owner Job Files Total Size
+active seeyan 12 ... 49123 bytes
+2nd kelly 13 myfile 12 bytes
+&prompt.user; <userinput>lprm -P rattan 13</userinput>
+rose: Permission denied
+&prompt.user; <userinput>logout</userinput>
+&prompt.user; <userinput>lprm -P rattan 13</userinput>
+dfA013rose dequeued
+cfA013rose dequeued
+ </screen>
+ </note>
</sect2>
<sect2 id="printing-lpr-options">
- <title>* Voorbij platte tekst: print opties</title>
+ <title>Meer dan platte tekst: afdrukopties</title>
+
+ <para>Het commando &man.lpr.1; ondersteunt een aantal opties voor
+ de opmaak van platte tekst, het converteren van grafische en
+ andere bestandsformaten, het afdrukken van meerdere
+ kopie&euml;n, afwikkeling van een opdracht en meer. In deze
+ sectie worden die opties beschreven.</para>
<sect3 id="printing-lpr-options-format">
- <title>* Formaat en conversie opties</title>
+ <title>Opties voor opmaak en conversie</title>
+
+ <para>De volgende opties voor &man.lpr.1; zorgen voor de opmaak
+ van de bestanden in de opdracht. Gebruik deze opties als de
+ opdracht geen platte tekst bevat of als platte tekst
+ opgemaakt dient te worden met behulp van &man.pr.1;.</para>
+
+ <indexterm><primary>&tex;</primary></indexterm>
+
+ <para>Het volgende commando drukt bijvoorbeeld een DVI-bestand
+ af (van het &tex; typesettingsysteem) met de naam
+ <filename>fish-report.dvi</filename> op de printer
+ <literal>bamboo</literal>:</para>
+
+ <screen>&prompt.user; <userinput>lpr -P bamboo -d fish-report.dvi</userinput></screen>
+
+ <para>Deze opties zijn van toepassing op alle bestanden in de
+ opdracht. Het is dus niet mogelijk om bijvoorbeeld DVI- en
+ ditroff-bestanden in een opdracht samen te voegen. In plaats
+ hiervan moeten deze bestanden als aparte opdrachten worden
+ gegeven, elk met een andere conversie-optie.</para>
+
+ <note>
+ <para>Al deze opties, behalve <option>-p</option> en
+ <option>-T</option>, vereisen dat er conversiefilters zijn
+ ge&iuml;nstalleerd voor een printer. De optie
+ <option>-d</option> vereist bijvoorbeeld de DVI
+ conversiefilter. In <link
+ linkend="printing-advanced-convfilters">Conversiefilters</link>
+ staan de details beschreven.</para>
+ </note>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-c</option></term>
+
+ <listitem>
+ <para>Afdrukken van cifplot-bestanden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-d</option></term>
+
+ <listitem>
+ <para>Afdrukken van DVI-bestanden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-f</option></term>
- <para></para>
+ <listitem>
+ <para>Afdrukken van FORTRAN tekstbestanden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-g</option></term>
+
+ <listitem>
+ <para>Afdrukken van plotgegevens.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-i <replaceable>aantal</replaceable></option></term>
+
+ <listitem>
+ <para>De uitvoer wordt <replaceable>aantal</replaceable>
+ kolommen ingesprongen. Als
+ <replaceable>nummer</replaceable> wordt weggelaten,
+ wordt acht kolommen ingesprongen. Deze optie werkt
+ alleen met bepaalde conversiefilters.</para>
+
+ <note>
+ <para>Plaats geen spatie tussen de <option>-i</option>
+ en het nummer.</para>
+ </note>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-l</option></term>
+
+ <listitem>
+ <para>Drukt letterlijke tekstgegevens af, inclusief
+ controlkarakters.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-n</option></term>
+
+ <listitem>
+ <para>Afdrukken van ditroff (apparaat onafhankelijke
+ troff) gegevens.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>-p</term>
+
+ <listitem>
+ <para>Opmaak van platte tekst met &man.pr.1; alvorens af
+ te drukken. Zie &man.pr.1; voor meer
+ informatie.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-T <replaceable>titel</replaceable></option></term>
+
+ <listitem>
+ <para>Gebruik <replaceable>titel</replaceable> op de
+ &man.pr.1; koptekst in plaats van de bestandsnaam.
+ Deze optie heeft alleen effect in combinatie met de
+ optie <option>-p</option>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-t</option></term>
+
+ <listitem>
+ <para>Afdrukken van troffgegevens.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-v</option></term>
+
+ <listitem>
+ <para>Afdrukken van rastergegevens.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>In het volgende voorbeeld wordt een mooi opgemaakte
+ versie van de &man.ls.1; handleiding afgedrukt op de
+ standaardprinter:</para>
+
+ <screen>&prompt.user; <userinput>zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t</userinput></screen>
+
+ <para>Het commando &man.zcat.1; pakt de broncode van de
+ &man.ls.1; handleiding uit en geeft het door aan het commando
+ &man.troff.1;, dat de broncode opmaakt, er GNU troff van
+ maakt en dit doorstuurt naar &man.lpr.1;, dat de opdracht
+ naar de <application>LPD</application> wachtrij stuurt.
+ Omdat de optie <option>-t</option> meegeven wordt aan
+ &man.lpr.1;, converteert het wachtrijsysteem de GNU troff
+ uitvoer naar een formaat dat de standaardprinter begrijpt als
+ de opdracht wordt afgedrukt.</para>
</sect3>
<sect3 id="printing-lpr-options-job-handling">
- <title>* Opdracht afhandeling opties</title>
+ <title>Opties voor opdrachtafhandeling</title>
+
+ <para>De volgende opties voor &man.lpr.1; geven
+ <application>LPD</application> aan de opdracht speciaal te
+ behandelen:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>-# <replaceable>kopie&euml;n</replaceable></term>
+
+ <listitem>
+ <para>Produceer een aantal van
+ <replaceable>kopie&euml;n</replaceable> kopie&euml;n
+ van elk bestand in de opdracht, in plaats van
+ &eacute;&eacute;n kopie. Een beheerder kan deze optie
+ uitschakelen om slijtage van de printer te voorkomen en
+ gebruik van een kopieerapparaat aan te moedigen. Zie
+ <link
+ linkend="printing-advanced-restricting-copies">Meerdere
+ kopie&euml;n beperken</link>.</para>
+
+ <para>Dit voorbeeld drukt drie kopie&euml;n af van
+ <filename>parser.c</filename> gevolgd door drie
+ kopie&euml;n van <filename>parser.h</filename> op de
+ standaardprinter:</para>
+
+ <screen>&prompt.user; <userinput>lpr -#3 parser.c parser.h</userinput></screen>
+ </listitem>
+ </varlistentry>
- <para></para>
+ <varlistentry>
+ <term>-m</term>
+
+ <listitem>
+ <para>Stuur een e-mail na voltooi&iuml;ng van de
+ afdrukopdracht. Met deze optie stuurt het
+ <application>LPD</application>-systeem een e-mail als
+ een opdracht is afgehandeld. In dit bericht vertelt
+ het of de opdracht succesvol is uitgevoerd of dat er
+ een fout was met (vaak) de aard van de fout.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>-s</term>
+
+ <listitem>
+ <para>Kopieer de bestanden niet naar de wachtrijmap,
+ maar maak in plaats hiervan een symbolische
+ link.</para>
+
+ <para>Bij het afdrukken van een grote opdracht is het
+ handig van deze optie gebruik te maken. Het spaart
+ ruimte in de wachtrijmap (het kan zijn dat de opdracht
+ de vrije ruimte verbruikt in het bestandssysteem waarin
+ de wachtrijmap zich bevindt). Het bespaart ook tijd,
+ omdat <application>LPD</application> niet elke byte van
+ de opdracht naar de wachtrijmap hoeft te
+ kopie&euml;ren.</para>
+
+ <para>Er is echter een nadeel: aangezien
+ <application>LPD</application> het originele bestand
+ nodig heeft, is het niet mogelijk dit te wijzigen, of
+ te verwijderen totdat het is afgedrukt.</para>
+
+ <note>
+ <para>Bij het afdrukken op een printer in een netwerk,
+ moet <application>LPD</application> een bestand
+ uiteindelijk toch kopie&euml;ren van een lokale host
+ naar een netwerkhost. De optie <option>-s</option>
+ bespaart dus ruimte in een lokale wachtrijmap, niet
+ in die van een host in een netwerk. Het blijft
+ echter nuttig.</para>
+ </note>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>-r</term>
+
+ <listitem>
+ <para>Verwijder bestanden in een opdracht na ze naar een
+ wachtrij gekopieerd te hebben of na ze te hebben
+ afgedrukt als de optie <option>-s</option> is gebruikt.
+ Wees voorzichtig met deze optie!</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</sect3>
<sect3 id="printing-lpr-options-misc">
- <title>* Voorblad opties</title>
+ <title>Voorbladopties</title>
+
+ <para>Deze opties voor &man.lpr.1; passen de tekst aan die
+ gewoonlijk op het voorblad van een opdracht verschijnt. Deze
+ opties hebben geen effect als het afdrukken van voorbladen
+ wordt onderdrukt op een gebruikte printer. Zie <link
+ linkend="printing-advanced-header-pages">Voorbladen</link>
+ voor meer informatie over het opzetten van voorbladen.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>-C <replaceable>tekst</replaceable></term>
+
+ <listitem>
+ <para>Vervang de hostnaam op het voorblad door
+ <replaceable>tekst</replaceable>. De hostnaam is
+ gewoonlijk de naam van de host waarvan de opdracht is
+ verstuurd.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>-J <replaceable>tekst</replaceable></term>
+
+ <listitem>
+ <para>Vervang de naam van de opdracht op het voorblad
+ door <replaceable>tekst</replaceable>. De naam van de
+ opdracht is standaard de naam van het eerste bestand in
+ de opdracht of <filename>stdin</filename> als de
+ standaard uitvoer wordt afgedrukt.</para>
+ </listitem>
+ </varlistentry>
- <para></para>
+ <varlistentry>
+ <term>-h</term>
+
+ <listitem>
+ <para>Druk geen voorblad af.</para>
+
+ <note>
+ <para>Bij sommige installaties kan het zijn dat deze
+ optie geen effect heeft door de manier waarop de
+ voorbladen worden gegenereerd. Zie <link
+ linkend="printing-advanced-header-pages">Voorbladen</link>
+ voor de details.</para>
+ </note>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</sect3>
</sect2>
<sect2 id="printing-lpc">
- <title>* Printers beheren</title>
+ <title>Printers beheren</title>
+
+ <para>De beheerder van de printers in een netwerk heeft deze
+ moeten installeren, opzetten en testen. Met het commando
+ &man.lpc.8; kan een beheerder op nog meer manieren communiceren
+ met printers. Met &man.lpc.8; is het mogelijk om:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Printers te starten en te stoppen;</para>
+ </listitem>
+
+ <listitem>
+ <para>Wachtrijen aan en uit te zetten;</para>
+ </listitem>
+
+ <listitem>
+ <para>De volgorde van opdrachten in elke wachtrij
+ aan te passen.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Ten eerste een opmerking over terminologie: als een
+ printer is <emphasis>gestopt</emphasis>, drukt die niets uit
+ een wachtrij af. Gebruikers kunnen nog steeds opdrachten
+ geven, maar opdrachten wachten in een wachtrij totdat de
+ bijbehorende printer is <emphasis>gestart</emphasis> of als de
+ wachtrij vrij is.</para>
+
+ <para>Als een wachtrij is <emphasis>uitgeschakeld</emphasis>,
+ kan geen enkele gebruiker (behalve <username>root</username>)
+ opdrachten naar een printer versturen. Een
+ <emphasis>ingeschakelde</emphasis> wachtrij accepteert
+ opdrachten. Een printer met een uitgeschakelde wachtrij kan
+ worden <emphasis>gestart</emphasis> en drukt dan alle
+ afdrukopdrachten in de wachtrij af tot deze leeg is.</para>
+
+ <para>In het algemeen is het nodig
+ <username>root</username>-rechten te hebben om het commando
+ &man.lpc.8; te gebruiken. Gewone gebruikers kunnen het
+ commando &man.lpc.8; gebruiken om een printerstatus op te
+ vragen en om een vastgelopen printer te herstarten.</para>
+
+ <para>Nu volgt een samenvatting van de &man.lpc.8; commando's.
+ De meeste commando's accepteren een argument
+ <replaceable>printernaam</replaceable>, om aan te geven op
+ welke printer te werken. Om op alle printers te werken die in
+ <filename>/etc/printcap</filename> genoemd worden, kan
+ <literal>all</literal> worden gebruikt als
+ <replaceable>printernaam</replaceable>.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><command>abort
+ <replaceable>printernaam</replaceable></command></term>
+
+ <listitem>
+ <para>Annuleer de huidige opdracht en stop de printer.
+ Gebruikers kunnen nog steeds opdrachten versturen als
+ de wachtrij is ingeschakeld.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>clean
+ <replaceable>printernaam</replaceable></command></term>
- <para></para>
+ <listitem>
+ <para>Verwijder oude bestanden uit de wachtrijmap van
+ de betreffende printer. Het kan weleens gebeuren dat de
+ bestanden waaruit een opdracht bestaat niet juist worden
+ verwijderd door <application>LPD</application>. Dit
+ gebeurt bijvoorbeeld wanneer er fouten zijn opgetreden
+ tijdens het afdrukken of tijdens grote administratieve
+ activiteit. Dit commando vindt en verwijdert bestanden
+ die niet in de wachtrijmap thuishoren.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>disable
+ <replaceable>printernaam</replaceable></command></term>
+
+ <listitem>
+ <para>Nieuwe opdrachten kunnen niet meer in de wachtrij
+ worden geplaatst. Als de printer nog draait, drukt die
+ de opdrachten die zich nog in de wachtrij bevinden
+ af. De superuser (<username>root</username>) kan
+ altijd opdrachten versturen, ook naar een uitgeschakelde
+ wachtrij.</para>
+
+ <para>Dit commando is handig bij het testen van een nieuwe
+ printer of een filterinstallatie: schakel de wachtrij uit
+ en verstuur als <username>root</username> opdrachten.
+ Andere gebruikers kunnen geen opdrachten versturen todat
+ het testen is voltooid en de wachtrij weer is
+ ingeschakeld met het commando
+ <command>enable</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>down <replaceable>printernaam</replaceable>
+ <replaceable>boodschap</replaceable></command></term>
+
+ <listitem>
+ <para>Schakel een printer uit. Equivalent aan
+ <command>disable</command> gevolgd door
+ <command>stop</command>. De
+ <replaceable>boodschap</replaceable> verschijnt als de
+ status van de printer als een gebruiker de wachtrij van
+ de printer controleert met &man.lpq.1; of de status
+ met <command>lpc status</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>enable
+ <replaceable>printernaam</replaceable></command></term>
+
+ <listitem>
+ <para>Schakel de wachtrij van een printer in. Gebruikers
+ kunnen opdrachten versturen, maar de printer drukt ze pas
+ af als deze is gestart.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>help
+ <replaceable>commandonaam</replaceable></command></term>
+
+ <listitem>
+ <para>Geef hulp over het commando
+ <replaceable>commandonaam</replaceable>. Zonder
+ <replaceable>commandonaam</replaceable>, wordt een
+ samenvatting van de beschikbare commando's
+ getoond.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>restart
+ <replaceable>printernaam</replaceable></command></term>
+
+ <listitem>
+ <para>Start de printer. Gewone gebruikers kunnen dit
+ commando gebruiken als door een uitzonderlijke
+ omstandigheid <application>LPD</application> hangt, maar
+ ze kunnen een printer niet starten die gestopt is met
+ een van de commando's <command>stop</command> of
+ <command>down</command>. Het commando
+ <command>restart</command> is equivalent aan
+ <command>abort</command> gevolgd door
+ <command>start</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>start
+ <replaceable>printernaam</replaceable></command></term>
+
+ <listitem>
+ <para>Start de printer. De printer drukt opdrachten in
+ zijn wachtrij af.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>stop
+ <replaceable>printernaam</replaceable></command></term>
+
+ <listitem>
+ <para>Stop de printer. De printer maakt de huidige
+ opdracht af en drukt opdrachten in de wachtrij niet af.
+ Gebruikers kunnen nog steeds opdrachten versturen naar
+ een ingeschakelde wachtrij, ook al is de printer
+ gestopt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>topq <replaceable>printernaam</replaceable>
+ <replaceable>opdracht-of-gebruikersnaam</replaceable></command></term>
+
+ <listitem>
+ <para>Herschik de wachtrij voor
+ <replaceable>printernaam</replaceable> door de opdrachten
+ met de opgegeven <replaceable>opdracht</replaceable>
+ nummers of opdrachten van
+ <replaceable>gebruikersnaam</replaceable> bovenaan de
+ wachtrij te plaatsen. Voor dit commando is het niet
+ mogelijk <literal>all</literal> te gebruiken als
+ <replaceable>printernaam</replaceable>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>up
+ <replaceable>printernaam</replaceable></command></term>
+
+ <listitem>
+ <para>Schakel een printer in. Het omgekeerde van het
+ commando <command>down</command>. Equivalent aan
+ <command>start</command> gevolgd door
+ <command>enable</command>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>&man.lpc.8; accepteert bovenstaande commando's op de
+ opdrachtregel. Als er geen commando's worden gegeven,
+ schakelt &man.lpc.8; over op een interactieve modus, waar
+ opdrachten gegeven kunnen worden totdat het commando
+ <command>exit</command>, <command>quit</command> of
+ end-of-file wordt gegeven.</para>
</sect2>
</sect1>
<sect1 id="printing-lpd-alternatives">
- <title>* Alternatieven voor de standaard spooler</title>
+ <title>Alternatieven voor het standaard wachtrijsysteem</title>
+
+ <para>Na het lezen van deze handleiding, heeft de lezer zo'n beetje
+ alles gelezen wat er te leren valt over het wachtrijsysteem
+ <application>LPD</application> zoals het te vinden
+ is in &os;. Er zijn veel tekortkomingen te onderkennen, wat
+ vanzelf leidt tot de vraag: <quote>Welke andere wachtrijsystemen
+ zijn er beschikbaar (en werken onder &os;)?</quote></para>
+
+ <variablelist>
+ <varlistentry>
+ <term>LPRng</term>
+
+ <indexterm><primary>LPRng</primary></indexterm>
+
+ <listitem>
+ <para><application>LPRng</application>, dat <quote>LPR: the
+ Next Generation</quote> betekent, is een compleet
+ herschreven PLP. Patrick Powell en Justin Mason (de
+ voornaamste beheerder van PLP) hebben samengewerkt om
+ <application>LPRng</application> te maken. De thuispagina
+ voor <application>LPRng</application> is <ulink
+ url="http://www.lprng.org/"></ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>CUPS</term>
+
+ <indexterm><primary>CUPS</primary></indexterm>
- <para></para>
+ <listitem>
+ <para><application>CUPS</application>, het Common UNIX
+ Printing System, voorziet in een porteerbare printlaag voor
+ &unix;-achtige besturingssystemen. Het is ontwikkeld door
+ Easy Software Product, om een standaard afdrukoplossing
+ voor alle &unix;-producenten en gebruikers te
+ promoten.</para>
+
+ <para><application>CUPS</application> gebruikt het Internet
+ Printing Protocol (<acronym>IPP</acronym>) als basis voor
+ het beheren van afdrukopdrachten en wachtrijen. De
+ protocollen Line Printer Daemon (<acronym>LPD</acronym>),
+ Server Message Block (<acronym>SMB</acronym>) en AppSocket
+ (ook bekend als JetDirect) worden ook ondersteund met
+ minder functionaliteit. CUPS biedt bladeren naar
+ netwerkprinters en &postscript; Printer Description
+ (<acronym>PPD</acronym>) gebaseerde afdrukopties om
+ real-world printing onder &unix; te ondersteunen.</para>
+
+ <para>De thuispagina voor <application>CUPS</application> is
+ <ulink url="http://www.cups.org/"></ulink>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</sect1>
<sect1 id="printing-troubleshooting">
- <title>* Problemen oplossen</title>
+ <title>Problemen oplossen</title>
+
+ <para>Na het uitvoeren van een simpele test met &man.lptest.1; is
+ mogelijk een van onderstaande resultaten verkregen, in plaats
+ van de juiste uitvoer:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>Het werkte na enige tijd of er kwam geen volle
+ pagina.</term>
+
+ <listitem>
+ <para>De printer drukte bovenstaande af, maar wachtte enige
+ tijd zonder iets te doen. Het was zelfs nodig om een
+ PRINT REMAINING, of FORM FEED-knop op te printer in te
+ drukken om enig resultaat te krijgen.</para>
+
+ <para>Als dit het geval is, dan stond de printer
+ waarschijnlijk te wachten of er nog meer gegevens van de
+ opdracht zouden komen, alvorens iets af te drukken. Om dit
+ probleem op te lossen, kan het tekstfilter worden aangepast
+ zodat deze een FORM FEED-karakter (of wat er ook nodig is)
+ naar de printer stuurt. Dit is meestal voldoende om een
+ printer zover te krijgen om tekst af te drukken die zich
+ nog in de interne buffer bevindt. Het is ook nuttig om er
+ zeker van te zijn dat elke afdrukopdracht eindigt op een
+ hele pagina, zodat de volgende opdracht niet ergens midden
+ op de laatste pagina van de vorige opdracht begint.</para>
+
+ <para>De volgende vervanging voor het shellscript
+ <filename>/usr/local/libexec/if-simple</filename> drukt een
+ form feed nadat de opdracht naar een printer is
+ gestuurd:</para>
+
+ <programlisting>#!/bin/sh
+#
+# if-simple - Eenvoudige tekst inputfilter voor lpd
+# Ge&iuml;installeerd in /usr/local/libexec/if-simple
+#
+# Kopieert eenvoudig stdin naar stdout. Negeer alle filter argumenten.
+# Schrijft een form feed karakter (\f) na het afdrukken van de opdracht.
+
+/bin/cat &amp;&amp; printf "\f" &amp;&amp; exit 0
+exit 2</programlisting>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>De opdracht produceerde een getrapt effect.</term>
+
+ <listitem>
+ <para>Het resultaat ziet er als volgt uit:</para>
+
+ <programlisting>!"#$%&amp;'()*+,-./01234
+ "#$%&amp;'()*+,-./012345
+ #$%&amp;'()*+,-./0123456</programlisting>
+
+ <indexterm><primary>MS-DOS</primary></indexterm>
+
+ <indexterm><primary>OS/2</primary></indexterm>
+
+ <indexterm><primary>ASCII</primary></indexterm>
+
+ <para>Dit krijgen slachtoffers van het
+ <emphasis>trap effect</emphasis> te zien. Het wordt
+ veroorzaakt door conflicterende interpretaties van de
+ karakters die een regeleinde aangeven. &unix;-achtige
+ besturingssystemen gebruiken een enkel karakter: ASCII code
+ 10, de line feed (LF). &ms-dos;, &os2; en andere
+ besturingssystemen gebruiken twee karakters: ASCII code 10
+ <emphasis>en</emphasis> ASCII code 13 (de carriage return,
+ CR). Veel printers gebruiken de &ms-dos;-conventie voor
+ het representeren van regeleinden.</para>
+
+ <para>Als onder &os; wordt afgedrukt, bevat de tekst alleen
+ het line feed-karakter. Na het zien van een line
+ feed-karakter vervolgt de printer zijn werk op de volgende
+ regel, maar behoudt dezelfde horizontale positie op de
+ pagina voor het afdrukken van het volgende teken. Hier is
+ de carriage return voor bedoeld: om het volgende karakter
+ af te drukken aan de linkerkant van de pagina.</para>
+
+ <para>Dit is wat &os; wil dat de printer doet:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>Printer ontvangt CR</entry>
+ <entry>Printer drukt CR af</entry>
+ </row>
+
+ <row>
+ <entry>Printer ontvangt LF</entry>
+ <entry>Printer drukt CR + LF af</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Hier volgen een aantal manieren om dit te
+ bereiken:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Gebruik de instellingentoetsen of het
+ bedieningspaneel van de printer om de interpretatie van
+ deze karakters aan te passen. Controleer de
+ handleiding van de printer om uit te vinden hoe dit
+ moet.</para>
+
+ <note>
+ <para>Als een systeem in een ander besturingssysteem
+ dan &os; wordt opgestart, kan het nodig zijn een
+ printer <emphasis>opnieuw</emphasis> in te stellen,
+ zodat die een interpretatie voor CR en LF karakters
+ gebruikt die bij dat andere besturingssysteem horen.
+ Het kan de voorkeur genieten een van onderstaande
+ oplossingen te gebruiken.</para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para>Zorg dat het seri&euml;le line stuurprogramma van
+ &os; automatisch LF naar CR+LF converteert. Dit werkt
+ natuulijk <emphasis>alleen</emphasis> voor printers op
+ een seri&euml;le poort. Gebruik de optie
+ <literal>ms#</literal> en zet de modus
+ <literal>onlcr</literal> in het bestand
+ <filename>/etc/printcap</filename> voor de printer om
+ deze functionaliteit in te schakelen.</para>
+ </listitem>
+
+ <listitem>
+ <para>Stuur een <emphasis>escapecode</emphasis> naar een
+ printer om tijdelijk LF karakters anders te behandelen.
+ Raadpleeg hiervoor de handleiding van de printer om
+ escapecodes te achterhalen die de printer ondersteunt.
+ Als de juiste escapecode is gevonden, moet de
+ tekstfilter worden aangepast zodat deze eerst de code
+ stuurt en vervolgens de afdrukopdracht.</para>
+
+ <indexterm><primary>PCL</primary></indexterm>
- <para></para>
+ <para>Hier volgt een eenvoudig tekstfilter voor printers
+ die HP PCL escapecodes begrijpen. Dit filter zorgt dat
+ een printer LF karakters behandelt als LF en CR,
+ vervolgens verstuurt het de opdracht en tot slot een
+ form feed om de laatste pagina in de opdracht uit te
+ voeren. Het zou met alle HP printers moeten
+ werken.</para>
+
+ <programlisting>#!/bin/sh
+#
+# hpif - Eenvoudig tekst invoerfilter voor lpd voor HP PCL printers
+# Ge&iuml;nstalleerd in /usr/local/libexec/hpif
+#
+# Kopieert eenvoudig stdin naar stdout. Negeert alle filterargumenten.
+# Vertelt de printer om LF te zien als CR+LF.
+# Werpt de pagina uit na voltooi&iuml;ng.
+
+printf "\033&amp;k2G" &amp;&amp; cat &amp;&amp; printf "\033&amp;l0H" &amp;&amp; exit 0
+exit 2</programlisting>
+
+ <para>Nu volgt een voorbeeldbestand
+ <filename>/etc/printcap</filename> voor host
+ <hostid>orchid</hostid>. Er is een printer aangesloten
+ op de eerste parallelle poort; een HP LaserJet 3Si,
+ genaamd <literal>teak</literal>. Die gebruikt
+ bovenstaand script als tekstfilter:</para>
+
+ <programlisting>#
+# /etc/printcap voor host orchid
+#
+teak|hp|laserjet|HP LaserJet 3Si:\
+ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/hpif:</programlisting>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>De regels zijn over elkaar afgedrukt.</term>
+
+ <listitem>
+ <para>De printer is nooit een regel opgeschoven. Alle regels
+ tekst lopen over elkaar en zijn op dezelfde regel
+ afgedrukt.</para>
+
+ <para>Dit probleem is het <quote>omgekeerde</quote> van het
+ trap effect, zoals boven beschreven en is veel zeldzamer.
+ Ergens worden de LF karakters die &os; gebruikt om een
+ regel te eindigen gezien als CR karakters om de
+ afdruklocatie te verplaatsen naar de linkerkant van het
+ papier, zonder &oacute;&oacute;k een regel naar beneden te
+ gaan.</para>
+
+ <para>Gebruik de instellingtoetsen, of het bedieningspaneel
+ van de printer om de volgende interpretatie van LF en CR af
+ te dwingen:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Printer ontvangt</entry>
+ <entry>Printer drukt af</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>CR</entry>
+ <entry>CR</entry>
+ </row>
+
+ <row>
+ <entry>LF</entry>
+ <entry>CR + LF</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>De printer is karakters kwijt.</term>
+
+ <listitem>
+ <para>Tijdens het afdrukken heeft de printer een paar
+ karakters per regel niet afgedrukt. Het kan zijn dat het
+ probleem erger werd naarmate de printer zijn werk deed,
+ steeds meer karakters verliezend.</para>
+
+ <para>Het probleem is dat de printer de snelheid waarmee de
+ computer gegevens over een seri&euml;le lijn stuurt niet
+ bij kan houden (dit probleem zou zich niet voor moeten doen
+ met printers op een parallelle poort). Er zijn twee
+ manieren om dit probleem te verhelpen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Als de printer XON/XOFF flow control ondersteunt,
+ zorg dan dat &os; dit gebruikt door de modus
+ <literal>ixon</literal> in de optie
+ <literal>ms#</literal> te specificeren.</para>
+ </listitem>
+
+ <listitem>
+ <para>Als de printer carrier flow control ondersteunt,
+ specificeer dan de modus <literal>crtscts</literal> in
+ de optie <literal>ms#</literal>. Zorg dat de bedrading
+ van de kabel die printer met de computer verbindt juist
+ is voor carrier flow control.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Er werd onzin afgedrukt.</term>
+
+ <listitem>
+ <para>Het lijkt alsof de printer willekeurige onzin afdrukte
+ en niet de gewenste tekst.</para>
+
+ <para>Dit is meestal een ander symptoom van verkeerde
+ communicatieparameters voor een seri&euml;le printer.
+ Controleer de bps-snelheid in de optie
+ <literal>br</literal> en de instelling voor partiteit in de
+ optie <literal>ms#</literal>. Wees er zeker van dat de
+ printer dezelfde instellingen gebruikt als in het bestand
+ <filename>/etc/printcap</filename> worden opgegeven.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Er gebeurde niets.</term>
+
+ <listitem>
+ <para>Als er niets gebeurde, ligt het probleem waarschijnlijk
+ bij &os; en niet bij de hardware. Voeg de optie
+ logboekbestand (<literal>lf</literal>) toe in
+ <filename>/etc/printcap</filename> voor de betreffende
+ printer. Hier is bijvoorbeeld de definitie voor
+ <literal>rattan</literal> met de optie
+ <literal>lf</literal>:</para>
+
+ <programlisting>rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:\
+ :lf=/var/log/rattan.log</programlisting>
+
+ <para>Probeer vervolgens nogmaals af te drukken. Controleer
+ het logboekbestand (in dit voorbeeld
+ <filename>/var/log/rattan.log</filename>) op mogelijke
+ foutmeldingen. Probeer op basis van deze melding het
+ probleem te verhelpen.</para>
+
+ <para>Aks er geen optie <literal>lf</literal> is opgegeven,
+ gebruikt <application>LPD</application>
+ <filename>/dev/console</filename> als standaard.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</sect1>
</chapter>
-<!--
+<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
diff --git a/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml
index e1d978ec17..27225bbc05 100644
--- a/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/security/chapter.sgml,v 1.77 2005/10/04 21:04:27 siebrand Exp $
- gebaseerd op: 1.282
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml,v 1.78 2005/12/10 23:40:58 siebrand Exp $
+ gebaseerd op: 1.283
-->
<chapter id="security">
@@ -4160,15 +4160,15 @@ options IPSEC_ESP</programlisting>
<para>Er zijn een aantal daemons beschikbaar voor het bijhouden
van beveiligingssamenwerking in &os;. In dit artikel wordt
- beschreven hoe dat met racoon gaat. racoon zit in de &os;
- Portscollectie in de security/ categorie en kan op de
- gebruikelijke manier ge&iuml;nstalleerd worden.</para>
+ beschreven hoe dat met racoon gaat. racoon is in de &os;
+ Portscollectie beschikbaar vanuit <filename
+ role="package">security/ipsec-tools</filename>.</para>
<indexterm><primary>racoon</primary></indexterm>
- <para><filename role="package">security/racoon</filename> moet
- draaien op beide gateway hosts. Op iedere host moet het
- <acronym>IP</acronym> adres van de andere kant van het VPN
+ <para><application>Racoon</application> moet draaien op beide
+ gateway hosts. Op iedere host moet het
+ <acronym>IP</acronym>-adres van de andere kant van het VPN
ingesteld worden en een geheime sleutel (die door de
gebruiker zelf is gekozen en die hetzelfde moet zijn op beide
gateways).</para>
@@ -4513,7 +4513,7 @@ options IPSEC_ESP</programlisting>
<listitem>
<para>Installeer <filename
- role="package">security/racoon</filename>. Wijzig
+ role="package">security/ipsec-tools</filename>. Wijzig
<filename>${PREFIX}/etc/racoon/psk.txt</filename> op
beide gateway hosts en voeg een regel toe voor het
<acronym>IP</acronym> adres van de host aan de andere
diff --git a/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml
index 5df83b0ba2..4a682fa1ad 100644
--- a/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml
@@ -2,8 +2,8 @@
The FreeBSD Dutch Documentation Project
$FreeBSD$
- $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml,v 1.38 2005/10/04 21:25:55 siebrand Exp $
- Gebaseerd op: 1.167
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml,v 1.39 2005/12/18 11:59:03 siebrand Exp $
+ Gebaseerd op: 1.168
-->
<chapter id="x11">
@@ -1297,10 +1297,11 @@ EndSection</programlisting>
<application>XDM</application> gestuurde schermen wordt het
protocol X Display Manager Connection Protocol (XDMCP)
gebruikt. Het bestand is een set regels die XDMCP
- verbindingen met andere machines bestuurt. Standaard mag
- iedere client een verbinding maken. Zolang
- <filename>xdm-config</filename> niet is aangepast om
- verbindingen te accepteren is dat geen probleem.</para>
+ verbindingen met andere machines bestuurt. Het wordt
+ genegeerd, tenzij <filename>xdm-config</filename> is
+ gewijzigd zodat er wordt geluisterd naar inkomende
+ verbindingen. Standaard wordt het clients niet toegestaan te
+ verbinden.</para>
</sect3>
<sect3>