's Highlights
The new system includes more than one highlight. Having worked in a not exactly sophisticated environment as far as printing is concerned, in previous years, have a look at some of the goodies that come with

The Add Printer Wizard
has an Add Printer Wizard. The Add Printer Wizard helps you adding and configuring a new printer. Of course, you may do this manually as well.
helps you discover printers. It is able to scan the environment for available devices and queues. This works for network connections against TCP (AppSocket, aka JetDirect, or IPP) or SMB/Samba (shared ) printers and partially for directly attached printers over parallel, serial, or USB connections.
A screenshot of the new Add Printer Wizard
Here's a screenshot of the Add Printer Wizard (this one is not very exciting yet; but...)
The wizard makes the installation and handling of the drivers a snap. Selecting, configuring and testing should be easy as never before on any -like system.

Full Print Job Control
The Print Job Viewer is automatically started by . It may be docked into the panel (in the system tray). The Print Job Viewer allows full job management, if supported by the print subsystem.
You can:
Hold and release jobs,
Move pending jobs to another printer,
Cancel pending or processing jobs.
A screenshot of the PrintJob Viewer shows the info you get: Job-ID, target printer, job name, job owner, job status and job size. In the next release you will also see information about the number of pages (as calculates it; see chapter on page accounting for more info about its merits and limitations).
A screenshot of the PrintJob Viewer
Here's a screenshot of the PrintJob Viewer.
A screenshot of the PrintJob Viewer.
An alternative way to looking at the same info (and having the same amount of control is through the going to System Printing Manager. If you don't see the Printer Information, right click onto the window background and select View Printer Informations. Then go to the Jobs tab to see this:
Here's a screenshot of the PrintJob Viewer.

Modules for different print subsystems
uses different modules to realize the interface to the possible print subsystems. Not all the modules are yet developed fully, but you will have basic printing functionality with:
LPD (BSD style)
LPRng (, if you just use it's BSD style subset),
RLPR (a command-line LPR utility, which doesn't need a printcap file.
external print commands ( like).
Most importantly, full support for is already there. Modules for other print subsystems, such as PLP, PPR and PDQ may be available later.
makes much more flexible. It gives freedom of choice to 2.2 users. To use different available print subsystems, these must, of course, be installed independently from . In former versions, users were stuck with the old LPD style print subsystems. Now they can even use . In the future, there will be easy integration of new subsystems, as they might appear on the scene.

More Goodies

Benefitting all Print SubSystems.
Some specific features of depend on the chosen print subsystem. This dependency might exist because those features are only implemented there; remember, is an intermediate layer between applications, and the print subsystem, but it's no replacement for any print subsystem by itself. Such dependency may exist for another reason: that has not yet implemented an interface to all the features of all the subsystems.
Other features include goodies from that are independent of the chosen print subsystem, and are available with every one. At present there are special or virtual printers, and some generic pre-filters.
Print Preview 	 From the Print Dialog, you can select to look at a preview. For this the print file is sent through filters which make it fit for display on screen by .
Special Printers 	 Amongst these additional features are a few special or virtual printers:
These special printers may:
Print to PDF 	 Convert our document into a PDF with the help of an external program.
Print to email 	 Send your document as an email attached PDF file.
Print to PS file 	 Save your document as a file.
Print to Fax 	 Send it through an available backend, such as Hylafax as a fax.
These special printers appear in the user print dialog just like normal printers. They are entirely configurable on a per-user basis.
Generic Pre-Filtering 	 provides you with a framework to define and configure your own pre-filters. These pre-filters may take effect before they are passed to your print subsystem for further processing, but after the ( or text or other) print files have been generated by your application.
There are a few useful filters already predefined. These are:
The multiple pages per sheet filter,
the enscript text filter,
and three filters to help print pamphlets.
You may create your own filters based on any third party program that is able to process , text, or image files, and output any one of those formats.
Those filters are configured through XML files. This makes an extension of the concept very easy for experienced geeks, but end-user configuration is also done through an intuitive graphical user interface. So, fear not, you don't need to learn XML because of !.
Multiple Pages Per Sheet Filter 	 This is a predefined filter that installs with . It allows you to create a modified output, from input, that prints 1, 2, or 4 logical pages on a single sheet of physical paper.
Enscript Text Filter 	 This is a predefined filter that installs with . It allows you to create output from any text file input, that includes syntax highlighting for program listings, pretty-print, and nice configurable page frames and headers.
Pamphlet Printing Filters 	 If your printer is able to produce duplex output, using either one-pass or two-pass technology, you may be able to use one or a combination of the pamphlet filters.
For duplexing printers, make sure to use the duplex option that turns the output along the short paper edge. Folding the output along the middle turns your document into a nice pamphlet.
If you are stuck to using a simplex-only device, you can do the same, using two different filters and a few additional steps.
Depending on your model, first use the filter for printing the odd pages, then insert the paper in the correct order back into the paper tray to get the even pages printed on the reverse side. Finish by folding.

Support: the Most Important Module in
contains a module for . , the Common UNIX Printing System (http://www.cups.org/), is the most advanced, powerful and flexible of all print subsystems on and other like operating systems. It is still quite new on the horizon, but is based on IPP, the Internet Printing Protocol, the newly emerging standard for the future of network printing. is clearly the print system of choice for Michael Goffioul, the principal developer.
Experienced users may already be familiar with Michael's utilities qtcups and kups (co-developed with Jean-Eric Cuendet). These were up until now the graphical front ends for with a strong relation to .

qtcups and kups — The Predecessors
Both utilities are probably still in wide usage. For those not familiar with them, here are short explanations.
qtcups was a graphical front end for the lp or lpr print commands as installed by . Using qtcups opened a dialog. This dialog let you comfortably select your printer and the print job options. qtcups worked from the command line, or from within applications, when the application in question had a configurable print command.
kups was a graphical wrapper to do the administration tasks for your server, and the daemon at the heart of it. You could add, delete, modify, configure, start, and stop printers. You could cancel, delete, move, stop and restart print jobs, and you could change the settings of the daemon, start, stop, and restart it.

— The Heir
The Module in now contains all (and more) functions that were provided by qtcups and kups in former versions.
Instead of qtcups you now can use the kprinter command. And in place of kups you will in future probably use kcmshell printmgr.
The module for also lets you fully administer the print subsystem, just like kups did before. It can start, stop and configure your daemon. It also can stop, start, add and delete printers ( printer queues) and printer instances. Printer instances are printer queues that point to the same physical output device but with a different default setting of print options.

— Graphical Print Command
's module gives you access to a graphical print command, like qtcups did before.
Use in any application, even non application that lets you configure your print command. Examples of this are and StarOffice, but not most pre- 2.2 programs.
A screenshot how to use the new kprinter print command instead of the old-fashioned lpr... (Of course you need to have kprinter in your $PATH for this short version; otherwise give the full path in the dialog once, ⪚ /opt/kde/bin/kprinter. will remember this and from now on you always get the kprinter dialog to configure your printouts.
A screenshot of the kprinter print command in action.
Here's a screenshot how to use the new kprinter print command instead of the old-fashioned lp or lpr in .
You can also use from the commandline and see the resulting dialog box pop up:
Screenshot of kprinter command
Screenshot of using the kprinter command from the commandline.
Just make sure you give at least the file to be printed from the commandline as well: kprinter /usr/share/doc/packages/cups/sam.pdf. This will hand over the Software Administrator Manual to the kprinter dialogue, which then pops up with the default printer pre-selected.
To pre-select a specific printer from the commandline, use it like kprinter -d DANKAcolorC2000 /home/kurt/linuxtag2001-paper.ps. You can still de-select the printer DANKAcolorC2000 and choose a different one.
You cannot however call kprinter without a print file and hope to open a file selection dialog box from the kprinter window. This is a feature that will be implemented only in the next version.
Through kprinter your are able to ring all the bells and blow all the whistles of your printer. You will need a device-specific so-called ( Printer Description) to enable to make this nice tandem team do this for you. Read more about this in .

Plans for Future Development
What you have now is the first, already very feature-rich version of . This version is, of course, fully usable for printing. >You might even think, that it never was so easy (not even back in the dark days you had to use .
In the future, will become even better. It will do a better job of detecting your installed print subsystem itself. Already is doing quite well in automatically sensing if you have on your system. But in many cases you will have to tell what you are using, if you want to keep a legacy print system.
The most important improvement in the near future will be a completion of the LPRng plugin. This at present is still very basic. It is restricted to the pure classical LPD part of LPRng.
Also, you may be able to add printers directly from the print dialog to your system just in time, without going to first.
Some smaller improvements already planned are:
add a file selection dialog from the kprinter window to allow for combining additional files to the present printjob
add a history button to the KJobViewer window and also a column to show the number of pages calculates for the job.
Finally, there will be an IO slave that will give you access to your print subsystem, via for example. With this you will soon be able to browse your print subsystem from through a like shortcut such as print://printers/printername. A KPart will add a virtual folder to the services section of the sidebar, giving a nice integrated way to browse and manage your print system via the print:/manager.
Please contact Michael Goffioul at goffioul@imec.be with any further user or developer suggestions.