# &CUPS;-opties die nog niet beschikbaar zijn vanuit &kcontrol;

In dit hoofdstuk krijgt u enkele tips over verdere instelmogelijkheden die niet beschikbaar zijn in de grafische interface voor &CUPS; van &kdeprint;.

## Overzicht van de aangeboden mogelijkheden

Alle meest gebruikte mogelijkheden en functies die &CUPS; biedt, worden ondersteund in &kdeprint;:

- Printerbeheer wordt ondersteund: u kunt printers toevoegen, verwijderen, wijzigen, instellen, testen, uitschakelen, inschakelen...

- Taakbeheer wordt ondersteund: u kunt taken annuleren, behouden, vrijgeven, verplaatsen naar andere printer;

- Afdrukopties: voor volledige controle zoals aangeboden door &CUPS;.

## Hulp verkrijgen bij het gebruik van &CUPS;

U kunt een heleboel informatie over de interne werking van &CUPS; vinden via de webinterface, die altijd ondersteund wordt door &CUPS;. U kunt het met elke browser opvragen (ja, zelfs met een tekstbrowser). Ga naar http://localhost:631/ voor de inhoudsopgave. U kunt daar een koppeling vinden naar lokaal beschikbare &CUPS;-documentatie in HTML en PDF voor wanneer u nieuw bent met &CUPS;.

U kunt, behalve via &kdeprint;, ook toegang krijgen tot &CUPS; via twee oorspronkelijke &CUPS;-interfaces: met de commandoregel en met uw browser. Met de vele beschikbare hulpmiddelen voor op de commandoregel kunt u een zo volledig mogelijke controle krijgen over &CUPS;. De webinterface omvat slechts een deel van alle beschikbare instellingen en mogelijkheden.

Dit geldt ook voor &kdeprint;. In de regel is het zo dat nieuwe functies die bij de ontwikkeling van &CUPS; toegevoegd worden eerst alleen geïmplementeerd worden voor gebruik op de commandoregel. Het is handig om de nieuwste versie van de man-pagina's van &CUPS; te bekijken als u een nieuwe versie installeert, om op de hoogte te blijven van de nieuwe functies en mogelijkheden.

Het is mogelijk dat, wanneer u een versie van &CUPS; opwaardeert, uw actieve configuratiebestand niet vervangen wordt voor de nieuwe versie. Dit hangt af van de methode van opwaarderen. Dit heeft als gevolg dat uw nieuwe, verbeterde &CUPS;-daemon niet wordt gevraagd om de nieuwe mogelijkheden te gebruiken.

U kunt ten alle tijden een lijst van beschikbare bestanden en man-pagina's vinden in de &CUPS; Software Administrator Manual (http://localhost:631/sam.html#FILES). Typ in &konqueror; in het veld Locatie de regels `man:/lpadmin` en `man:/cupsd.conf` om informatie te vinden over het belangrijkste commando en configuratiebestand (was u al bekend met deze mooie manier van &konqueror; om de traditionele man-pagina's van &UNIX; te tonen?). Lees deze pagina's door. Vanaf dit punt krijgt u interessante tips en koppelingen naar andere man-pagina's en documentatie.

### Het vinden van man-pagina's met betrekking tot &CUPS;

Hieronder ziet u een manier waarmee u man-pagina's op uw systeem kunt vinden die over &CUPS; gaan:

    kurt@transmeta:~
    > apropos cups

    cups-calibrate (8)- ESP Printer Calibration Tool
    lpstat (1)        - print cups status information
    cups-lpd (8)      - receive print jobs + report printer status to lpd clients
    classes.conf (5)  - class configuration file for cups
    backend (1)       - cups backend transmission interfaces
    filter (1)        - cups file conversion filter interfaces
    cups-polld (8)    - cups printer polling daemon
    mime.types (5)    - mime type description file for cups
    cupsd (8)         - common unix printing system daemon
    lpadmin (8)       - configure cups printers and classes
    cupsd.conf (5)    - server configuration file for cups
    mime.convs (5)    - mime type conversion file for cups
    printers.conf (5) - printer configuration file for cups
    mime.convs (5)    - mime type conversion file for cups
    cups-polld (8)    - cups printer polling daemon
    lpstat (1)        - print cups status information
    backend (1)       - cups backend transmission interfaces
    mime.types (5)    - mime type description file for cups
    cupsd (8)         - common unix printing system daemon
    lpadmin (8)       - configure cups printers and classes
    printers.conf (5) - printer configuration file for cups
    cupsd.conf (5)    - server configuration file for cups
    filter (1)        - cups file conversion filter interfaces

