# Technisch overzicht

In dit hoofdstuk wordt een technisch overzicht van &kdeprint; gegeven dat niet-programmeurs moeten kunnen begrijpen.

&kdeprint; is een nieuw en revolutionair hulpmiddel voor eenvoudige toegang tot afdrukservices voor zowel &kde;-gebruikers als &kde;-ontwikkelaars.

## Een korte beschrijving van &kdeprint;

U kunt de functies van &kdeprint; op verschillende manieren aanroepen: met de Afdrukbeheerder in &kcontrol;, door middel van het commando `kprinter` of via het dialoogvenster dat verschijnt als u iets wilt afdrukken.

### Wat het niet is

&kdeprint; is geen vervanging voor het afdruksubsysteem zelf. &kdeprint; verzorgt dus niet het spoolen en houdt zich niet bezig met de basisverwerking van &PostScript; of andere afdrukgegevens.

### Wat het wel is

&kdeprint; is een tussenlaag tussen het spoolen en het (geïnstalleerde) afdruksubsysteem dat de gegevens verwerkt, en de toepassing die wil afdrukken. &kdeprint; verschaft een algemene interface voor &kde;-ontwikkelaars en &kde;-gebruikers naar verschillende ondersteunde afdruksubsystemen. Daarbij is het naar uw wensen aan te passen en erg instelbaar.

&kdeprint; is gemakkelijk voor zowel &kde;-ontwikkelaars als -gebruikers. Ontwikkelaars kunnen, met minimale wijzigingen, hun programma's poorten voor gebruik van &kdeprint; in plaats van het oude afdruksysteem van &Qt;. Gebruikers kunnen zonder veel moeite kun afdruksubysteem kiezen en instellen.

Voor nieuwe &kde;-gebruikers: &Qt; is de basisbibliotheek en grafische toolkit die wordt gebruikt door alle &kde;-toepassingen. &Qt; wordt ontwikkeld door TrollTech, een softwarefabrikant uit Noorwegen.

## &kdeprint; -- verschillend gebruik voor verschillende mensen

&kdeprint; heeft verschillende gezichten voor verschillende soorten mensen.

### Wat gebruikers en beheerders kunnen met &kdeprint;

&kdeprint; verschaft gebruikers en/of beheerders, afhankelijk van hun rechten, toegang tot afdruksubsystemen (&CUPS;, LPD, RLPR, LPRng, PDQ, enzovoort) met een grafische gebruikersinterface (&GUI;) van &kde;. Met &kdeprint; kunnen zij afdrukken en taken, printers en de printerdaemon beheren, en dat alles op een eenvoudige manier.

Ervaren gebruikers zullen de mogelijkheid waarderen om welke filter dan ook voor afdrukgegevens tussen de uitvoer van de toepassing en de invoer te gebruiken voor het gekozen afdruksubsysteem. Enige voorbeelden hiervan zitten standaard in &kdeprint;. Dit komt ergens anders aan de orde.

### Wat &kde;-ontwikkelaars ermee kunnen...

Wanneer een ontwikkelaar voor &kde; printertoegang wil verschaffen voor zijn/haar toepassing, schrijft diegene de afdrukfuncties niet vanuit het niets. Voor &kde; 2.2 werd dit gedaan door de klasse `QPrinter`, een bibliotheekfunctie van de toolkit &Qt;. Deze klasse maakte gebruik van de ouderwetse Line Printer Daemon (LPD). De bibliotheek &kdeprint; is daarentegen gebaseerd op het modernere Common &UNIX; Printing System (&CUPS;), waarbij tegelijkertijd compatibiliteit wordt gehouden met LPD en andere oudere (of minder uitgebreide) afdruksubsystemen. &kdeprint; zet zijn deuren ook open voor nieuwe ontwikkelingen in de toekomst.

&kde;-ontwikkelaars die de nieuwe klasse &kdeprint; in hun toepassingen willen gebruiken hoeven slechts minimale wijzigingen door te voeren: bij elke aanroep van `QPrinter` hoeft dit alleen worden gewijzigd in `KPrinter`. Door één (!) letter te wijzigen op een paar plekken is het gebeurd; de toepassing kan gebruik maken van alle mogelijkheden van de nieuwe &kdeprint;-bibliotheek.

Meer ambitieuze ontwikkelaars of ontwikkelaars met speciale behoeften kunnen meer: ondanks het functierijke raamwerk van &kdeprint; is het nog steeds mogelijk om het afdrukdialoogvenster van een toepassing aan te passen door een extra tabblad toe te voegen, waar de uitbreidingen tot de standaard versie vn &kdeprint; zich direct thuis voelen.

De laatstgenoemde mogelijkheid wordt nog niet veel gebruikt in &kde;, omdat de meeste ontwikkelaars nog niet helemaal bekend zijn met de kracht van &kdeprint;. U kunt hier in de toekomst meer van verwachten. Een voorbeeld hiervan dat ik heb gevonden is de toepassing &kcron;. U kunt hiermee de crontab bewerken met een grafische omgeving. De ontwikkelaars hebben een afdrukfunctie ingebouwd waarmee u (of de gebruiker root) kunt kiezen of u de hele tabel wilt afdrukken (dus voor alle gebruikers) of alleen het deel dat is geselecteerd. U kunt in de volgende schermafdrukken zien wat dit voor effect heeft op &kdeprint;.

