From 3878085eca35d5c3b08761f61281de0b1b49ce2d Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 1 Jul 2003 22:58:52 +0000 Subject: regenerate docs (This used to be commit cc02d3bc170fe5c8c4474156edb6c83720a47aa0) --- docs/htmldocs/CUPS-printing.html | 459 +++++++++++++++++++-------------------- 1 file changed, 229 insertions(+), 230 deletions(-) (limited to 'docs/htmldocs/CUPS-printing.html') diff --git a/docs/htmldocs/CUPS-printing.html b/docs/htmldocs/CUPS-printing.html index 7b69eb30ac..46ca8e15f7 100644 --- a/docs/htmldocs/CUPS-printing.html +++ b/docs/htmldocs/CUPS-printing.html @@ -1,22 +1,21 @@ - -Chapter 19. CUPS Printing Support in Samba 3.0

Chapter 19. CUPS Printing Support in Samba 3.0

Kurt Pfeifle

Danka Deutschland GmbH

Ciprian Vizitiu

drawings

(3 June 2003)

Table of Contents

Introduction
Features and Benefits
Overview
Basic Configuration of CUPS support
Linking of smbd with libcups.so
Simple smb.conf Settings for CUPS
More complex smb.conf Settings for -CUPS
Advanced Configuration
Central spooling vs. "Peer-to-Peer" printing
CUPS/Samba as a "spooling-only" Print Server; "raw" printing -with Vendor Drivers on Windows Clients
Driver Installation Methods on Windows Clients
Explicitly enable "raw" printing for -application/octet-stream!
Three familiar Methods for driver upload plus a new one
Using CUPS/Samba in an advanced Way -- intelligent printing -with PostScript Driver Download
GDI on Windows -- PostScript on Unix
Windows Drivers, GDI and EMF
Unix Printfile Conversion and GUI Basics
PostScript and Ghostscript
Ghostscript -- the Software RIP for non-PostScript Printers
PostScript Printer Description (PPD) Specification
CUPS can use all Windows-formatted Vendor PPDs
CUPS also uses PPDs for non-PostScript Printers
The CUPS Filtering Architecture
MIME types and CUPS Filters
MIME type Conversion Rules
Filter Requirements
Prefilters
pstops
pstoraster
imagetops and imagetoraster
rasterto [printerspecific]
CUPS Backends
cupsomatic/Foomatic -- how do they fit into the Picture?
The Complete Picture
mime.convs
"Raw" printing
"application/octet-stream" printing
PostScript Printer Descriptions (PPDs) for non-PS Printers
Difference between cupsomatic/foomatic-rip and -native CUPS printing
Examples for filtering Chains
Sources of CUPS drivers / PPDs
Printing with Interface Scripts
Network printing (purely Windows)
From Windows Clients to an NT Print Server
Driver Execution on the Client
Driver Execution on the Server
Network Printing (Windows clients -- UNIX/Samba Print -Servers)
From Windows Clients to a CUPS/Samba Print Server
Samba receiving Jobfiles and passing them to CUPS
Network PostScript RIP: CUPS Filters on Server -- clients use -PostScript Driver with CUPS-PPDs
PPDs for non-PS Printers on UNIX
PPDs for non-PS Printers on Windows
Windows Terminal Servers (WTS) as CUPS Clients
Printer Drivers running in "Kernel Mode" cause many -Problems
Workarounds impose Heavy Limitations
CUPS: a "Magical Stone"?
PostScript Drivers with no major problems -- even in Kernel -Mode
Setting up CUPS for driver Download
cupsaddsmb: the unknown Utility
Prepare your smb.conf for -cupsaddsmb
CUPS Package of "PostScript Driver for WinNT/2k/XP"
Recognize the different Driver Files
Acquiring the Adobe Driver Files
ESP Print Pro Package of "PostScript Driver for -WinNT/2k/XP"
Caveats to be considered
What are the Benefits of using the "CUPS PostScript Driver for -Windows NT/2k/XP" as compared to the Adobe Driver?
Run "cupsaddsmb" (quiet Mode)
Run "cupsaddsmb" with verbose Output
Understanding cupsaddsmb
How to recognize if cupsaddsm completed successfully
cupsaddsmb with a Samba PDC
cupsaddsmb Flowchart
Installing the PostScript Driver on a Client
Avoiding critical PostScript Driver Settings on the -Client
Installing PostScript Driver Files manually (using -rpcclient)
A Check of the rpcclient man Page
Understanding the rpcclient man Page
Producing an Example by querying a Windows Box
What is required for adddriver and setdriver to succeed
Manual Commandline Driver Installation in 15 little Steps
Troubleshooting revisited
The printing *.tdb Files
Trivial DataBase Files
Binary Format
Losing *.tdb Files
Using tdbbackup
CUPS Print Drivers from Linuxprinting.org
foomatic-rip and Foomatic explained
foomatic-rip and Foomatic-PPD Download and Installation
Page Accounting with CUPS
Setting up Quotas
Correct and incorrect Accounting
Adobe and CUPS PostScript Drivers for Windows Clients
The page_log File Syntax
Possible Shortcomings
Future Developments
Other Accounting Tools
Additional Material
Auto-Deletion or Preservation of CUPS Spool Files
CUPS Configuration Settings explained
Pre-conditions
Manual Configuration
When not to use Samba to print to -CUPS
In Case of Trouble.....
Where to find Documentation
How to ask for Help
Where to find Help
Appendix
Printing from CUPS to Windows attached -Printers
More CUPS filtering Chains
Trouble Shooting Guidelines to fix typical Samba printing -Problems
An Overview of the CUPS Printing Processes

Introduction

Features and Benefits

+Chapter 19. CUPS Printing Support in Samba 3.0

Chapter 19. CUPS Printing Support in Samba 3.0

Kurt Pfeifle

Danka Deutschland GmbH

Ciprian Vizitiu

drawings

(3 June 2003)

Table of Contents

Introduction
Features and Benefits
Overview
Basic Configuration of CUPS support
Linking of smbd with libcups.so
Simple smb.conf Settings for CUPS
More complex smb.conf Settings for +CUPS
Advanced Configuration
Central spooling vs. "Peer-to-Peer" printing
CUPS/Samba as a "spooling-only" Print Server; "raw" printing +with Vendor Drivers on Windows Clients
Driver Installation Methods on Windows Clients
Explicitly enable "raw" printing for +application/octet-stream!
Three familiar Methods for driver upload plus a new one
Using CUPS/Samba in an advanced Way -- intelligent printing +with PostScript Driver Download
GDI on Windows -- PostScript on Unix
Windows Drivers, GDI and EMF
Unix Printfile Conversion and GUI Basics
PostScript and Ghostscript
Ghostscript -- the Software RIP for non-PostScript Printers
PostScript Printer Description (PPD) Specification
CUPS can use all Windows-formatted Vendor PPDs
CUPS also uses PPDs for non-PostScript Printers
The CUPS Filtering Architecture
MIME types and CUPS Filters
MIME type Conversion Rules
Filter Requirements
Prefilters
pstops
pstoraster
imagetops and imagetoraster
rasterto [printers specific]
CUPS Backends
cupsomatic/Foomatic -- how do they fit into the Picture?
The Complete Picture
mime.convs
"Raw" printing
"application/octet-stream" printing
PostScript Printer Descriptions (PPDs) for non-PS Printers
Difference between cupsomatic/foomatic-rip and +native CUPS printing
Examples for filtering Chains
Sources of CUPS drivers / PPDs
Printing with Interface Scripts
Network printing (purely Windows)
From Windows Clients to an NT Print Server
Driver Execution on the Client
Driver Execution on the Server
Network Printing (Windows clients -- UNIX/Samba Print +Servers)
From Windows Clients to a CUPS/Samba Print Server
Samba receiving Jobfiles and passing them to CUPS
Network PostScript RIP: CUPS Filters on Server -- clients use +PostScript Driver with CUPS-PPDs
PPDs for non-PS Printers on UNIX
PPDs for non-PS Printers on Windows
Windows Terminal Servers (WTS) as CUPS Clients
Printer Drivers running in "Kernel Mode" cause many +Problems
Workarounds impose Heavy Limitations
CUPS: a "Magical Stone"?
PostScript Drivers with no major problems -- even in Kernel +Mode
Setting up CUPS for driver Download
cupsaddsmb: the unknown Utility
Prepare your smb.conf for +cupsaddsmb
CUPS Package of "PostScript Driver for WinNT/2k/XP"
Recognize the different Driver Files
Acquiring the Adobe Driver Files
ESP Print Pro Package of "PostScript Driver for +WinNT/2k/XP"
Caveats to be considered
What are the Benefits of using the "CUPS PostScript Driver for +Windows NT/2k/XP" as compared to the Adobe Driver?
Run "cupsaddsmb" (quiet Mode)
Run "cupsaddsmb" with verbose Output
Understanding cupsaddsmb
How to recognize if cupsaddsm completed successfully
cupsaddsmb with a Samba PDC
cupsaddsmb Flowchart
Installing the PostScript Driver on a Client
Avoiding critical PostScript Driver Settings on the +Client
Installing PostScript Driver Files manually (using +rpcclient)
A Check of the rpcclient man Page
Understanding the rpcclient man Page
Producing an Example by querying a Windows Box
What is required for adddriver and setdriver to succeed
Manual Commandline Driver Installation in 15 little Steps
Troubleshooting revisited
The printing *.tdb Files
Trivial DataBase Files
Binary Format
Losing *.tdb Files
Using tdbbackup
CUPS Print Drivers from Linuxprinting.org
foomatic-rip and Foomatic explained
foomatic-rip and Foomatic-PPD Download and Installation
Page Accounting with CUPS
Setting up Quotas
Correct and incorrect Accounting
Adobe and CUPS PostScript Drivers for Windows Clients
The page_log File Syntax
Possible Shortcomings
Future Developments
Other Accounting Tools
Additional Material
Auto-Deletion or Preservation of CUPS Spool Files
CUPS Configuration Settings explained
Pre-conditions
Manual Configuration
When not to use Samba to print to +CUPS
In Case of Trouble.....
Where to find Documentation
How to ask for Help
Where to find Help
Appendix
Printing from CUPS to Windows attached +Printers
More CUPS filtering Chains
Trouble Shooting Guidelines to fix typical Samba printing +Problems
An Overview of the CUPS Printing Processes