## Buiten &kdeprint; om: tips en trucs met &CUPS; op de commandoregel

Hier vindt u enkele voorbeelden van opties die op dit moment alleen toegankelijk zijn via de commandoregel.

### Printertoegang toestaan of weigeren voor bepaalde gebruikers

Wanneer u een printer op de commandoregel installeert (of wijzigt), kunt u het gebruik van de printer in kwestie voor bepaalde gebruikers toestaan of weigeren:

    lpadmin -pHeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u allow:kurt,sylvi,hansjoerg -E -P /home/kurt/PPDs/DVHV.ppd

Dit staat het gebruik van deze (geloof me: erg mooie en tevens erg professionele) printer alleen toe aan de drie vermelde gebruikers en tegelijkertijd weigert het alle andere gebruikers de printer te gebruiken. Als een andere gebruiker probeert af te drukken op de DigiMaster via deze &CUPS;-server, ontvangt hij of zij de foutmelding client-error-not-possible.

    lpadmin -p HeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u deny:tackat,boss,waba -E -P /home/kurt/PPDs/DVHV.ppd

Dit weigert het gebruik van dezelfde printer voor de drie genoemde gebruikers en staat het gebruik tegelijkertijd toe aan alle anderen. Wanneer een verworpen gebruiker probeert af te drukken op de DigiMaster via deze &CUPS;-server, ontvangt hij of zij de foutmelding client-error-not-possible.

U kunt slechts één van deze twee opties tegelijkertijd gebruiken; op dit moment is er nog geen ondersteuning op een soortgelijke optie die op groepen is gebaseerd. Dit zal in de toekomst veranderen.

### Quota's opleggen voor bepaalde printers

Soms is het nodig om quota's op te leggen voor bepaalde printers. Met quota's kunt u een limiet instellen voor het aantal pagina's of de hoeveelheid data die mag worden afgedrukt gedurende een bepaalde periode voor de gewenste printer.

U kunt een quota opleggen met de optie `-o` bij het installeren van een printer met het commando `lpadmin`. Dit is ook nogmogelijk na de installatie voor een reeds bestaande printer. Hieronder vindt u enkele richtlijnen (die op het moment van schrijven nog niet stonden in de officiële &CUPS;-documentatie):

- &CUPS; biedt ondersteuning voor quota's gebaseerd op het aantal pagina's of de bestandsgrootte voor elke printer apart.

- Quota's worden voor elke gebruiker apart berekend (dus een enkele set limieten is van toepassing op alle gebruikers voor de gebruikte printer).

- Quota's omvatten ook schutbladen (indien gebruikt).

- Dat betekent dat het mogelijk is om elke gebruikers maximaal 20 pagina's per dag te laten afdrukken op een dure printer, maar het is niet mogelijk om alle gebruikers dit limiet op te leggen behalve Kurt of root.

- U kunt de opties `job-k-limit`, `job-page-limit` en `job-quota-period` opgeven wanneer u een nieuwe printer instelt.

- Met `job-quote-period` bepaalt u de tijd waartussen de quota's berekend worden (de intervallen worden uitgedrukt in seconden; een dag is dus 60x60x24=86.400, een week is 60x60x24x8=604.800 en een maand is 60x60x24x30=2.592.000 seconden).

- Als u wilt dat de quota's ook werkelijk werken, zowel moeten time-period als job-k-limit en/of job-page-limit ongelijk zijn aan nul.

- De standaardwaarde van `job-k-limit` is 0. Dit geeft aan dat er geen limiet ingesteld is.

- De standaardwaarde van `job-page-limit` is 0. Dit geeft aan dat er geen limiet ingesteld is.

- De standaardwaarde van `job-quota-period` is 0. Dit geeft aan dat het limiet van toepassing is op alle taken die door de betreffende gebruiker zijn afgedrukt en bij het systeem nog steeds bekend zijn.

#### Voorbeelden die werken:

Het werkt alleen, wanneer time-period en job-quota-period en/of job-k-limit zijn ingesteld.

    lpadmin -p danka_infotec_4850 -o job-quota-period=604800 -o job-k-limit=1024