Deze schermafdruk toont een voorbeeld van &kcron; zelf. &kcron;: een klein voorbeeld van de cron-taken van een systeem getoond door de grafische omgeving hiervoor van &kde;. De ontwikkelaars van &kcron; laten het aan u over of u de hele cron-tabel wilt afdrukken of alleen dat wat geselecteerd is.

Het dialoogvenster om de afdrukopties voor &kcron; in te stellen: het extra tabblad genaamd Cron-opties komt van &kcron; zelf, en dus niet van &kdeprint;. Het is een speciale uitbreiding die door de &kcron;-ontwikkelaars is toegevoegd en komt niet van &kdeprint; maar wordt erdoor uitgevoerd. Ontwikkelaars van andere toepassingen zijn vrij om hun eigen tabbladen te implementeren als ze vinden dat dat nodig is.

Toevoeging van &kcron; aan het &kdeprint;-dialoogvenster.
Toevoeging van &kcron; aan het &kdeprint;-dialoogvenster.

Toevoeging van &kcron; aan het &kdeprint;-dialoogvenster.

### Wat &kdeprint; aan iedereen biedt...

De eenvoudig te gebruiken interface van &kdeprint; naar alle ondersteunde afdruksubsystemen werkt natuurlijk niet de traditionele zwakke plekken van deze systemen weg. Maar er worden wel enkele haken en ogen weggewerkt. Elke gebruiker kan een apart afdruksubsysteem gebruiken op dezelfde computer. Een gebruiker kan zelfs nog van afdruksubsysteem wijzigen net voordat hij/zij begint met afdrukken (dit is mogelijk omdat de verschillende subsystemen op zo'n manier zijn geïnstalleerd dat ze elkaar niet in de weg zitten).

De meeste &UNIX;-gebruikers zijn gewend om af te drukken met LPD. LPD verschaft echter slechts basisfunctionaliteit, is zeer inflexibel en maakt geen gebruik van de vele mogelijkheden van moderne afdruksubsystemen zoals &CUPS;. Waar het op afstand afdrukken betreft heeft LPD over elke afstand (net als elk protocol op TCP/IP gebaseerd) gebrek aan bidirectionele communicatie, authenticatie, toegangsbesturing en ondersteuning voor cryptografie.

Als &kdeprint; gebruik maakt van &CUPS; wordt het volgende ondersteund:

- Het LAN doorzoeken naar beschikbare printers;

- Basic- en Digest-authenticatie en authenticatie op basis van certificaat;

- Toegangsbesturing op basis van IP-adressen, netadressen, netmaskers, host- en domeinnamen;

- 128-bit TLS- of SSL3-cryptografie van afdrukgegevens om afluistering te voorkomen (of het in elk geval een stuk moeilijker te maken).

Dit maakt &kdeprint; tot een veel robuuster en betrouwbaarder oplossing dan de oude LPD.

### Toegang verkrijgen tot &kdeprint;

U kunt op vier verschillende manieren toegang verkrijgen tot &kdeprint; of delen ervan:

- Via uw toepassingen: u kunt het afdrukdialoogvenster oproepen door Bestand Afdrukken... te selecteren of door te klikken op de knop met het printerpictogram.

- Via het commando `kprinter` in een terminal, &konsole;-venster of met de opdracht Commando uitvoeren...: hiermee wordt ook het afdrukdialoogvenster geopend.

- Met de knop om zo &kcontrol; te starten, waarna u gaat naar SysteemAfdrukbeheerder. Hiermee wordt het beheerscherm van &kdeprint; geopend dat deel uit maakt van het &kcontrolcenter;. U kunt vervolgens ook naar andere delen van &kcontrol; gaan.

- Door vanaf de commandoregel (&konsole; of venster Commando uitvoeren) het volgende te typen: ``kcmshell` `printmgr``. Hiermee wordt het deel van &kdeprint; uit &kcontrol; geopend waarmee u uw instellingen kunt wijzigen.

Het &kprinter;-dialoogvenster wordt gestart vanuit het venster Commando uitvoeren.
Het &kprinter;-dialoogvenster wordt gestart vanuit het venster Commando uitvoeren.

Het &kprinter;-dialoogvenster wordt gestart vanuit het venster Commando uitvoeren.

Dit is een &kivio;-schets van het &kprinter;-dialoogvenster dat verschijnt als het is opgestart. U kunt ten alle tijden een nieuwe printer toevoegen door te klikken op de knop met opschrift Wizard (in deze schets rood/geel ingekleurd).

Dialoogvenster van &kprinter; (&kivio;-schets)
Dialoogvenster van &kprinter; (&kivio;-schets)

Dialoogvenster van &kprinter; (&kivio;-schets)