Dit document geeft een toelichting op het begrip 'print spooler' en een inleiding in de CUPS 'print spooler' software.
Dit document is gebaseerd op CUPS versie 1.5.3
Oorspronkelijk was het zo geregeld dat een applicatie, die in staat was om output naar een printer te sturen, zelf de gehele printopdracht in overleg met de printer moest zien af te handelen. De applicatie moest dus de juiste kennis aan boord hebben om concrete printers te kunnen aansturen.
Maar: een gebruiker die via een applicatie een printopdracht geeft wil meteen kunnen doorwerken (of de applicatie zelfs kunnen afsluiten). Hij wil niet gedwongen worden te wachten totdat zijn printwerk daadwerkelijk uit de printer rolt en er geen interactie meer nodig is tussen printer, applicatie en gebruiker. Ook wil hij meer dan 1 printopdracht achter elkaar naar de printer kunnen sturen. 1)
Om aan deze wensen van de gebruiker tegemoet te komen
is een mechanisme ontwikkeld
dat de printopdracht van de applicatie aanpakt,
in een wachtrij (op disk of in geheugen) plaatst
en vanaf dat moment de complete regie voert over de verdere afhandeling ervan,
zodat de gebruiker de applicatie meteen weer voor iets anders kan benutten
of kan afsluiten.
Dit mechanisme wordt een print spooler genoemd.
2)
Op een computer met 'print spooler' software hoeft de applicatie dus niets meer
te weten over concrete printers: hij hoeft alleen te weten
aan welke wachtrij ('print queue') de printopdracht van de gebruiker moet
worden aangeboden.
Het “inrichten van een printer” op zo'n computer is daardoor in feite
niets anders dan het inrichten van een wachtrij op de betreffende 'print spooler'.
Zo'n wachtrij wordt door een beheerder op systeemniveau ingericht & beheerd
m.b.v. de beheermodule van de 'print spooler' software.
In onze Tux4u®/Penguin Suite Linux distributie wordt (net zoals in vele andere UNIX, Linux en Mac OS® X besturingssystemen) de CUPS 'print spooler' software gebruikt.
CUPS staat voor: Common UNIX Printing System.
CUPS is open source 'print spooler' software ('printer management software'),
die in 1997 door Michael Sweet in zijn bedrijf Easy Software Products werd ontwikkeld
voor UNIX-achtige besturingssystemen.
3)
De CUPS 'print spooler' software bestaat in essentie uit de volgende 3 onderdelen (zie illustratie):
Met de ingebouwde beheermodule CUPS Printer Administration kan een daarvoor geautoriseerde gebruiker (bv. de systeembeheerder: 'root') voor de aanwezige printers printerwachtrijen op de CUPS 'print spooler' inrichten en beheren.
De CUPS scheduler, filters, backends en beheermodule worden hierna stuk voor stuk kort toegelicht.
Zodra een wachtrij ('print queue') op de CUPS 'print spooler' is ingericht wordt hij beheerd door de 'scheduler' (ook wel 'spooler' genoemd).
Wanneer de gebruiker via een applicatie een printtaak ('print job') opgeeft,
copieert de applicatie de betreffende data (d.w.z. een bestand of
de uitvoer van de applicatie zelf)
naar de wachtrij van de beoogde printer.
De printtaak krijgt van de scheduler een taaknummer ('print job-ID')
voor de specifieke wachtrij en moet achteraan aansluiten.
Vervolgens zorgt de scheduler ervoor dat de printtaken in de wachtrij
op volgorde van binnenkomst (FIFO: 'first in, first out') worden afgehandeld.
Wanneer de printtaak aan de beurt is, wordt hij door de scheduler
doorgegeven aan de CUPS Filters.
Daarbij wordt de volgende informatie meegegeven:
De scheduler houdt bij hoe de printtaak verder wordt afgehandeld en verwijdert de printtaak uit de wachtrij zodra hij daadwerkelijk aan de printer is aangeboden. Tot dat moment kan de gebruiker de printtaak nog annuleren ('cancellen').
Via de CUPS Filters doorloopt de printtaak
een aantal filterslagen om de inhoud te converteren naar 'printer data',
d.w.z. om te zetten in een voor de printer geschikte printertaal & formaat,
zodat de printtaak door de beoogde printer geaccepteerd en verwerkt kan worden.
De aldus ontstane 'printer data' wordt daarna voor een laatste filterslag
doorgegeven aan de CUPS backends.
De in de CUPS Filters te volgen procedure is allereerst afhankelijk
van het data-type van de inhoud:
voor een afbeelding zal een andere filterprocedure
worden toegepast dan voor bv. een tekst- of HTML-bestand.
De procedure in de CUPS Filters bestaat daarom uit 2 primaire filterslagen:
Omdat de scheduler geen informatie heeft doorgegeven over
het data-type van de printtaak, moet eerst
het zgn. MIME-type
('Internet Media Type'/'Content Type') van de inhoud worden bepaald.
4)
Een voorbeeld van een MIME-type is: “text/html; charset=UTF-8”
(d.w.z. tekst van het type HTML op basis van de UTF-8 tekenset).
CUPS gebruikt twee MIME-databases om het MIME-type en het daarbij behorende filter te achterhalen:
Op basis van het MIME-type wordt de inhoud van de printtaak m.b.v. het bijbehorende filter omgezet naar _e'_e'n van de twee volgende formaten:
Vervolgens moet worden vastgesteld of het formaat nu geschikt is om (via de CUPS backends) aan de printer te worden aangeboden of niet. Dit wordt gecheckt a.h.v. de zgn. CUPS PostScript Printer Description File ('CUPS PPD-file') van de betreffende wachtrij. 7)
De CUPS PPD-file van de wachtrij is door CUPS gemaakt op het moment
dat de wachtrij door de beheerder op de CUPS 'print spooler' werd ingericht.
Het bestand bevat alle kenmerken
van de betreffende printer die voor die specifieke wachtrij van toepassing zijn
(zoals bv. ondersteunde printertaal & formaat,
wel/niet dubbelzijdig afdrukken, vast aantal afdrukken per printtaak, enz.).
Met de CUPS PPD-file van de wachtrij als referentie wordt
bepaald of verdere filtering noodzakelijk is.
Voor inhoud die op basis van MIME-type in de eerste filterslag is omgezet
in PostScript-formaat kan die check
als volgt uitpakken:
De CUPS Backends voeren een laatste filterslag uit om de printer data via het juiste protocol te transporteren naar de fysieke printer.
Er zijn CUPS Backends voor rechtstreeks (“lokaal”) transport via een parallelle-, seri_e:le- of USB-poort en “netwerk backends” voor transport via een netwerk connectie, op basis van specifieke protocollen, bv.:
De ingebouwde beheermodule CUPS Printer Administration is het instrument waarmee printerwachtrijen op de CUPS 'print spooler' kunnen worden ingericht, beheerd en bekeken.
Er zijn 3 methoden ('interfaces') om toegang tot de beheermodule te krijgen:
De aanbevolen interface is de web interface: deze biedt toegang tot
alle facetten van CUPS Printer Administration.
Het lpadmin-commando doet dat ook, maar is m.n. bedoeld voor de
geoefende gebruiker en voor gebruik vanuit scripts.
De desktop interface biedt meestal
slechts beperkte toegang tot CUPS Printer Administration.
Autorisatie:
Voor het inrichten van een wachtrij op de CUPS 'print spooler' zijn de volgende gegevens nodig:
CUPS bewaart de configuratie van de wachtrij (“printer configuratie”) in het bestand /etc/cups/printers.conf in combinatie met de 'CUPS PPD-file' /etc/cups/ppd/queue_name.ppd.
Met de beheermodule kunnen zowel lokale als remote wachtrijen worden ingericht:
Bij het inrichten van een lokale wachtrij
kan worden aangeven of deze lokale wachtrij wel/niet gedeeld
('shared') zal worden met andere systemen binnen het netwerk.
Een systeem dat zijn wachtrij(en) deelt wordt een CUPS print server
genoemd.
De beheermodule biedt diverse mogelijkheden om de instellingen van zo'n
CUPS 'print server' (zoals de configuratie, autorisatie, 'logging')
naar wens aan te passen.
Een gedeelde lokale wachtrij zal door de CUPS print server automatisch via een 'IPP-broadcast' aan de andere CUPS clients (systemen met actieve CUPS 'print spoolers') binnen het netwerk bekend worden gemaakt. Dit betekent dat er op de CUPS 'print spooler' van die CUPS clients in principe geen remote wachtrijen hoeven te worden ingericht. 12)
Het printen met CUPS wordt beschreven in het document: Printen met CUPS (cups-printen.txt).
Het inrichten van een wachtrij op de lokale CUPS 'print spooler' wordt beschreven in het document: CUPS: Inrichten Lokale printer (cups-lokale-printer.txt).
Voor het inrichten van een CUPS 'print server' en het gebruik daarvan vanuit een Linux of Windows systeem, zie het document: Inrichten Netwerk Printer (ps-net-printer_nl.txt).
Uitgebreide (Engelstalige) CUPS documentatie is te vinden via de web interface van de beheermodule CUPS Printer Administration, onder de TAB Online Help.
Copyright © 2013 Integrated Services; Tux4u.nl
Author: M. Waldorp-Bonk; cups-inleiding.txt 2013-07-16