Hiermee wordt een limiet ingesteld waarbij elke gebruiker gedurende een week in totaal maximaal 1 MB mag afdrukken met de printer genaamd danka_infotec_4850.

    lpadmin p danka_infotec_4105 -o job-quota-period=604800 -o job-page-limit=100

Hiermee wordt een limiet ingesteld waarbij elke gebruiker gedurende een week maximaal 100 pagina's in totaal mag afdrukken met de printer genaamd danka_infotec_4105.

    lpadmin -p danka_infotec_P450 -o job-quota-period=604800 -o job-k-limit=1024 -o job-page-limit=100

Hiermee wordt een gecombineerd limiet ingesteld waarbij elke gebruiker in totaal maximaal 1 MB en 100 pagina's mag afdrukken voor de printer genaamd danka_infotec_P450 gedurende een week. Het limiet dat het eerst bereikt wordt zal effect hebben.

#### Voorbeelden die niet werken

Het werkt NIET, wanneer alleen een time-period of een job-limit ingesteld is.

    lpadmin -p danka_infotec_P320 -o job-quota-period=604800

    lpadmin -p danka_infotec_FullColor -o job-page-limit=100

    lpadmin -p danka_infotec_HiSpeed -o job-k-limit=1024

#### Gerelateerde foutmeldingen

Wanneer een gebruiker zijn quotalimiet heeft bereikt, krijgt hij/zij een client-error-not-possible-foutmelding wanneer deze probeert af te drukken.

### Een rauwe printer installeren

Er bestaan verschillende manieren om een rauwe printer in te stellen. Een erg makkelijke manier is door het commando `lpadmin` te gebruiken. Als u geen &PPD;-bestand instelt voor die printer wordt het automatisch een rauwe printer:

    lpadmin -p Raw_Danka_infotec -E -v lpd://10.160.16.137/PORT1

Rauwe printerwachtrijen gebruiken het afdrukbestand niet om het over te zetten naar een ander bestandsformaat. Dat is bijvoorbeeld nodig wanneer u vanaf &Windows;-cliënten via Samba met &CUPS; afdrukt naar een PCL-printer; in dit geval zorgt het stuurprogramma van de printer vanaf de kant van &Windows; zelf voor het juiste bestandsformaat dat de printer kan lezen, als dit bestand gefilterd wordt door &CUPS; zou het eindresultaat juist slechter worden. Onder bepaalde omstandigheden (als u ervoor wilt zorgen dat het bestand niet-gefilterd door &CUPS; wordt doorgestuurd naar de printer) kan `lpadmin` zonder &PPD; handig zijn.

## Problemen oplossen bij &CUPS; in &kdeprint;

Dit onderdeel van het handboek van &kdeprint; zal ontstaan uit reacties van lezers. Dit is slechts een beginnetje.

### Foutmeldingen

Wat betekent de foutmelding client-error-bad-request?

De gebruiker heeft een bestand naar &CUPS; verzonden welke de server niet kon afhandelen. Dit gebeurt ook als u een leeg bestand verstuurt.

En de fout client-error-not-possible?

De gebruiker heeft geen toestemming om af te drukken met de gebruikte printer, of het quota is bereikt (gebaseerd op de bestandsgrootte en/of aantal pagina's).

En client-error-not-found?

De gebruiker heeft geprobeerd toegang te krijgen tot een niet-bestaande bron op de &CUPS;-server, hij/zij probeerde bijvoorbeeld een niet-bestaand bestand af te drukken, of een bestand waarvoor de gebruiker geen leesbevoegdheid heeft.

### Vragen en antwoorden

Waarom kan ik mijn taken niet herstarten?

Om uw voltooide taken te kunnen herstarten via de webinterface dient u een instelling in het bestand `/etc/cups/cupsd.conf` te wijzigen: zet `PreserveJobFiles` op `True`.

Hoe kom ik af van de lange lijst van voltooide taken bij de webinterface?

TE DOEN

Hoe werkt het tellen van pagina's?

&CUPS; telt het aantal pagina's bijna altijd door de taak door de pstops-filter te voeren. Deze filter telt onder andere de pagina's in een taak. De uitvoer van deze filter kan in een pijp worden doorgezonden naar andere filters (zoals pstoraster --> rastertopcl) of direct naar een printer gestuurd worden (als het een &PostScript;-printer is).

Dit gaat in alle gevallen hetzelfde voor netwerk-, parallelle, seriële en USB-printers op dezelfde manier. pstops wil als invoer een &PostScript;-bestand dat zich houdt aan DSC (Document Structuring Convention), of dat er bijna gelijk mee is. Het aantal pagina's wordt berekend tijdens het filteren op de afdrukserver en er wordt informatie geschreven over elke pagina apart (de tijd, de gebruiker, het identificatienummer en de naam van de taak, de printer, het aantal afdrukken van welke pagina's van het document, het aantal kilobyte) naar `/var/log/cups/page_log`.

