by Kurt Pfeifle, <kpfeifle@danka.de>
documentation of KDEPrint,
Network Printing Consultant,
Danka Deutschland GmbH

(I-1.) Overview:
KDEPrint Now Ready For Enterprise Desktop!

Short description and summary of new features in KDE-3.0

The most outstanding feature of KDE-3.0.x for enterprise desktop computing is the new version of KDEPrint. KDEPrint's modular design makes it easy to support different print-subsystems (like CUPS, LPRng, RLPR, Generic Unix LPD or even any other external program) through one consistent user interface.

Especially if used in conjunction with CUPS, the Common Unix Printing System, KDEPrint will pose as a powerful factor to make KDE conquer many enterprise desktop workstations in the coming months and years. CUPS is often already contained on your Linux-CD; it is the default printing system for Mandrake Linux; other versions for supported operating systems are available from Easy Software Products at CUPS.org for all flavors of Linux, and many commercial UNIX brandnames. By providing a KDE interface to CUPS, KDEPrint brings to the light of the day a lot of dearly-desired CUPS features. These were and are contained in CUPS already for a long time, but were so far hidden in obscure commandlines and seldom-read man pages.

Comfortable printing for home users

KDEPrint had already satisfied most needs of an individual desktop user in its last version. If the basic print-subsystem of the KDE-computer is CUPS (which is recommended by the KDEPrinting Team), one could already select, change and save all details of job options dynamically. One could also create fixed sets of those options under a "speaking" name (like "infotec/duplexed-stapled"), called "instances" for a certain printer. This way, an instance would appear under its own name inside the printer list. The new instance makes the pre-defined option set available with one click, instead of going through the whole process of option setup for each new job again.

Many inkjet printer types are able to print photographic quality now when driven by ESP PrintPro, Gimp-Print, HPIJS, TurboPrint or similar driver packages. KDEPrint, since version 2.2, provided a complete user interface to all these options. It reduced manipulation of gamma values or the color channel value of Cyan to a simple movement of the appropriate slider with the mouse. It even provided a visual feedback about the fundamental effect of the setting through a live-updated sample-preview image.

Powerful features benefitting all network and Enterprise printing needs

Now KDEPrint reaches one step further: With the strong help of CUPS as the printing framework, it is now geared to construct and command an elaborate enterprise network printing system, complete with full user and administrator control over multiple job queues. In many aspects it is way ahead in functionality and usability compared to built-in print server solutions on alternate OS platforms:

Use KDEPrint in non-KDE applications

The power of KDEPrint is not limited for use with KDE Programs only. It is also offered to and works flawlessly for other third party programs: The only pre-condition is, that the program in question allows to manually configure its print command, rather than having a hardwired "lpr" built-in. Just use "kprinter --stdin" as your new print command. Examples known to work are practically all GNOME programs, StarOffice, OpenOffice, CorelDraw for Linux, Abiword, Netscape, Mozilla, Galeon, Opera, Acrobat Reader, gv and many more. For details see the hints on the KPEPrint website "Using KDEPrint outside KDE".

kprinter

kprinter remains the already well known print dialog from KDE-2.2. It is the successor to the still widely used, but deprecated qtcups print command. kprinter has been extended with a lot of new features. While qtcups worked with CUPS only, kprinter now works with all available print-subsystem modules. Of course, as with all components of KDEPrint, the amount of available features depends on the actual print subsystem used for your computer.

And all those "experienced" kprinter users from KDE-2.2.x times out there, PLEASE NOTE: from now on you might need to specify the "--stdin" option when printing with kprinter from non-KDE applications. (This is necessitated by the new feature to start kprinter as a standalone application *without* specifying a printfile first, but selecting it only in the second step...)

For a more detailed description see the kprinter section of this documentation.

Add Printer Wizard

The Add Printer Wizard is accessible from various places. You may even start your first printjob with no printer configured at all and then access the Wizard from the opened kprinter dialog. The Wizard steps you through the process of setting up printers. Those steps vary, depending on the print subsystem in use. But they are easier to go, as well as to revert, than under the rule of other Operating Systems.

The Add Printer Wizard makes adding a printer very easy. You just need to answer a few simple questions and you are done. If you ever succeeded to install a network or local printer on a MS Windows-burdened computer, you'll find this one not more difficult -- chances are, you'll say "It's easier with KDE." Depending on your print subsystem, the Wizard guides you through different sets of steps, all leading to a fully installed printer in the end.

Every step can be reversed at any time in the process, until you commit all setting by clicking on the "Finish" button on the final confirmation screen. On your wizard-guided way to your printer, you may try various printer drivers and settings (checking them out through some testprints). Only if you are satisfied with your output you need to choose the printer name: because you might want to reflect the finally selected driver in the actual printer name, this is the most convenient and logical way of doing the job.

Scanning the LAN during printer installation

Included in the Wizard is the ability to scan the network for available printers. It is a configurable item, which range of addresses you want to scan and which TCP/IP port you are looking for to connect for printing. You can scan for IPP-aware print devices (IPP = Internet Printing Protocol, the new standard for network printing that gives CUPS all its power, normally uses port 631). After discovery, you may retrieve the printer IPP attributes of every single device. You can make the attributes show up in a nicely formatted report on screen or for print. The Wizard also scans for Windows-attached printers that are shared via the Network Neighbourhood, and for printers using the AppSocket (a.k.a HP JetDirect) network printing protocol (default TCP/IP port here is:9100).