Introduction

Features and Benefits

The Common Unix Print System (CUPS) has become very popular. All big Linux distributions now ship it as their default printing system. But to many it is still a very mystical tool. Normally it @@ -41,7 +40,7 @@ Problems

An Overview of the C contained. But lets start with the most basic things first. Maybe this is all you need for now. Then you can skip most of the other paragraphs. -

Overview

+

Overview

CUPS is more than just a print spooling system. It is a complete printer management system that complies with the new IPP (Internet Printing Protocol). IPP is an industry @@ -61,7 +60,7 @@ Problems

An Overview of the C argue that CUPS is better! In any case, let us now move on to explore how one may configure CUPS for interfacing with MS Windows print clients via Samba. -

Basic Configuration of CUPS support

+

Basic Configuration of CUPS support

Printing with CUPS in the most basic smb.conf setup in Samba 3.0 (as was true for 2.2.x) only needs two settings: printing = cups and printcap @@ -77,7 +76,7 @@ Problems

An Overview of the C details see man cupsd.conf and other CUPS-related documentation, like the wealth of documents on your CUPS server itself: http://localhost:631/documentation.html. -

Linking of smbd with libcups.so

+

Linking of smbd with libcups.so

Samba has a very special relationship to CUPS. The reason is: Samba can be compiled with CUPS library support. Most recent installations have this support enabled, and per default CUPS linking is compiled @@ -114,9 +113,9 @@ Problems

An Overview of the C print command; other commands are lppause command, lpresume command, lpq command, lprm command, queuepause command and queue resume - command).

Simple smb.conf Settings for CUPS

+ command).

Simple smb.conf Settings for CUPS

To summarize, here is the simplest printing-related setup - forsmb.conf to enable basic CUPS support: + for smb.conf to enable basic CUPS support:

 
 				[global]
@@ -149,10 +148,10 @@ Problems
An Overview of the C printer is not a PostScript device, the print data stream is "binary", sensible only for the target printer. Read on to learn which problem this may cause and how to avoid it. -

More complex smb.conf Settings for +

More complex smb.conf Settings for CUPS

Here is a slightly more complex printing-related setup -forsmb.conf. It enables general CUPS printing +for smb.conf. It enables general CUPS printing support for all printers, but defines one printer share which is set up differently.

@@ -190,7 +189,7 @@ up differently.
 
 

This special share is only there for my testing purposes. It doesn't -even write the printjob to a file. It just logs the job parameters +even write the print job to a file. It just logs the job parameters known to Samba into the /tmp/smbprn.log file and deletes the jobfile. Moreover, the printer admin of this share is "kurt" (not the "@ntadmins" group); @@ -200,13 +199,13 @@ allowing access from three hosts. To prevent CUPS kicking in and taking over the print jobs for that share, we need to set printing = sysv and printcap = lpstat. -

Advanced Configuration

+

Advanced Configuration

Before we dive into all the configuration options, let's clarify a few points. Network printing needs to be organized and setup correctly. Often this is not done correctly. Legacy systems or small LANs in business environments often lack a clear design and good housekeeping. -

Central spooling vs. "Peer-to-Peer" printing

+

Central spooling vs. "Peer-to-Peer" printing

Many small office or home networks, as well as badly organized larger environments, allow each client a direct access to available network printers. Generally, this is a bad idea. It often blocks one client's @@ -218,13 +217,13 @@ is the usage of a "print server": it routes all jobs through one central system, which responds immediately, takes jobs from multiple concurrent clients at the same time and in turn transfers them to the printer(s) in the correct order. -

CUPS/Samba as a "spooling-only" Print Server; "raw" printing +

CUPS/Samba as a "spooling-only" Print Server; "raw" printing with Vendor Drivers on Windows Clients

Most traditionally configured Unix print servers acting on behalf of Samba's Windows clients represented a really simple setup. Their only task was to manage the "raw" spooling of all jobs handed to them by Samba. This approach meant that the Windows clients were expected to -prepare the printjob file in such a way that it became fit to be fed to +prepare the print job file in such a way that it became fit to be fed to the printing device. Here a native (vendor-supplied) Windows printer driver for the target device needed to be installed on each and every client. @@ -237,7 +236,7 @@ sent in a format that is suitable for direct delivery to the printer. Clients need to run the vendor-provided drivers to do this. In this case CUPS will NOT do any print file format conversion work. -

Driver Installation Methods on Windows Clients

+

Driver Installation Methods on Windows Clients

The printer drivers on the Windows clients may be installed in two functionally different ways:

  • manually install the drivers locally on each client, @@ -250,7 +249,7 @@ first time they access the printer; with this method NT/2K/XP clients use the SPOOLSS/MS-RPC type printing calls.

The second method is recommended for use over the first. -

Explicitly enable "raw" printing for +

Explicitly enable "raw" printing for application/octet-stream!

If you use the first option (drivers are installed on the client side), there is one setting to take care of: CUPS needs to be told @@ -299,7 +298,7 @@ This is all you need to know to get the CUPS/Samba combo printing locally installed. If you are not interested in background information about more advanced CUPS/Samba printing, simply skip the remaining sections of this chapter. -

Three familiar Methods for driver upload plus a new one

+

Three familiar Methods for driver upload plus a new one

If you want to use the MS-RPC type printing, you must upload the drivers onto the Samba server first ([print$] share). For a discussion on how to deposit printer drivers on the @@ -321,7 +320,7 @@ utility.

cupsaddsmb is discussed in much detail further below. But we will first explore the CUPS filtering system and compare the Windows and UNIX printing architectures. -

Using CUPS/Samba in an advanced Way -- intelligent printing +

Using CUPS/Samba in an advanced Way -- intelligent printing with PostScript Driver Download

Still reading on? Good. Let's go into more detail then. We now know how to set up a "dump" printserver, that is, a server which is spooling @@ -346,7 +345,7 @@ how CUPS works and how you can enable its features. What follows is the comparison of some fundamental concepts for Windows and Unix printing; then is the time for a description of the CUPS filtering system, how it works and how you can tweak it. -

GDI on Windows -- PostScript on Unix

+

GDI on Windows -- PostScript on Unix

Network printing is one of the most complicated and error-prone day-to-day tasks any user or an administrator may encounter. This is true for all OS platforms. And there are reasons for this. @@ -355,14 +354,14 @@ You can't expect for most file formats to just throw them towards printers and they get printed. There needs to be a file format conversion in between. The problem is: there is no common standard for print file formats across all manufacturers and printer types. While -PostScript (trademark held by Adobe), and to an -extendPCL (trademark held by HP), have developed +PostScript (trademark held by Adobe), and, to an +extent, PCL (trademark held by HP), have developed into semi-official "standards", by being the most widely used PDLs (Page Description Languages), there are still many manufacturers who "roll their own" (their reasons may be unacceptable license fees for using printer-embedded PostScript interpreters, etc.). -

Windows Drivers, GDI and EMF

+

Windows Drivers, GDI and EMF