Trouwens: op mijn persoonlijke wensenlijst staat een aangepaste versie van webalizer om het page_log-bestand in te lezen en te analyseren om zo een soortgelijke uitvoer te geven. Iemand interesse?

Dit zorgt echter niet voor juiste resultaten in de volgende gevallen:

- De printer heeft een storing en verwijdert de taak daarom (dit zeg ik uit eigen ervaring; het is ook mogelijk dat er problemen zijn met het dataformaat);

- Taken afgedrukt als rauw worden altijd geteld als zijnde één pagina lang (met wellicht meerdere kopieën).

Het pagina-aantal dat door &CUPS; werd geteld is dus slechts een benadering (in vele gevallen een uitstekende of minimaal een goede benadering, in andere gevallen is deze vrij slecht). De enige echt betrouwbare teller is deinterne printerteller (omdat dit degene is waarvoor u betaald, als er gebruik wordt gemaakt van een klikprijs of iets dergelijks). Sommige printers, maar zeker niet de meeste, kunnen op afstand worden gevraagd voor die informatie via SNMP (Simple Network Management Protocol). Dat betekent dat er in een wat groter netwerk met vele verschillende printers gewoonweg geen betrouwbaar en nauwkeurig hulpmiddel is voor het tellen van pagina's!

Waarom werkt het tellen van pagina's niet bij &Windows;-cliënten?

Afdruktaken die van &Windows;-cliënten komen moeten bijna altijd rauw worden verstuurd. Waarom? Als &CUPS; de afdrukserver is voor &Windows;-cliënten waarbij de originele &Windows;-stuurprogramma's voor de doelprinter worden gebruikt, is het gegarandeerd dat de taak al juist is geformatteerd door de cliënt. Daarom mag de server niet iets uithalen met het bestand en moet deze het rauw afdrukken; er worden geen filters gebruikt (en dat is zelfs niet mogelijk, aangezien de invoer van de cliënt niet een &PostScript;-bestand is, zoals pstops verwacht; het aantal pagina's wordt dus niet geteld en de standaard, 1, wordt gebruikt.

Hoe kom ik aan een lijst van beschikbare opties voor een gegeven printer of &PPD;-bestand?

Zie de man-pagina voor het commando `lpoptions`. U kunt een systeem met &CUPS; onderzoeken op elk mogelijk onderdeel over diens beschikbare printers. Het is niet nodig om lokaal een printer geïnstalleerd te hebben. Zolang de printer lokaal beschikbaar is (via de functie printerbladeren van &CUPS;), werkt dit ook op afstand.

Om een optie van een printer op te vragen door het volgende te typen: ``lpoptions` `-p` `HitachiDDP70MicroPress` `-l``, zult u een lange lijst krijgen van alle beschikbare opties gelezen uit het &PPD;-bestand voor de gegeven Hitachi-Printer (in mijn geval geïnstalleerd op de server transmeta op afstand). De server op afstand Transmeta en diens &CUPS;-daemon moeten actief zijn, net als de &CUPS;-daemon van uw eigen systeem, als u wilt dat dit lukt.

Hoe moet ik de lijst lezen die ik ontvang van het commando `lpoptions`?

U weet wellicht dat het voor fabrikanten van &PostScript;-printers legaal is om hun eigen interne namen en procedures te definiëren, zelfs voor standaardopties van &CUPS;. Zolang het stuurprogramma de mogelijkheid heeft om de optie uit de &PPD; te halen op een manier die begrepen wordt gaat alles goed. Maar wat doet u, als u een onbekende printeroptie wilt gebruiken vanaf de commandoregel? Hoe weet u wat de juiste syntaxis is?