For more details and screenshots about this see the Add Printer Wizard section.

Printing Manager

There are different ways to access the Printing Manager. In the KDE Control Center you find it in the "System" section. You can also start the command "kcmshell System/printmgr" from a root-konsole or -xterm. In konqueror's URL input field, or in a Mini-CLI (started through [ALT+F2]), just type "print:/Manager/".

The Printing Manager is at the heart of KDEPrint. There you can setup, modify and delete printers, create and delete printer classes, start and stop outgoing print jobs, accept or reject incoming files, test printers, check printer- and job-IPP-reports, configure printer default settings (duplex?, stapling?, punching? default paper size A4? etc.), view and manipulate job queues, start and stop the printer daemon, configure the print subsystem, setup the Special Printers covering the printing-to-PostScript-file or mail-as-PDF-attachment, fax-through-kprintfax and much more. From there you can also start the Add Printer Wizard and the CUPS Configurator.

There will soon be some more info about this important component of KDEPrint in the Print Manager section of this file.

kjobviewer

kjobviewer in reality is much more than its humble name suggest. Of course one can view jobs in the different queues waiting for print. But it can also manipulate jobs in many different ways. It has quickly evolved in the recent months to become more of a general Print Spool and Queue Management System than a mere "viewer".

The details are, again, as with all other modules of KDEPrint, dependent on the print subsystem in use. CUPS, as is usual now, in this field is the most feature-complete system for "doing something with jobs that are sent away already and wait for print, possibly on a remote print server".

With kjobviewer you can...

Note, that some of these manipulations require job ownership or root access.

Re-printing completed jobs

kjobviewer can retrieve detailed information even about past and completed jobs. This requires to set CUPS to "PreserveJobHistory True". If you additionally set "PreserveJobFiles True", you can even re-print old jobs without sending them anew across the network!

So kjobviewer is a great tool for users and admins as well as printshop operators and managers to run their daily tasks. It is on par with some very expensive commercial software applications that run in the Windows world of enterprise printing.

CUPS Server Configurator

In the past you had to edit the configuration file for the CUPS daemon "by hand". The newly designed "CUPS Server Configurator" provides you a friendly GUI interface for all the feature-rich settings of CUPS. It is completely covered by the "What's this?"-Quickhelp, offering useful tips for the first-time user. Nevertheless it is recommended to read the full CUPS documentation, always available at http://localhost:631/documentation.htmlif your CUPS-Daemon is up and running. Otherwise go to the CUPS.org Website to find out more.

"Filter Command Editor" configures your own favorite filter

The "Filter Command Editor" lets you configure any sensible external program as a pre-filter to KDEPrint -- but with a GUI instead of the usual commandline for such tools and utilities.

Some examples (in fact, the most useful and commonly used ) for these are pre-configured in the KDE-3 release packages. Any other meaningful "filter" may be also set up to run with KDEPrint. A filter is a program that takes any type of file and works on it to produced from the given input a modified output that is better fit for further print-processing. This could be scaling the pages, converting file formats, selecting specific areas to print, or extracting printable info from otherwise non-printable files (like MP3-tags from *.mp3-files).

The most popular preconfigured filters probably are "enscript" and the "pamphlet creator". More details about this component of KDEPrint may be found here.

Ready-to-use filters shipping with KDE-3.0.x

The enscript frontend provides a GUI for the well-known ASCII-to-PostScript filter. This filter's options are normally specified on the commandline. Enscript produces PostScript page description output from otherwise unformatted ASCII text input. It commands options to determine page size, portrait or landscape mode, page frames, pretty headers and footers, font sizes and much more. The enscript filter is pre-configured to be run commanded through a dialog which controls some of its basic features. The output of this filter can then be run through another filter (for example the pamphlet filter) or send to the print subsystem, accompanied by the general KDEPrint job options.

The pamphlet filter enables a user to produce this advanced output even from simplex-only printers. It does so by re-arranging and imposing individual pages in a different order automatically, selecting odd and even pages to print in two separate passes through the simplex-only printer, flipping the paper in between the passes.. Another version of this filter can be used with a duplex-capable printer: here one just needs to select the duplex option that flips the page along its short edge and the pamphlets just need to be folded when the printer ejects them.

"Selected" view on large printer list

One important detail is the ability to "filter" the view on the list of available printers. As CUPS potentially could show 100s of printers to a user (given a large installation), this may be not desired or confusing people about which on to select. The new mechanism enables a user to assemble a list of visible printers individually, and an administrator to let only those printers show up, that match a regular expression in the "location" string of their description. Thus a workgroup can easily manager their few printers without bothering about the many more outside their realm, but still access them, if need be.

KDEPrint directly working with CUPS API

By accessing the CUPS API (Application Program Interface), KDEPrint is bringing to the light of graphical dialogs all the gems of CUPS, present in real life already for quite a while, but so far mostly living in the dark, hidden in obscure commandline options or seldom-read man pages.

IPP and CUPS -- the future available in KDE today

We hope this will be a valuable contribution to establish CUPS as a real-world de-facto standard for Linux and Unix printing, helping to reach a common printing API for different programs. It shall also propel the IPP standard of network printing on other OS platforms too, to create a more seamlessly working inter-operability for printing between various OS systems.