In Windows OS, the format conversion job is done by the printer drivers. On MS Windows OS platforms all application programmers have at their disposal a built-in API, the GDI (Graphical Device @@ -384,10 +383,10 @@ put paper and screen output on a common foundation for their (BSD-Unix-based, did you know??) Mac OS X and Darwin Operating Systems.Their Core Graphic Engine uses a PDF derivate for all display work. -

+

-

Figure 19.1. Windows Printing to a local Printer

Windows Printing to a local Printer
-

Unix Printfile Conversion and GUI Basics

+

Figure 19.1. Windows Printing to a local Printer

Windows Printing to a local Printer

+

Unix Printfile Conversion and GUI Basics

In Unix and Linux, there is no comparable layer built into the OS kernel(s) or the X (screen display) server. Every application is responsible for itself to create its print output. Fortunately, most @@ -423,7 +422,7 @@ form and you will be reading its PostScript code, the language instructions which need to be interpreted by a rasterizer. Rasterizers produce pixel images, which may be displayed on screen by a viewer program or on paper by a printer. -

PostScript and Ghostscript

+

PostScript and Ghostscript

So, Unix is lacking a common ground for printing on paper and displaying on screen. Despite this unfavorable legacy for Unix, basic printing is fairly easy: if you have PostScript printers at your @@ -442,9 +441,9 @@ options a printer supports: duplexing, stapling, punching... Therefore Unix users for a long time couldn't choose many of the supported device and job options, unlike Windows or Apple users. But now there is CUPS.... ;-) -

-

Figure 19.2. Printing to a Postscript Printer

Printing to a Postscript Printer
-

+

+

Figure 19.2. Printing to a Postscript Printer

Printing to a Postscript Printer

+

However, there are other types of printers out there. These don't know how to print PostScript. They use their own Page Description Language (PDL, often proprietary). To print to them is much @@ -452,17 +451,17 @@ more demanding. Since your Unix applications mostly produce PostScript, and since these devices don't understand PostScript, you need to convert the printfiles to a format suitable for your printer on the host, before you can send it away. -

Ghostscript -- the Software RIP for non-PostScript Printers

-Here is whereGhostscript kicks in. Ghostscript is +

Ghostscript -- the Software RIP for non-PostScript Printers

+Here is where Ghostscript kicks in. Ghostscript is the traditional (and quite powerful) PostScript interpreter used on Unix platforms. It is a RIP in software, capable to do a lot of file format conversions, for a very broad spectrum of hardware devices as well as software file formats. Ghostscript technology and drivers is what enables PostScript printing to non-PostScript hardware. -

-

Figure 19.3. Ghostscript as a RIP for non-postscript printers

Ghostscript as a RIP for non-postscript printers
-

Tip

+

+

Figure 19.3. Ghostscript as a RIP for non-postscript printers

Ghostscript as a RIP for non-postscript printers

+

Tip

Use the "gs -h" command to check for all built-in "devices" of your Ghostscript version. If you specify e.g. a parameter of -sDEVICE=png256 on your Ghostscript command @@ -479,7 +478,7 @@ enhancement over GNU Ghostscript, with lots of bug-fixes, additional devices and improvements. It is jointly maintained by developers from CUPS, Gimp-Print, MandrakeSoft, SuSE, RedHat and Debian. It includes the "cups" device (essential to print to non-PS printers from CUPS). -

PostScript Printer Description (PPD) Specification

+

PostScript Printer Description (PPD) Specification

While PostScript in essence is a Page Description Language (PDL) to represent the page layout in a device independent way, real world print jobs are @@ -510,7 +509,7 @@ for achieving a certain print job output (e.g. duplexed, stapled and punched) on a specific target machine, may not print as expected, or may not be printable at all on other models; it also may not be fit for further processing by software (e.g. by a PDF distilling program). -

CUPS can use all Windows-formatted Vendor PPDs

+

CUPS can use all Windows-formatted Vendor PPDs

CUPS can handle all spec-compliant PPDs as supplied by the manufacturers for their PostScript models. Even if a Unix/Linux-illiterate vendor might not have mentioned our favorite @@ -537,7 +536,7 @@ your LAN has the PostScript driver installed, just use access the Windows directory where all printer driver files are stored. First look in the W32X86/2 subdir for the PPD you are seeking. -

CUPS also uses PPDs for non-PostScript Printers

+

CUPS also uses PPDs for non-PostScript Printers

CUPS also uses specially crafted PPDs to handle non-PostScript printers. These PPDs are usually not available from the vendors (and no, you can't just take the PPD of a Postscript printer with the same @@ -545,7 +544,7 @@ model name and hope it works for the non-PostScript version too). To understand how these PPDs work for non-PS printers we first need to dive deeply into the CUPS filtering and file format conversion architecture. Stay tuned. -

The CUPS Filtering Architecture

+

The CUPS Filtering Architecture

The core of the CUPS filtering system is based on Ghostscript. In addition to Ghostscript, CUPS uses some other filters of its own. You (or your OS vendor) may have @@ -587,7 +586,7 @@ others. However, even for Foomatic/cupsomatic usage, best results and broadest printer model support is provided by ESP Ghostscript (more about cupsomatic/Foomatic, particularly the new version called now foomatic-rip, follows below). -

MIME types and CUPS Filters

+

MIME types and CUPS Filters

CUPS reads the file /etc/cups/mime.types (and all other files carrying a *.types suffix in the same directory) upon startup. These files contain the MIME @@ -640,7 +639,7 @@ CUPS can handle ASCII text, HP-GL, PDF, PostScript, DVI and a lot of image formats (GIF. PNG, TIFF, JPEG, Photo-CD, SUN-Raster, PNM, PBM, SGI-RGB and some more) and their associated MIME types with its filters. -

MIME type Conversion Rules

+

MIME type Conversion Rules

CUPS reads the file /etc/cups/mime.convs (and all other files named with a *.convs suffix in the same directory) upon startup. These files contain @@ -681,7 +680,7 @@ The last two examples name the texttops f to work on "text/plain" as well as on "application/x-shell". (Hint: this differentiation is needed for the syntax highlighting feature of "texttops"). -

Filter Requirements

+

Filter Requirements

There are many more combinations named in mime.convs. However, you are not limited to use the ones pre-defined there. You can plug in any filter you like into the CUPS framework. It must meet, or must be made @@ -702,7 +701,7 @@ attribute

Printer

The string fr attribute

Printer

The job options

Printer

(Optionally) The print request file (if missing, filters expected data fed through stdin). In most cases it is very easy to write a simple wrapper script around existing -filters to make them work with CUPS.

Prefilters

+filters to make them work with CUPS.

Prefilters

As was said, PostScript is the central file format to any Unix based printing system. From PostScript, CUPS generates raster data to feed non-PostScript printers. @@ -719,18 +718,18 @@ the imagetops filter. Its outcome is alwa MIME type application/vnd.cups-postscript (not application/postscript), meaning it has the print options already embedded into the file. -

-

Figure 19.4. Prefiltering in CUPS to form Postscript

Prefiltering in CUPS to form Postscript
-

pstops

+

+

Figure 19.4. Prefiltering in CUPS to form Postscript

Prefiltering in CUPS to form Postscript

+

pstops

pstopsis the filter to convert application/postscript to application/vnd.cups-postscript. It was said above that this filter inserts all device-specific print options (commands to the printer to ask for the duplexing of output, or stapling an punching it, etc.) into the PostScript file. -

-

Figure 19.5. Adding Device-specific Print Options

Adding Device-specific Print Options
-

+

+

Figure 19.5. Adding Device-specific Print Options

Adding Device-specific Print Options

+

This is not all: other tasks performed by it are:

  • selecting the range of pages to be printed (if you choose to @@ -741,7 +740,7 @@ putting 2 or more logical pages on one sheet of paper (the so-called "number-up" function)

  • counting the pages of the job to insert the accounting information into the /var/log/cups/page_log -

pstoraster

+

pstoraster

pstoraster is at the core of the CUPS filtering system. It is responsible for the first stage of the rasterization process. Its input is of MIME type application/vnd.cups-postscript; @@ -749,9 +748,9 @@ its output is application/vnd.cups-raster. This output format is not yet meant to be printable. Its aim is to serve as a general purpose input format for more specialized raster drivers, that are able to generate device-specific printer data. -

-

Figure 19.6. Postscript to intermediate Raster format

Postscript to intermediate Raster format
-

+

+

Figure 19.6. Postscript to intermediate Raster format

Postscript to intermediate Raster format

+

CUPS raster is a generic raster format with powerful features. It is able to include per-page information, color profiles and more to be used by the following downstream raster drivers. Its MIME type is @@ -762,9 +761,9 @@ printer models, should they choose to do so. CUPS always takes care for the first stage of rasterization so these vendors don't need to care about Ghostscript complications (in fact, there is currently more than one vendor financing the development of CUPS raster drivers). -

-

Figure 19.7. CUPS-raster production using Ghostscript

CUPS-raster production using Ghostscript
-

+

+

Figure 19.7. CUPS-raster production using Ghostscript

CUPS-raster production using Ghostscript

+

CUPS versions before version 1.1.15 were shipping a binary (or source code) standalone filter, named "pstoraster". pstoraster was derived from GNU Ghostscript 5.50, and could be installed besides and in @@ -777,16 +776,16 @@ integrated back into Ghostscript (now based on GNU Ghostscript version parameter. If your Ghostscript doesn't show a success on asking for gs -h |grep cups, you might not be able to print. Update your Ghostscript then! -

imagetops and imagetoraster

+

imagetops and imagetoraster

Above in the section about prefilters, we mentioned the prefilter that generates PostScript from image formats. The imagetoraster filter is used to convert directly from image to raster, without the intermediate PostScript stage. It is used more often than the above mentioned prefilters. Here is a summarizing flowchart of image file filtering: -

-

Figure 19.8. Image format to CUPS-raster format conversion

Image format to CUPS-raster format conversion
-

rasterto [printerspecific]

+

+

Figure 19.8. Image format to CUPS-raster format conversion

Image format to CUPS-raster format conversion

+

rasterto [printers specific]

CUPS ships with quite some different raster drivers processing CUPS raster. On my system I find in /usr/lib/cups/filter/ these: rastertoalps, rastertobj, rastertoepson, rastertoescp, @@ -798,9 +797,9 @@ than this; some of these are installed by commercial add-ons to CUPS rastertoprinter) by 3rd party driver development projects (such as Gimp-Print) wanting to cooperate as closely as possible with CUPS. -

-

Figure 19.9. Raster to Printer Specific formats

Raster to Printer Specific formats
-

CUPS Backends

+

+

Figure 19.9. Raster to Printer Specific formats

Raster to Printer Specific formats

+

CUPS Backends

The last part of any CUPS filtering chain is a "backend". Backends are special programs that send the print-ready file to the final device. There is a separate backend program for any transfer @@ -874,8 +873,8 @@ PDF (through a "pdfgen:/" backend) or dump them to "/dev/null&quo fact I have the system-wide default printer set up to be connected to a "devnull:/" backend: there are just too many people sending jobs without specifying a printer, or scripts and programs which don't name -a printer. The system-wided default deletes the job and sends a polite -mail back to the $USER asking him to alsways specify a correct +a printer. The system-wide default deletes the job and sends a polite +mail back to the $USER asking him to always specify a correct printername).

Not all of the mentioned backends may be present on your system or @@ -887,7 +886,7 @@ all available backends: lpinfo -v -

cupsomatic/Foomatic -- how do they fit into the Picture?

+

cupsomatic/Foomatic -- how do they fit into the Picture?

"cupsomatic" filters may be the most widely used on CUPS installations. You must be clear about the fact that these were not developed by the CUPS people. They are a "Third Party" add-on to @@ -908,7 +907,7 @@ You can recognize these PPDs from the line calling the This line you may find amongst the first 40 or so lines of the PPD file. If you have such a PPD installed, the printer shows up in the CUPS web interface with a foomatic namepart for -the driver description. cupsomatic is a Perlscript that runs +the driver description. cupsomatic is a Perl script that runs Ghostscript, with all the complicated commandline options auto-constructed from the selected PPD and commandline options give to the printjob. @@ -937,11 +936,11 @@ print-options from page to page, in the middle of a job. And the best thing is: the new foomatic-rip now works seamlessly with all legacy spoolers too (like LPRng, BSD-LPD, PDQ, PPR etc.), providing for them access to use PPDs for their printing! -

The Complete Picture

+

The Complete Picture

If you want to see an overview over all the filters and how they relate to each other, the complete picture of the puzzle is at the end of this document. -

mime.convs

+

mime.convs

CUPS auto-constructs all possible filtering chain paths for any given MIME type, and every printer installed. But how does it decide in favor or against a specific alternative? (There may often be cases, @@ -958,7 +957,7 @@ cost. This is a very efficient way to limit the load of any CUPS server by setting an appropriate "FilterLimit" value. A FilterLimit of 200 allows roughly 1 job at a time, while a FilterLimit of 1000 allows approximately 5 jobs maximum at a time. -

"Raw" printing

+

"Raw" printing

You can tell CUPS to print (nearly) any file "raw". "Raw" means it will not be filtered. CUPS will send the file to the printer "as is" without bothering if the printer is able to digest it. Users need to @@ -981,7 +980,7 @@ CUPS will automatically treat each job sent to a queue as a "raw" one, if it can't find a PPD associated with the queue. However, CUPS will only send known MIME types (as defined in its own mime.types file) and refuse others. -

"application/octet-stream" printing

+

"application/octet-stream" printing

Any MIME type with no rule in the /etc/cups/mime.types file is regarded as unknown or application/octet-stream and will not be @@ -1031,7 +1030,7 @@ does not by default allow one to send deliberate (possibly binary) data to printing devices. (This could be easily abused to launch a Denial of Service attack on your printer(s), causing at least the loss of a lot of paper and ink...) "Unknown" data are regarded by CUPS -asMIME type +as MIME type application/octet-stream. While you can send data "raw", the MIME type for these must be one that is known to CUPS and an allowed one. The file @@ -1039,7 +1038,7 @@ be one that is known to CUPS and an allowed one. The file recognizes MIME types. The file /etc/cups/mime.convs decides which file conversion filter(s) may be applied to which MIME types. -

PostScript Printer Descriptions (PPDs) for non-PS Printers

+

PostScript Printer Descriptions (PPDs) for non-PS Printers

Originally PPDs were meant to be used for PostScript printers only. Here, they help to send device-specific commands and settings to the RIP which processes the jobfile. CUPS has extended this @@ -1082,9 +1081,9 @@ specific model supports):

stcolor2.ppd

newer Epson Stylus Color printers

stphoto.ppd

older Epson Stylus Photo printers

stphoto2.ppd

newer Epson Stylus Photo printers -

laserjet.ppd

all PCL printersFurther below is a discussion +

laserjet.ppd

all PCL printers. Further below is a discussion of several other driver/PPD-packages suitable fur use with CUPS. -

Difference between cupsomatic/foomatic-rip and +

Difference between cupsomatic/foomatic-rip and native CUPS printing

Native CUPS rasterization works in two steps.

  • @@ -1097,9 +1096,9 @@ quality filters for this step, some are Free Software, some are Shareware/Non-Free, some are proprietary.

Often this produces better quality (and has several more advantages) than other methods. -

-

Figure 19.10. cupsomatic/foomatic processing versus Native CUPS

cupsomatic/foomatic processing versus Native CUPS
-

+

+

Figure 19.10. cupsomatic/foomatic processing versus Native CUPS

cupsomatic/foomatic processing versus Native CUPS

+

One other method is the cupsomatic/foomatic-rip way. Note that cupsomatic is not made by the CUPS developers. It is an independent contribution to printing development, @@ -1109,7 +1108,7 @@ supported. It has now been replaced by foomatic-rip. foomatic-rip is a complete re-write of the old cupsomatic idea, but very much improved and generalized to other (non-CUPS) spoolers. An upgrade to foomatic-rip is strongly -adviced, especially if you are upgrading to a recent version of CUPS +advised, especially if you are upgrading to a recent version of CUPS too.

Both the cupsomatic (old) and the foomatic-rip (new) methods from @@ -1126,14 +1125,14 @@ which works best for you.

cupsomatic "kidnaps" the printfile after the application/vnd.cups-postscript stage and -deviates it through the CUPS-external, systemwide Ghostscript +deviates it through the CUPS-external, system wide Ghostscript installation: Therefore the printfile bypasses the "pstoraster" filter (and thus also bypasses the CUPS-raster-drivers "rastertosomething"). After Ghostscript finished its rasterization, cupsomatic hands the rendered file directly to the CUPS backend. The flowchart above illustrates the difference between native CUPS rendering and the Foomatic/cupsomatic method. -

Examples for filtering Chains

+

Examples for filtering Chains

Here are a few examples of commonly occurring filtering chains to illustrate the workings of CUPS.

@@ -1183,7 +1182,7 @@ which transfers the job to the printers.

The resulting filter chain therefore is:

 pdftops --> pstops --> pstoraster --> rastertoepson --> usb
-

Sources of CUPS drivers / PPDs

+

Sources of CUPS drivers / PPDs

On the internet you can find now many thousand CUPS-PPD files (with their companion filters), in many national languages, supporting more than 1000 non-PostScript models. @@ -1204,7 +1203,7 @@ roughly the same amount of printers in excellent quality;

  • OMNI (http://www-124.ibm.com/developerworks/oss/linux/projects/omni/) (LPGL, Free) is a package made by IBM, now containing support for more -than 400 printers, stemming from the inheritance of IBM OS/2 KnowHow +than 400 printers, stemming from the inheritance of IBM OS/2 Know-How ported over to Linux (CUPS support is in a Beta-stage at present);

  • HPIJS (http://hpinkjet.sourceforge.net/) (BSD-style licenses, Free) @@ -1218,7 +1217,7 @@ HPIJS).

  • Printing with Interface Scripts

    +

    Printing with Interface Scripts

    CUPS also supports the usage of "interface scripts" as known from System V AT&T printing systems. These are often used for PCL printers, from applications that generate PCL print jobs. Interface @@ -1240,12 +1239,12 @@ with CUPS they provide the most easy way to plug in your own custom-written filtering script or program into one specific print queue (some information about the traditional usage of interface scripts is to be found at http://playground.sun.com/printing/documentation/interface.html). -

    Network printing (purely Windows)

    +

    Network printing (purely Windows)

    Network printing covers a lot of ground. To understand what exactly goes on with Samba when it is printing on behalf of its Windows clients, let's first look at a "purely Windows" setup: Windows clients with a Windows NT print server. -

    From Windows Clients to an NT Print Server

    +

    From Windows Clients to an NT Print Server

    Windows clients printing to an NT-based print server have two options. They may

    • execute the driver locally and render the GDI output @@ -1254,7 +1253,7 @@ or

    • send the GDI output (EMF) to the server, where the driver is executed to render the printer specific output.

    Both print paths are shown in the flowcharts below. -

    Driver Execution on the Client

    +

    Driver Execution on the Client

    In the first case the print server must spool the file as "raw", meaning it shouldn't touch the jobfile and try to convert it in any way. This is what traditional Unix-based print server can do too; and @@ -1264,9 +1263,9 @@ advantage of this setup is that this "spooling-only" print server may be used even if no driver(s) for Unix are available it is sufficient to have the Windows client drivers available and installed on the clients. -

    -

    Figure 19.11. Print Driver execution on the Client

    Print Driver execution on the Client
    -

    Driver Execution on the Server

    +

    +

    Figure 19.11. Print Driver execution on the Client

    Print Driver execution on the Client

    +

    Driver Execution on the Server

    The other path executes the printer driver on the server. The clients transfers print files in EMF format to the server. The server uses the PostScript, PCL, ESC/P or other driver to convert the EMF file into @@ -1274,18 +1273,18 @@ the printer-specific language. It is not possible for Unix to do the same. Currently there is no program or method to convert a Windows client's GDI output on a Unix server into something a printer could understand. -

    -

    Figure 19.12. Print Driver execution on the Server

    Print Driver execution on the Server
    -

    +

    +

    Figure 19.12. Print Driver execution on the Server

    Print Driver execution on the Server

    +

    However, there is something similar possible with CUPS. Read on... -

    Network Printing (Windows clients -- UNIX/Samba Print +

    Network Printing (Windows clients -- UNIX/Samba Print Servers)

    Since UNIX print servers cannot execute the Win32 program code on their platform, the picture is somewhat different. However, this doesn't limit your options all that much. In the contrary, you may have a way here to implement printing features which are not possible otherwise. -

    From Windows Clients to a CUPS/Samba Print Server

    +

    From Windows Clients to a CUPS/Samba Print Server

    Here is a simple recipe showing how you can take advantage of CUPS powerful features for the benefit of your Windows network printing clients: @@ -1312,10 +1311,10 @@ other print commands are set up, then printing will use the option automatically passing through (if you want your own defined print commands to work with a Samba that has CUPS support compiled in, simply use printing = sysv). -

    -

    Figure 19.13. Printing via CUPS/samba server

    Printing via CUPS/samba server
    -

    Samba receiving Jobfiles and passing them to CUPS

    -Sambamust use its own spool directory (it is set +

    +

    Figure 19.13. Printing via CUPS/samba server

    Printing via CUPS/samba server

    +

    Samba receiving Jobfiles and passing them to CUPS

    +Samba must use its own spool directory (it is set by a line similar to path = /var/spool/samba, in the [printers] or [printername] section of @@ -1332,7 +1331,7 @@ A Windows user authenticates only to Samba (by whatever means is configured). If Samba runs on the same host as CUPS, you only need to allow "localhost" to print. If they run on different machines, you need to make sure the Samba host gets access to printing on CUPS. -

    Network PostScript RIP: CUPS Filters on Server -- clients use +

    Network PostScript RIP: CUPS Filters on Server -- clients use PostScript Driver with CUPS-PPDs

    PPDs can control all print device options. They are usually provided by the manufacturer; if you own a PostScript printer, that is. PPD @@ -1352,7 +1351,7 @@ or see if you have lphelp on your system). There are also some different GUI frontends on Linux/UNIX, which can present PPD options to users. PPD options are normally meant to be evaluated by the PostScript RIP on the real PostScript printer. -

    PPDs for non-PS Printers on UNIX

    +

    PPDs for non-PS Printers on UNIX

    CUPS doesn't limit itself to "real" PostScript printers in its usage of PPDs. The CUPS developers have extended the scope of the PPD concept, to also describe available device and driver options for @@ -1369,7 +1368,7 @@ the supplied PostScript. Thus CUPS lets all its printers appear as PostScript devices to its clients, because it can act as a PostScript RIP for those printers, processing the received PostScript code into a proper raster print format. -

    PPDs for non-PS Printers on Windows

    +

    PPDs for non-PS Printers on Windows

    CUPS-PPDs can also be used on Windows-Clients, on top of a "core" PostScript driver (now recommended is the "CUPS PostScript Driver for WindowsNT/2K/XP"; you can also use the Adobe one, with @@ -1385,13 +1384,13 @@ which always remain unfiltered per definition;

  • enable clients to driver, even for many different target printers.

  • Using CUPS PPDs on Windows clients enables these to control all print job settings just as a UNIX client can do too. -

    Windows Terminal Servers (WTS) as CUPS Clients

    +

    Windows Terminal Servers (WTS) as CUPS Clients

    This setup may be of special interest to people experiencing major problems in WTS environments. WTS need often a multitude of non-PostScript drivers installed to run their clients' variety of different printer models. This often imposes the price of much increased instability. -

    Printer Drivers running in "Kernel Mode" cause many +

    Printer Drivers running in "Kernel Mode" cause many Problems

    The reason is that in Win NT printer drivers run in "Kernel Mode", this introduces a high risk for the stability of the system @@ -1408,7 +1407,7 @@ might be because there have so far only been 2 different PostScript drivers the ones from Adobe and the one from Microsoft. Both are very well tested and are as stable as you ever can imagine on Windows. The CUPS driver is derived from the Microsoft one. -

    Workarounds impose Heavy Limitations

    +

    Workarounds impose Heavy Limitations

    In many cases, in an attempt to work around this problem, site administrators have resorted to restrict the allowed drivers installed on their WTS to one generic PCL- and one PostScript driver. This @@ -1416,7 +1415,7 @@ however restricts the clients in the amount of printer options available for them; often they can't get out more than simplex prints from one standard paper tray, while their devices could do much better, if driven by a different driver! ) -

    CUPS: a "Magical Stone"?

    +

    CUPS: a "Magical Stone"?

    Using a PostScript driver, enabled with a CUPS-PPD, seems to be a very elegant way to overcome all these shortcomings. There are, depending on the version of Windows OS you use, up to 3 different PostScript @@ -1428,7 +1427,7 @@ is a certain price for this too: a CUPS server acting as a PostScript RIP for its clients requires more CPU and RAM than when just acting as a "raw spooling" device. Plus, this setup is not yet widely tested, although the first feedbacks look very promising. -

    PostScript Drivers with no major problems -- even in Kernel +

    PostScript Drivers with no major problems -- even in Kernel Mode

    More recent printer drivers on W2K and XP don't run in Kernel mode (unlike Win NT) any more. However, both operating systems can still @@ -1445,14 +1444,14 @@ development efforts. This is what the CUPS people have done. The license doesn't allow them to publish the whole of the source code. However, they have released the "diff" under the GPL, and if you are owner of an "MS DDK for Win NT", you can check the driver yourself. -

    Setting up CUPS for driver Download

    +

    Setting up CUPS for driver Download

    As we have said before: all previously known methods to prepare client printer drivers on the Samba server for download and "Point'n'Print" convenience of Windows workstations are working with CUPS too. These methods were described in the previous chapter. In reality, this is a pure Samba business, and only relates to the Samba/Win client relationship. -

    cupsaddsmb: the unknown Utility

    +

    cupsaddsmb: the unknown Utility

    The cupsaddsmb utility (shipped with all current CUPS versions) is an alternative method to transfer printer drivers into the Samba [print$] share. Remember, this share is where @@ -1467,7 +1466,7 @@ named in its man page.

    The CUPS printer driver is available from the CUPS download site. Its package name is cups-samba-[version].tar.gz . It -is prefered over the Adobe drivers since it has a number of +is preferred over the Adobe drivers since it has a number of advantages:

    • it supports a much more accurate page accounting;

    • it supports banner pages, and page labels on all @@ -1477,7 +1476,7 @@ job-billing)

    However, currently only Windows NT, 2000, and XP are supported by the CUPS drivers. You will need to get the respective part of Adobe driver too if you need to support Windows 95, 98, and ME clients. -

    Prepare your smb.conf for +

    Prepare your smb.conf for cupsaddsmb

    Prior to running cupsaddsmb, you need the following settings in smb.conf: @@ -1506,7 +1505,7 @@ Prior to running cupsaddsmb, you need the following settings in read only = yes write list = root -

    CUPS Package of "PostScript Driver for WinNT/2k/XP"

    +

    CUPS Package of "PostScript Driver for WinNT/2k/XP"

    CUPS users may get the exactly same packages fromhttp://www.cups.org/software.html. It is a separate package from the CUPS base software files, tagged as CUPS 1.1.x Windows NT/2k/XP Printer Driver for SAMBA @@ -1577,7 +1576,7 @@ Studio 6. Driver developers are not allowed to distribute the whole of the source code as Free Software. However, CUPS developers released the "diff" in source code under the GPL, so anybody with a license of Visual Studio and a DDK will be able to compile for him/herself. -

    Recognize the different Driver Files

    +

    Recognize the different Driver Files

    The CUPS drivers don't support the "older" Windows 95/98/ME, but only the Windows NT/2000/XP client:

    @@ -1612,7 +1611,7 @@ support of WinNT/2k/XP are present in , the Adobe ones will be ignored
     and the CUPS ones will be used. If you prefer -- for whatever reason
     -- to use Adobe-only drivers, move away the 3 CUPS driver files. The
     Win95/98/ME clients use the Adobe drivers in any case.
    -

    Acquiring the Adobe Driver Files

    +

    Acquiring the Adobe Driver Files

    Acquiring the Adobe driver files seems to be unexpectedly difficult for many users. They are not available on the Adobe website as single files and the self-extracting and/or self-installing Windows-exe is @@ -1625,7 +1624,7 @@ Generic PostScript printer. After this, the client's where you can get them with smbclient from the CUPS host. A more detailed description about this is in the next (the CUPS printing) chapter. -

    ESP Print Pro Package of "PostScript Driver for +

    ESP Print Pro Package of "PostScript Driver for WinNT/2k/XP"

    Users of the ESP Print Pro software are able to install their "Samba Drivers" package for this purpose with no problem. Retrieve the driver @@ -1641,7 +1640,7 @@ driver files; i.e. mainly setup the [print$] share, etc. The ESP Print Pro package includes the CUPS driver files as well as a (licensed) set of Adobe drivers for the Windows 95/98/ME client family. -

    Caveats to be considered

    +

    Caveats to be considered

    Once you have run the install script (and possibly manually moved the cups.hlp file to /usr/share/cups/drivers/), the driver is @@ -1661,8 +1660,8 @@ working in an environment where everything is configured for Once the driver files are in the [print$] share and are initialized, they are ready to be downloaded and installed by the Win NT/2k/XP clients. -

    Note

    -
    1. +

      Note

      +

      1. Win 9x/ME clients won't work with the CUPS PostScript driver. For these you'd still need to use the ADOBE*.* drivers as previously. @@ -1697,8 +1696,8 @@ as described elsewhere in the "Samba HOWTO Collection": either change a driver for an existing printer by running the "Printer Properties" dialog, or use rpcclient with the setdriver sub-command. -

      -

    What are the Benefits of using the "CUPS PostScript Driver for +

    +

    What are the Benefits of using the "CUPS PostScript Driver for Windows NT/2k/XP" as compared to the Adobe Driver?

    You are interested in a comparison between the CUPS and the Adobe PostScript drivers? For our purposes these are the most important @@ -1718,9 +1717,9 @@ the more special MIME type application/cups.vnd-postscript), which therefore also leads to the page accounting in /var/log/cups/page_log not -receiving the exact mumber of pages; instead the dummy page number +receiving the exact number of pages; instead the dummy page number of "1" is logged in a standard setup)

  • the Adobe driver has more options to "mis-configure" the -PostScript generated by it (like setting it inadvertedly to +PostScript generated by it (like setting it inadvertently to Optimize for Speed, instead of Optimize for Portability, which could lead to CUPS being unable to process it)

  • the CUPS PostScript driver output sent by Windows @@ -1744,7 +1743,7 @@ not disturb any other applications as they will regard it as a comment and simply ignore it).

  • the CUPS PostScript driver will be the heart of the fully fledged CUPS IPP client for Windows NT/2K/XP to be released soon (probably alongside the first Beta release for CUPS -1.2).

  • Run "cupsaddsmb" (quiet Mode)

    +1.2).

    Run "cupsaddsmb" (quiet Mode)

    The cupsaddsmb command copies the needed files into your [print$] share. Additionally, the PPD associated with this printer is copied from @@ -1770,11 +1769,11 @@ Here is an example of a successfully run cupsaddsmb command. Password for root required to access localhost via SAMBA: [type in password 'secret']

    -To shareall printers and drivers, use the +To share all printers and drivers, use the -a parameter instead of a printer name. Since cupsaddsmb "exports" the printer drivers to Samba, it should be obvious that it only works for queues with a CUPS driver associated. -

    Run "cupsaddsmb" with verbose Output

    +

    Run "cupsaddsmb" with verbose Output

    Probably you want to see what's going on. Use the -v parameter to get a more verbose output. The output below was edited for better readability: all "\" at the end of @@ -1850,7 +1849,7 @@ unencrypted! Running command: rpcclient localhost -N -U'root%secret' \ -c 'setdriver infotec_2105 infotec_2105' cmd = setdriver infotec_2105 infotec_2105 - Succesfully set infotec_2105 to driver infotec_2105. + Successfully set infotec_2105 to driver infotec_2105.

    If you look closely, you'll discover your root password was transfered @@ -1859,7 +1858,7 @@ you'll discover error messages like NT_STATUS_OBJECT_NAME_COLLISION in between. They occur, because the directories WIN40 and W32X86 already existed in the [print$] driver download share (from a previous driver installation). They are harmless here. -

    Understanding cupsaddsmb

    +

    Understanding cupsaddsmb

    What has happened? What did cupsaddsmb do? There are five stages of the procedure

    1. call the CUPS server via IPP and request the @@ -1882,7 +1881,7 @@ same host): # cupsaddsmb -H sambaserver -h cupsserver -v printername -

    How to recognize if cupsaddsm completed successfully

    +

    How to recognize if cupsaddsm completed successfully

    You must always check if the utility completed successfully in all fields. You need as a minimum these 3 messages amongst the output: @@ -1890,7 +1889,7 @@ amongst the output: installed. # (for the W32X86 == WinNT/2K/XP architecture...)

  • Printer Driver infotec_2105 successfully installed. # (for the WIN40 == Win9x/ME -architecture...)

  • Succesfully set [printerXPZ] to driver +architecture...)

  • Successfully set [printerXPZ] to driver [printerXYZ].

  • These messages probably not easily recognized in the general output. If you run cupsaddsmb with the -a @@ -1903,7 +1902,7 @@ It is impossible to see any diagnostic output if you don't run cupsaddsmb in verbose mode. Therefore we strongly recommend to not use the default quiet mode. It will hide any problems from you which might occur. -

    cupsaddsmb with a Samba PDC

    +

    cupsaddsmb with a Samba PDC

    You can't get the standard cupsaddsmb command to run on a Samba PDC? You are asked for the password credential all over again and again and the command just will not take off at all? Try one of these @@ -1917,13 +1916,13 @@ variations:

    (Note the two backslashes: the first one is required to "escape" the second one). -

    cupsaddsmb Flowchart

    +

    cupsaddsmb Flowchart

    Here is a chart about the procedures, commandflows and dataflows of the "cupaddsmb" command. Note again: cupsaddsmb is not intended to, and does not work with, "raw" queues! -

    -

    Figure 19.14. cupsaddsmb flowchart

    cupsaddsmb flowchart
    -

    Installing the PostScript Driver on a Client

    +

    +

    Figure 19.14. cupsaddsmb flowchart

    cupsaddsmb flowchart

    +

    Installing the PostScript Driver on a Client

    After cupsaddsmb completed, your driver is prepared for the clients to use. Here are the steps you must perform to download and install it via "Point'n'Print". From a Windows client, browse to the CUPS/Samba @@ -1959,7 +1958,7 @@ functions. (Note that user "ntadmin" needs to be a valid Samba user with the required privileges to access the printershare) This would set up the printer connection in the traditional LanMan way (not using MS-RPC). -

    Avoiding critical PostScript Driver Settings on the +

    Avoiding critical PostScript Driver Settings on the Client

    Soooo: printing works, but there are still problems. Most jobs print well, some don't print at all. Some jobs have problems with fonts, @@ -1970,7 +1969,7 @@ your print device is not PostScript-enabled, you are treating your Ghostscript installation on your CUPS host with the output your client driver settings produce. Treat it well:

    • Avoid the PostScript Output Option: Optimize -for Speed settting. Rather use the Optimize for +for Speed setting. Rather use the Optimize for Portability instead (Adobe PostScript driver).

    • Don't use the Page Independence: NO setting. Instead use Page Independence @@ -1984,8 +1983,8 @@ Font (for exotic fonts you may need to change it back to get a printout at all) (Adobe)

    • Sometimes you can choose PostScript Language Level: in case of problems try 2 instead of 3 (the latest ESP Ghostscript package -handels Level 3 PostScript very well) (Adobe).

    • Say Yes to PostScript -Error Handler (Adobe)

    Installing PostScript Driver Files manually (using +handles Level 3 PostScript very well) (Adobe).

  • Say Yes to PostScript +Error Handler (Adobe)

  • Installing PostScript Driver Files manually (using rpcclient)

    Of course you can run all the commands which are embedded into the cupsaddsmb convenience utility yourself, one by one, and hereby upload @@ -2004,9 +2003,9 @@ sub-commands. enumprinters, the most interesting ones. rpcclient implements an important part of the MS-RPC protocol. You can use it to query (and command) a Win NT (or 2K/XP) PC too. MS-RPC is used by Windows clients, amongst other -things, to benefit from the "Point'n' Print" features. Samba can now +things, to benefit from the "Point'n'Print" features. Samba can now mimic this too. -

    A Check of the rpcclient man Page

    +

    A Check of the rpcclient man Page

    First let's have a little check of the rpcclient man page. Here are two relevant passages:

    @@ -2039,7 +2038,7 @@ printer driver associated with an installed printer. The printer driver must already be correctly installed on the print server.

    See also the enumprinters and enumdrivers commands for obtaining a list of installed printers and drivers. -

    Understanding the rpcclient man Page

    +

    Understanding the rpcclient man Page

    The exact format isn't made too clear by the man page, since you have to deal with some parameters containing spaces. Here is a better description for it. We have line-broken the @@ -2075,7 +2074,7 @@ box now, and access it from a UNIX workstation. We will query it with rpcclient to see what it tells us and try to understand the man page more clearly which we've read just now. -

    Producing an Example by querying a Windows Box

    +

    Producing an Example by querying a Windows Box

    We could run rpcclient with a getdriver or a getprinter subcommand (in level 3 verbosity) against it. Just sit down at UNIX or @@ -2120,9 +2119,9 @@ Some printer drivers list additional files under the label ListOfFiles,Comma-separated. For the CUPS PostScript drivers we don't need any (nor would we for the Adobe PostScript driver): therefore the field will get a "NULL" entry. -

    What is required for adddriver and setdriver to succeed

    +

    What is required for adddriver and setdriver to succeed

    From the manpage (and from the quoted output -ofcupsaddsmb, above) it becomes clear that you +of cupsaddsmb, above) it becomes clear that you need to have certain conditions in order to make the manual uploading and initializing of the driver files succeed. The two rpcclient subcommands (adddriver and @@ -2151,12 +2150,12 @@ rpcclient. A long-standing bug prevented a proper update of the printer list until every smbd process had received a SIGHUP or was restarted. Remember this in case you've created the CUPS printer just shortly ago and encounter problems: try restarting -Samba.

    Manual Commandline Driver Installation in 15 little Steps

    +Samba.

    Manual Commandline Driver Installation in 15 little Steps

    We are going to install a printer driver now by manually executing all required commands. As this may seem a rather complicated process at first, we go through the procedure step by step, explaining every single action item as it comes up. -

    First Step: Install the Printer on CUPS

    +

    First Step: Install the Printer on CUPS

     
     # lpadmin -p mysmbtstprn -v socket://10.160.51.131:9100 -E -P /home/kurt/canonIR85.ppd
     
    @@ -2165,7 +2164,7 @@ This installs printer with the name mysmbtstprn<
     to the CUPS system. The printer is accessed via a socket
     (a.k.a. JetDirect or Direct TCP/IP) connection. You need to be root
     for this step
    -

    Second Step (optional): Check if the Printer is recognized by +

    Second Step (optional): Check if the Printer is recognized by Samba

     
      # rpcclient -Uroot%xxxx -c 'enumprinters' localhost | grep -C2 mysmbtstprn
    @@ -2186,7 +2185,7 @@ already. You need to know root's Samba password (as set by the
     following steps. Alternatively you can authenticate as one of the
     users from the "write list" as defined in smb.conf for
     [print$].
    -

    Third Step (optional): Check if Samba knows a Driver for the +

    Third Step (optional): Check if Samba knows a Driver for the Printer

     
     #  rpcclient -Uroot%xxxx -c 'getprinter mysmbtstprn 2' localhost | grep driver
    @@ -2212,7 +2211,7 @@ This step was done for the purpose of demonstrating this condition. An
     attempt to connect to the printer at this stage will prompt the
     message along the lines: "The server has not the required printer
     driver installed".
    -

    Fourth Step: Put all required Driver Files into Samba's +

    Fourth Step: Put all required Driver Files into Samba's [print$]

     
     #  smbclient //localhost/print\$ -U 'root%xxxx'                        \ 
    @@ -2231,7 +2230,7 @@ present in the [print$] share. However, client
     would still not be able to install them, because Samba does not yet
     treat them as driver files. A client asking for the driver would still
     be presented with a "not installed here" message.
    -

    Fifth Step: Verify where the Driver Files are now

    +

    Fifth Step: Verify where the Driver Files are now

     
     #  ls -l /etc/samba/drivers/W32X86/
      total 669
    @@ -2245,7 +2244,7 @@ be presented with a "not installed here" message.
     

    The driver files now are in the W32X86 architecture "root" of [print$]. -

    Sixth Step: Tell Samba that these are +

    Sixth Step: Tell Samba that these are Driver Files (adddriver)

     
    @@ -2266,7 +2265,7 @@ driver. It is normally a good idea to use the same name as is used for
     the printername; however, in big installations you may use this driver
     for a number of printers which have obviously different names. So the
     name of the driver is not fixed.
    -

    Seventh Step: Verify where the Driver Files are now

    +

    Seventh Step: Verify where the Driver Files are now

     
     #  ls -l /etc/samba/drivers/W32X86/
      total 1
    @@ -2285,7 +2284,7 @@ name of the driver is not fixed.
     

    Notice how step 6 did also move the driver files to the appropriate subdirectory. Compare with the situation after step 5. -

    Eighth Step (optional): Verify if Samba now recognizes the +

    Eighth Step (optional): Verify if Samba now recognizes the Driver

     
     #  rpcclient -Uroot%xxxx -c 'enumdrivers 3' localhost | grep -B2 -A5 mydrivername
    @@ -2302,7 +2301,7 @@ Driver

     

    Remember, this command greps for the name you did choose for the driver in step Six. This command must succeed before you can proceed. -

    Ninth Step: Tell Samba which Printer should use these Driver +

    Ninth Step: Tell Samba which Printer should use these Driver Files (setdriver)

     
     #  rpcclient -Uroot%xxxx -c 'setdriver mysmbtstprn mydrivername' localhost
    @@ -2316,7 +2315,7 @@ driver. You don't need to repeat all the previous steps for the
     setdriver command to succeed. The only pre-conditions are:
     enumdrivers must find the driver and
     enumprinters must find the printer.
    -

    Tenth Step (optional): Verify if Samba has this Association +

    Tenth Step (optional): Verify if Samba has this Association recognized

     
     #  rpcclient -Uroot%xxxx -c 'getprinter mysmbtstprn 2' localhost | grep driver
    @@ -2358,7 +2357,7 @@ Compare these results with the ones from steps 2 and 3. Note that
     every single of these commands show the driver is installed.  Even
     the enumprinters command now lists the driver
     on the "description" line.
    -

    Eleventh Step (optional): Tickle the Driver into a correct +

    Eleventh Step (optional): Tickle the Driver into a correct Device Mode

    You certainly know how to install the driver on the client. In case you are not particularly familiar with Windows, here is a short @@ -2383,7 +2382,7 @@ into the "DOS box" (type root's smbpassword when prompted): Change any printer setting once (like "portrait" --> "landscape"), click "Apply"; change the setting back. -

    Twelveth Step: Install the Printer on a Client +

    Twelfth Step: Install the Printer on a Client ("Point'n'Print")

     
      C:\> rundll32 printui.dll,PrintUIEntry /in /n "\\sambacupsserver\mysmbtstprn"
    @@ -2391,24 +2390,24 @@ back.
     

    If it doesn't work it could be a permission problem with the [print$] share. -

    Thirteenth Step (optional): Print a Test Page

    +

    Thirteenth Step (optional): Print a Test Page

     
      C:\> rundll32 printui.dll,PrintUIEntry /p /n "\\sambacupsserver\mysmbtstprn"
     
     

    Then hit [TAB] 5 times, [ENTER] twice, [TAB] once and [ENTER] again and march to the printer. -

    Fourteenth Step (recommended): Study the Test Page

    +

    Fourteenth Step (recommended): Study the Test Page

    Hmmm.... just kidding! By now you know everything about printer installations and you don't need to read a word. Just put it in a frame and bolt it to the wall with the heading "MY FIRST RPCCLIENT-INSTALLED PRINTER" - why not just throw it away! -

    Fifteenth Step (obligatory): Enjoy. Jump. Celebrate your +

    Fifteenth Step (obligatory): Enjoy. Jump. Celebrate your Success

     
     # echo "Cheeeeerioooooo! Success..." >> /var/log/samba/log.smbd     
     
    -

    Troubleshooting revisited

    +

    Troubleshooting revisited

    The setdriver command will fail, if in Samba's mind the queue is not already there. You had promising messages about the:

    @@ -2451,7 +2450,7 @@ An alternative command could be this:
     

    BTW, you can use these commands, plus a few more, of course, to install drivers on remote Windows NT print servers too! -

    The printing *.tdb Files

    +

    The printing *.tdb Files

    Some mystery is associated with the series of files with a tdb-suffix appearing in every Samba installation. They are connections.tdb, @@ -2466,7 +2465,7 @@ tdb-suffix appearing in every Samba installation. They are ntprinters.tdb, sessionid.tdb and secrets.tdb. What is their purpose? -

    Trivial DataBase Files

    +

    Trivial DataBase Files

    A Windows NT (Print) Server keeps track of all information needed to serve its duty toward its clients by storing entries in the Windows "Registry". Client queries are answered by reading from the registry, @@ -2479,7 +2478,7 @@ or /var/lock/samba/ . The printing related files are ntprinters.tdb, printing.tdb,ntforms.tdb and ntdrivers.tdb. -

    Binary Format

    +

    Binary Format

    *.tdb files are not human readable. They are written in a binary format. "Why not ASCII?", you may ask. "After all, ASCII configuration files are a good and proofed tradition on UNIX." @@ -2492,7 +2491,7 @@ same time. The file format of Samba's *.tdb files allows for this provision. Many smbd processes may write to the same *.tdb file at the same time. This wouldn't be possible with pure ASCII files. -

    Losing *.tdb Files

    +

    Losing *.tdb Files

    It is very important that all *.tdb files remain consistent over all write and read accesses. However, it may happen that these files do get corrupted. (A @@ -2502,7 +2501,7 @@ etc.). In cases of trouble, a deletion of the old printing-related *.tdb files may be the only option. You need to re-create all print related setup after that. Or you have made a backup of the *.tdb files in time. -

    Using tdbbackup

    +

    Using tdbbackup

    Samba ships with a little utility which helps the root user of your system to back up your *.tdb files. If you run it with no argument, it prints a little usage message: @@ -2514,7 +2513,7 @@ with no argument, it prints a little usage message: Version:3.0a -h this help message -s suffix set the backup suffix - -v veryify mode (restore if corrupt) + -v verify mode (restore if corrupt)

    Here is how I backed up my printing.tdb file: @@ -2532,7 +2531,7 @@ Here is how I backed up my printing.tdb file: -rw------- 1 root root 40960 May 2 03:44 printing.tdb -rw------- 1 root root 40960 May 2 03:44 printing.tdb.bak -

    CUPS Print Drivers from Linuxprinting.org

    +

    CUPS Print Drivers from Linuxprinting.org

    CUPS ships with good support for HP LaserJet type printers. You can install the generic driver as follows:

    @@ -2566,13 +2565,13 @@ not work with PPDs generated for the old cupsomatic. The new-style
     PPDs are 100% compliant to the Adobe PPD specification. They are
     intended to be used by Samba and the cupsaddsmb utility also, to
     provide the driver files for the Windows clients also!
    -

    foomatic-rip and Foomatic explained

    +

    foomatic-rip and Foomatic explained

    Nowadays most Linux distros rely on the utilities of Linuxprinting.org to create their printing related software (which, BTW, works on all UNIXes and on Mac OS X or Darwin too). It is not known as well as it should be, that it also has a very end-user friendly interface which allows for an easy update of drivers and PPDs, for all supported -models, all spoolers, all operatings systems and all package formats +models, all spoolers, all operating systems and all package formats (because there is none). Its history goes back a few years.

    Recently Foomatic has achieved the astonishing milestone of 1000 @@ -2583,7 +2582,7 @@ its Foomatic< database. Currently there are 245 drivers in the database: many drivers support various models, and many models may be driven by different drivers; it's your choice! -

    690 "perfect" Printers

    +

    690 "perfect" Printers

    At present there are 690 devices dubbed as working "perfectly", 181 "mostly", 96 "partially" and 46 are "Paperweights". Keeping in mind that most of these are non-PostScript models (PostScript printers are @@ -2591,10 +2590,10 @@ automatically supported supported by CUPS to perfection, by using their own manufacturer-provided Windows-PPD...), and that a multifunctional device never qualifies as working "perfectly" if it doesn't also scan and copy and fax under GNU/Linux: then this is a -truely astonishing achievement. Three years ago the number was not +truly astonishing achievement. Three years ago the number was not more than 500, and Linux or UNIX "printing" at the time wasn't anywhere near the quality it is today! -

    How the "Printing HOWTO" started it all

    +

    Foomatic's strange Name

    +

    Foomatic's strange Name

    "Why the funny name?", you ask. When it really took off, around spring 2000, CUPS was far less popular than today, and most systems used LPD, LPRng or even PDQ to print. CUPS shipped with a few generic "drivers" @@ -2631,7 +2630,7 @@ developments available for CUPS;

  • It made available a lot of addit to CUPS users (because often the "traditional" Ghostscript way of printing was the only one available);

  • It gave all the advanced CUPS options (web interface, GUI driver configurations) to users wanting (or needing) to use -Ghostscript filters.

  • cupsomatic, pdqomatic, lpdomatic, directomatic

    +Ghostscript filters.

    cupsomatic, pdqomatic, lpdomatic, directomatic

    CUPS worked through a quickly-hacked up filter script named cupsomatic. cupsomatic ran the printfile through Ghostscript, constructing automatically the rather complicated command line needed. It just @@ -2665,7 +2664,7 @@ Foomatic up to versions 2.0.x required (ugly) Perl data structures attached the Linuxprinting.org PPDs for CUPS. It had a different "*omatic" script for every spooler, as well as different printer configuration files.. -

    7.13.1.5.The Grand Unification +

    7.13.1.5.The Grand Unification achieved...

    This all has changed in Foomatic versions 2.9 (Beta) and released as "stable" 3.0. This has now achieved the convergence of all *omatic @@ -2701,7 +2700,7 @@ sizes for many printers; and it will support printing on media drawn from different paper trays within the same job (in both cases: even where there is no support for this from Windows-based vendor printer drivers). -

    Driver Development outside

    +

    Driver Development outside

    Most driver development itself does not happen within Linuxprinting.org. Drivers are written by independent maintainers. Linuxprinting.org just pools all the information, and stores it in its @@ -2724,7 +2723,7 @@ effort, started by Michael Sweet (also lead developer for CUPS), now directed by Robert Krawitz, which has achieved an amazing level of photo print quality (many Epson users swear that its quality is better than the vendor drivers provided by Epson for the Microsoft -platforms). This currently supports 522 models.

    Forums, Downloads, Tutorials, Howtos -- also for Mac OS X and +platforms). This currently supports 522 models.

    Forums, Downloads, Tutorials, Howtos -- also for Mac OS X and commercial Unix

    Linuxprinting.org today is the one-stop "shop" to download printer drivers. Look for printer information and tutorials @@ -2745,7 +2744,7 @@ of the Foomatic project. Till Kamppeter from MandrakeSoft is doing an excellent job in his spare time to maintain Linuxprinting.org and Foomatic. So if you use it often, please send him a note showing your appreciation. -

    Foomatic Database generated PPDs

    +

    Foomatic Database generated PPDs

    The Foomatic database is an amazing piece of ingenuity in itself. Not only does it keep the printer and driver information, but it is organized in a way that it can generate "PPD" files "on the fly" from @@ -2770,7 +2769,7 @@ GUI tools (like KDE's marvellous "gtklp", "xpp" and the CUPS web interface) read the PPD too and use this information to present the available settings to the user as an intuitive menu selection. -

    foomatic-rip and Foomatic-PPD Download and Installation

    +

    foomatic-rip and Foomatic-PPD Download and Installation

    Here are the steps to install a foomatic-rip driven "LaserJet 4 Plus" compatible printer in CUPS (note that recent distributions of SuSE, UnitedLinux and Mandrake may ship with a complete package of @@ -2869,7 +2868,7 @@ the driver/model) contain support for a certain "device", representing the selected "driver" for your model (as shown by "gs -h")

  • foomatic-rip needs a new version of PPDs (PPD versions produced for cupsomatic don't work with -foomatic-rip).

  • Page Accounting with CUPS

    +foomatic-rip).

    Page Accounting with CUPS

    Often there are questions regarding "print quotas" wherein Samba users (that is, Windows clients) should not be able to print beyond a certain amount of pages or data volume per day, week or month. This @@ -2882,7 +2881,7 @@ Of course one could "hack" things with one's own scripts. But then there is CUPS. CUPS supports "quotas" which can be based on sizes of jobs or on the number of pages or both, and are spanning any time period you want. -

    Setting up Quotas

    +

    Setting up Quotas

    This is an example command how root would set a print quota in CUPS, assuming an existing printer named "quotaprinter":

    @@ -2893,7 +2892,7 @@ assuming an existing printer named "quotaprinter":
     This would limit every single user to print 100 pages or 1024 KB of
     data (whichever comes first) within the last 604,800 seconds ( = 1
     week).
    -

    Correct and incorrect Accounting

    +

    Correct and incorrect Accounting

    For CUPS to count correctly, the printfile needs to pass the CUPS "pstops" filter, otherwise it uses a "dummy" count of "1". Some printfiles don't pass it (eg: image files) but then those are mostly 1 @@ -2908,7 +2907,7 @@ printer is a non-PostScript model, you need to let CUPS do the job to convert the file to a print-ready format for the target printer. This will be working for currently about 1,000 different printer models, see http://www.linuxprinting.org/printer_list.cgi). -

    Adobe and CUPS PostScript Drivers for Windows Clients

    +

    Adobe and CUPS PostScript Drivers for Windows Clients

    Before CUPS-1.1.16 your only option was to use the Adobe PostScript Driver on the Windows clients. The output of this driver was not always passed through the "pstops" filter on the CUPS/Samba side, and @@ -2928,7 +2927,7 @@ printfile

    You can read more about the setup of this combination in the manpage for "cupsaddsmb" (which is only present with CUPS installed, and only current from CUPS 1.1.16). -

    The page_log File Syntax

    +

    The page_log File Syntax

    These are the items CUPS logs in the "page_log" for every single page of a job:

    • Printer name

    • User name

    • Job ID

    • Time of printing

    • the page number

    • the number of copies

    • a billing information string @@ -2950,7 +2949,7 @@ This was job ID "401", printed on "infotec_IS2027" by user & from IP address 10.160.50.13. The next job had ID "402", was sent by user "boss" from IP address 10.160.51.33,printed from one page 440 copies and is set to be billed to "finance-dep". -

    Possible Shortcomings

    +

    Possible Shortcomings

    What flaws or shortcomings are there with this quota system?

    • the ones named above (wrongly logged job in case of printer hardware failure, etc.)

    • in reality, CUPS counts the job pages that are being @@ -2964,7 +2963,7 @@ groups

    • no means to read out the current balance or the "used-up" number of current quota

    • a user having used up 99 sheets of 100 quota will still be able to send and print a 1,000 sheet job

    • a user being denied a job because of a filled-up quota doesn't get a meaningful error message from CUPS other than -"client-error-not-possible".

    Future Developments

    +"client-error-not-possible".

    Future Developments

    This is the best system currently available, and there are huge improvements under development for CUPS 1.2:

    • page counting will go into the "backends" (these talk @@ -2972,9 +2971,9 @@ directly to the printer and will increase the count in sync with the actual printing process: thus a jam at the 5th sheet will lead to a stop in the counting)

    • quotas will be handled more flexibly

    • probably there will be support for users to inquire their "accounts" in advance

    • probably there will be support for some other tools -around this topic

    Other Accounting Tools

    +around this topic

    Other Accounting Tools

    PrintAnalyzer, pyKota, printbill, LogReport. -

    Additional Material

    +

    Additional Material

    A printer queue with no PPD associated to it is a "raw" printer and all files will go directly there as received by the spooler. The exceptions are file types "application/octet-stream" @@ -3052,7 +3051,7 @@ the jobs of hundreds of users on some big machine, where no user is allowed to have direct access (such as when the operators often need to load the proper paper type before running the 10,000 page job requested by marketing for the mailing, etc.). -

    Auto-Deletion or Preservation of CUPS Spool Files

    +

    Auto-Deletion or Preservation of CUPS Spool Files

    Samba print files pass through two "spool" directories. One is the incoming directory managed by Samba, (set in the path = /var/spool/samba directive in the @@ -3061,7 +3060,7 @@ incoming directory managed by Samba, (set in the path your UNIX print subsystem. For CUPS it is normally /var/spool/cups/, as set by the cupsd.conf directive RequestRoot /var/spool/cups. -

    CUPS Configuration Settings explained

    +

    CUPS Configuration Settings explained

    Some important parameter settings in the CUPS configuration file cupsd.conf are:

    PreserveJobHistory Yes

    @@ -3085,7 +3084,7 @@ maximum to 0 disables this functionality. The default setting is

    (There are also additional settings for "MaxJobsPerUser" and "MaxJobsPerPrinter"...) -

    Pre-conditions

    +

    Pre-conditions

    For everything to work as announced, you need to have three things:

    • a Samba-smbd which is compiled against "libcups" (Check @@ -3096,15 +3095,15 @@ In this case all other manually set printing-related commands (like "print command", "lpq command", "lprm command", "lppause command" or "lpresume command") are ignored and they should normally have no influence what-so-ever on your printing. -

    Manual Configuration

    +

    Manual Configuration

    If you want to do things manually, replace the "printing = cups" by "printing = bsd". Then your manually set commands may work (haven't tested this), and a "print command = lp -d %P %s; rm %s" may do what you need. -

    When not to use Samba to print to +

    When not to use Samba to print to CUPS

    [TO BE DONE] -

    In Case of Trouble.....

    +

    In Case of Trouble.....

    If you have more problems, post the output of these commands to the CUPS or Samba mailing lists (choose the one which seems more relevant to your problem): @@ -3120,13 +3119,13 @@ compact way. Don't forget to name the CUPS and Samba versions you are using! This saves bandwidth and makes for easier readability for experts (and you are expecting experts to read them, right? ;-) -

    Where to find Documentation

    +

    Where to find Documentation

    [TO BE DONE] -

    How to ask for Help

    +

    How to ask for Help

    [TO BE DONE] -

    Where to find Help

    +

    Where to find Help

    [TO BE DONE] -

    Appendix

    Printing from CUPS to Windows attached +

    Appendix

    Printing from CUPS to Windows attached Printers

    From time to time the question arises, how you can print to a Windows attached printer @@ -3214,7 +3213,7 @@ doesn't require a password! Printing will only work if you have a working netbios name resolution up and running. Note that this is a feature of CUPS and you don't necessarily need to have smbd running (but who wants that? :-). -

    More CUPS filtering Chains

    +

    More CUPS filtering Chains

    The following diagrams reveal how CUPS handles print jobs.

     #########################################################################
    @@ -3505,7 +3504,7 @@ The following diagrams reveal how CUPS handles print jobs.
     #       CUPS and ESP PrintPro plug-in where rastertosomething is noted.
     #
     ##########################################################################
    -

    Trouble Shooting Guidelines to fix typical Samba printing +

    Trouble Shooting Guidelines to fix typical Samba printing Problems

    This is a short description of how to debug printing problems with Samba. This describes how to debug problems with printing from @@ -3618,35 +3617,35 @@ three dialogs look the same. Only one of does what you intend. You need to be Administrator or Print Administrator to do this for all users. Here is how I do in on XP: -

    1. The first "wrong" way: +

      1. The first "wrong" way: -

        1. Open the Printers +

          1. Open the Printers folder.

          2. Right-click on the printer (remoteprinter on cupshost) and select in context menu Printing Preferences...

          3. Look at this dialog closely and remember what it looks -like.

          -
        2. The second "wrong" way: +like.

        +

      2. The second "wrong" way: -

        1. Open the Printers +

          1. Open the Printers folder.

          2. Right-click on the printer (remoteprinter on cupshost) and select in the context menu Properties

          3. Click on the General tab

          4. Click on the button Printing Preferences...

          5. A new dialog opens. Keep this dialog open and go back -to the parent dialog.

          -
        2. The third, the "correct" way: (should you do +to the parent dialog.

        +

      3. The third, the "correct" way: (should you do this from the beginning, just carry out steps 1. and 2. from second "way" above) -

        1. Click on the Advanced +

          1. Click on the Advanced tab. (Hmmm... if everything is "Grayed Out", then you are not logged in as a user with enough privileges).

          2. Click on the Printing Defaults... button.

          3. On any of the two new tabs, click on the Advanced... button.

          4. A new dialog opens. Compare this one to the other, -identical looking one from "B.5" or A.3".

          -

        +identical looking one from "B.5" or A.3".

      +

    Do you see any difference? I don't either... However, only the last one, which you arrived at with steps "C.1.-6." will save any settings permanently and be the defaults for new users. If you want all clients @@ -3729,6 +3728,6 @@ Windows box with a shared PostScript printer: smbclient W32X86/2 subdir to mget ADOBE* and other files or to WIN40/0 to do the same. -- Another option is to download the *.exe packaged -files from the Adobe website.

    An Overview of the CUPS Printing Processes

    -

    Figure 19.15. CUPS Printing Overview

    CUPS Printing Overview
    -
    +files from the Adobe website.

    An Overview of the CUPS Printing Processes

    +

    Figure 19.15. CUPS Printing Overview

    CUPS Printing Overview

    +

    -- cgit