Laten we een voorbeeld nemen. Als we kijken naar de DDP70 van Hitachi en hoe deze duplexafdrukken implementeert wordt er al wat duidelijk. Hoe vertelt u nu dat u dubbelzijdig wilt afdrukken? duplex of Duplex? Of iets heel anders?

    lpoptions -h transmeta -p Hitachi_DDP70_ClusterPrintingSystem -l | grep uplex

Dit geeft de volgende uitvoer:

    TR-Duplex/Duplex: False *True

Dit kunt u als volgt interpreteren:

- De naam van de onderzochte optie is `TR-Duplex`;

- Achter de schuine streep staat een vertaling van deze optie, zoals deze wordt getoond in een grafische omgeving of webinterface (Duplex);

- De optie accepteert één van de waarden `False` of `True`;

- De huidige waarde is `True`; u kunt dat zien door een markering met een asterisk `*`.

Om de huidige standaardinstelling (duplex) te overschrijden en zo een taak in simplex af te drukken gebruikt u het volgende commando:

    lpr -P Hitachi_DDP70_ClusterPrintingSystem -o TR-Duplex=False /path/to/your/printjob

Hoe kan ik een mooi uitgevoerde lijst krijgen van beschikbare opties voor een gegeven printer of &PPD;?

U kunt hiervoor het commando `lphelp` gebruiken dat mogelijk lokaal geïnstalleerd is op uw systeem. Er bestaat nog geen man-pagina voor `lphelp`.

    lphelp infotecP450

Hiermee krijgt u een lijst te zien van alle beschikbare opties voor de genoemde printer. Het ziet er netjes uit en legt elke optie uit en vertelt hoe u het kunt gebruiken. U kunt ook een lijst maken van de opties van verschillende printers tegelijk:

    lphelp infotec7410color DANKA_fullcolor_D2000 HP_ColorLaserJet8550

Dit werkt ook met &PPD;-bestanden. Vul hiervoor simpelweg het pad in van de &PPD;:

    lphelp /home/kurt/PPDs/HP-ColorLaserJet8550.ppd

### Problemen oplossen

Geen enkel systeem is perfect. Hier vindt u enkele valkuilen waar men vaak in valt.

Mijn printer genaamd 3-lp-duplex vertoont onjuist gedrag. Wat is er mis?

De printernamen die u in &CUPS; kunt gebruiken moeten beginnen met een letter en mogen maximaal 128 letters, cijfers en underscores bevatten. Het gebruik van liggende streepjes kan tot problemen leiden. Over naamgeving gesproken: de printernamen in &CUPS; zijn niet hoofdlettergevoelig. Een printer genaamd Beste_van_Danka is dus gelijk aan beste_van_danka of BESTE_VAN_DANKA (dit is een vereiste van &IPP;, waarmee &CUPS; volledig compatibel is).

Waarom krijg ik de fout Unable to connect to SAMBA host: Success wanneer ik vanuit &Windows; wil afdrukken via Samba?

Hebt u de juiste rechten op de &Windows;-computer op afstand? Is het u eigenlijk wel toegestaan om op &Windows; af te drukken?

Mijn bestanden voor printer lp verdwijnen soms op mysterieuze wijze en twee dagen later wordt mij gezegd dat ze afgedrukt zijn op een printer die drie etages lager staat. Wat gebeurt er?

Geloof me, het zal niet vaak gebeuren dat uw printer de enige is met de naam lp. Wellicht haalt &CUPS; een trucje met u uit. Wanneer u de instelling ImplicitClasses On geactiveerd hebt, probeert &CUPS; alle printers die deze op het netwerk ziet in een klasse met de naam lp te groeperen. Alle afdruktaken voor lp worden naar deze klasse gestuurd en het eerst beschikbare lid drukt de taak af. Dus als u een goede vriend hebt (die aandachtig luisterde wanneer u opgetogen sprak over &CUPS; en &kdeprint;), installeer dan &CUPS; en snuffel rond in het systeem... hebt u het idee?

Laat mij een advies geven: kies een unieke naam voor elke netwerkprinter (denk eraan dat zelfs een printer op uw parallelle poort een netwerkprinter wordt voor de rest van de wereld als u niet goed op uw instellingen let).