- Timestamp:
- May 23, 2008, 6:56:41 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.0/docs/htmldocs/Samba3-HOWTO/CUPS-printing.html
r44 r134 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 22. CUPS Printing Support</title><link rel="stylesheet" href=" samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.71.0"><link rel="start" href="index.html" title="The Official Samba-3 HOWTO and Reference Guide"><link rel="up" href="optional.html" title="Part III. Advanced Configuration"><link rel="prev" href="classicalprinting.html" title="Chapter 21. Classical Printing Support"><link rel="next" href="VFS.html" title="Chapter 23. Stackable VFS modules"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. CUPS Printing Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="classicalprinting.html">Prev</a> </td><th width="60%" align="center">Part III. Advanced Configuration</th><td width="20%" align="right"> <a accesskey="n" href="VFS.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="CUPS-printing"></a>Chapter 22. CUPS Printing Support</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Kurt</span> <span class="surname">Pfeifle</span></h3><div class="affiliation"><span class="orgname">Danka Deutschland GmbH <br></span><div class="address"><p><code class="email"><<a href="mailto:kpfeifle@danka.de">kpfeifle@danka.de</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Ciprian</span> <span class="surname">Vizitiu</span></h3><span class="contrib">drawings</span><div class="affiliation"><div class="address"><p><code class="email"><<a href="mailto:CVizitiu@gbif.org">CVizitiu@gbif.org</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="othername">R.</span> <span class="surname">Vernooij</span></h3><span class="contrib">drawings</span><div class="affiliation"><span class="orgname">The Samba Team<br></span><div class="address"><p><code class="email"><<a href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div><div><p class="pubdate"> (27 Jan 2004) </p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="CUPS-printing.html#id392883">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id392889">Features and Benefits</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id392940">Overview</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id393049">Basic CUPS Support Configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id393149">Linking smbd with libcups.so</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id393337">Simple <code class="filename">smb.conf</code> Settings for CUPS</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id393584">More Complex CUPS <code class="filename">smb.conf</code> Settings</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id393980">Advanced Configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id393994">Central Spooling vs. “<span class="quote">Peer-to-Peer</span>” Printing</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id394045">Raw Print Serving: Vendor Drivers on Windows Clients</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id394249">Installation of Windows Client Drivers</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#cups-raw">Explicitly Enable “<span class="quote">raw</span>” Printing for <span class="emphasis"><em>application/octet-stream</em></span></a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id394512">Driver Upload Methods</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id394623">Advanced Intelligent Printing with PostScript Driver Download</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#gdipost">GDI on Windows, PostScript on UNIX</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id394797">Windows Drivers, GDI, and EMF</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id394963">UNIX Printfile Conversion and GUI Basics</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#post-and-ghost">PostScript and Ghostscript</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id395287">Ghostscript: The Software RIP for Non-PostScript Printers</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id395426">PostScript Printer Description (PPD) Specification</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id395495">Using Windows-Formatted Vendor PPDs</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id395604">CUPS Also Uses PPDs for Non-PostScript Printers</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id395639">The CUPS Filtering Architecture</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id395860">MIME Types and CUPS Filters</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id396270">MIME Type Conversion Rules</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id396465">Filtering Overview</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id396616">Prefilters</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id396793">pstops</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id396952">pstoraster</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id397202">imagetops and imagetoraster</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id397282">rasterto [printers specific]</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id397494">CUPS Backends</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id397802">The Role of <em class="parameter"><code>cupsomatic/foomatic</code></em></a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id398021">The Complete Picture</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id398033"><code class="filename">mime.convs</code></a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id398094">“<span class="quote">Raw</span>” Printing</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id398194">application/octet-stream Printing</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id398455">PostScript Printer Descriptions for Non-PostScript Printers</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id398718"><span class="emphasis"><em>cupsomatic/foomatic-rip</em></span> Versus <span class="emphasis"><em>Native CUPS</em></span> Printing</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id399033">Examples for Filtering Chains</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id399434">Sources of CUPS Drivers/PPDs</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id399543">Printing with Interface Scripts</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id399622">Network Printing (Purely Windows)</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id399636">From Windows Clients to an NT Print Server</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id399694">Driver Execution on the Client</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id399759">Driver Execution on the Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id399858">Network Printing (Windows Clients and UNIX/Samba Print2 Servers)</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id 399874">From Windows Clients to a CUPS/Samba Print Server</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id400039">Samba Receiving Job-Files and Passing Them to CUPS</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id400108">Network PostScript RIP</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id400187">PPDs for Non-PS Printers on UNIX</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id400224">PPDs for Non-PS Printers on Windows</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id400285">Windows Terminal Servers (WTS) as CUPS Clients</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id400296">Printer Drivers Running in “<span class="quote">Kernel Mode</span>” Cause Many3 Problems</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id4 00328">Workarounds Impose Heavy Limitations</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id400341">CUPS: A “<span class="quote">Magical Stone</span>”?</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id400378">PostScript Drivers with No Major Problems, Even in Kernel4 Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id4 00456">Configuring CUPS for Driver Download</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id400475"><span class="emphasis"><em>cupsaddsmb</em></span>: The Unknown Utility</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id400563">Prepare Your <code class="filename">smb.conf</code> for <code class="literal">cupsaddsmb</code></a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id400868">CUPS “<span class="quote">PostScript Driver for Windows NT/200x/XP</span>”</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id401090">Recognizing Different Driver Files</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id401201">Acquiring the Adobe Driver Files</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id401221">ESP Print Pro PostScript Driver for Windows NT/200x/XP</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id401275">Caveats to Be Considered</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id401555">Windows CUPS PostScript Driver Versus Adobe Driver</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id401750">Run cupsaddsmb (Quiet Mode)</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id401880">Run cupsaddsmb with Verbose Output</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id402011">Understanding cupsaddsmb</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id402147">How to Recognize If cupsaddsmb Completed Successfully</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id402254">cupsaddsmb with a Samba PDC</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id402332">cupsaddsmb Flowchart</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id402410">Installing the PostScript Driver on a Client</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#cups-avoidps1">Avoiding Critical PostScript Driver Settings on the Client</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id402619">Installing PostScript Driver Files Manually Using rpcclient</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id402785">A Check of the rpcclient man Page</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id402945">Understanding the rpcclient man Page</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id403037">Producing an Example by Querying a Windows Box</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id403163">Requirements for adddriver and setdriver to Succeed</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id403371">Manual Driver Installation in 15 Steps</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id404250">Troubleshooting Revisited</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id404381">The Printing <code class="filename">*.tdb</code> Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id404580">Trivial Database Files</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id404646">Binary Format</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id404707">Losing <code class="filename">*.tdb</code> Files</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id404753">Using <code class="literal">tdbbackup</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id404864">CUPS Print Drivers from Linuxprinting.org</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id405024">foomatic-rip and Foomatic Explained</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id405729">foomatic-rip and Foomatic PPD Download and Installation</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id406151">Page Accounting with CUPS</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id406181">Setting Up Quotas</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id406232">Correct and Incorrect Accounting</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id406265">Adobe and CUPS PostScript Drivers for Windows Clients</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id406396">The page_log File Syntax</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id406532">Possible Shortcomings</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id406590">Future Developments</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id406625">Other Accounting Tools</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id406637">Additional Material</a></span></dt><dt><span class="sect1"><a href="CUPS-printing.html#id406826">Autodeletion or Preservation of CUPS Spool Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id406894">CUPS Configuration Settings Explained</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id406971">Preconditions</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407077">Manual Configuration</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id407111">Printing from CUPS to Windows-Attached Printers</a></span></dt><dt><span class="sect1"><a href="CUPS-printing.html#id407368">More CUPS Filtering Chains</a></span></dt><dt><span class="sect1"><a href="CUPS-printing.html#id407477">Common Errors</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id407482">Windows 9x/Me Client Can't Install Driver</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#root-ask-loop">“<span class="quote">cupsaddsmb</span>” Keeps Asking for Root Password in Never-ending Loop</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407549">“<span class="quote">cupsaddsmb</span>” or “<span class="quote">rpcclient addriver</span>” Emit Error</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407585">“<span class="quote">cupsaddsmb</span>” Errors</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407655">Client Can't Connect to Samba Printer</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407678">New Account Reconnection from Windows 200x/XP Troubles</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407756">Avoid Being Connected to the Samba Server as the Wrong User</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407795">Upgrading to CUPS Drivers from Adobe Drivers</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407830">Can't Use “<span class="quote">cupsaddsmb</span>” on Samba Server, Which Is a PDC</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407864">Deleted Windows 200x Printer Driver Is Still Shown</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407895">Windows 200x/XP Local Security Policies</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407926">Administrator Cannot Install Printers for All Local Users</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407963">Print Change, Notify Functions on NT Clients</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id407987">Win XP-SP1</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id408028">Print Options for All Users Can't Be Set on Windows 200x/XP</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id408292">Most Common Blunders in Driver Settings on Windows Clients</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id408345"><code class="literal">cupsaddsmb</code> Does Not Work with Newly Installed Printer</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id408391">Permissions on <code class="filename">/var/spool/samba/</code> Get Reset After Each Reboot</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id408477">Print Queue Called “<span class="quote">lp</span>” Mishandles Print Jobs</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id408540">Location of Adobe PostScript Driver Files for “<span class="quote">cupsaddsmb</span>”</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id408591">Overview of the CUPS Printing Processes</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id392883"></a>Introduction</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id392889"></a>Features and Benefits</h3></div></div></div><p>5 <a class="indexterm" name="id 392897"></a>6 The Common UNIX Print System (<a href="http://www.cups.org/" target="_top">CUPS</a>)1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 22. CUPS Printing Support</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.2"><link rel="start" href="index.html" title="The Official Samba 3.2.x HOWTO and Reference Guide"><link rel="up" href="optional.html" title="Part III. Advanced Configuration"><link rel="prev" href="classicalprinting.html" title="Chapter 21. Classical Printing Support"><link rel="next" href="VFS.html" title="Chapter 23. Stackable VFS modules"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. CUPS Printing Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="classicalprinting.html">Prev</a> </td><th width="60%" align="center">Part III. Advanced Configuration</th><td width="20%" align="right"> <a accesskey="n" href="VFS.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="CUPS-printing"></a>Chapter 22. CUPS Printing Support</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Kurt</span> <span class="surname">Pfeifle</span></h3><div class="affiliation"><span class="orgname">Danka Deutschland GmbH <br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:kpfeifle@danka.de">kpfeifle@danka.de</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Ciprian</span> <span class="surname">Vizitiu</span></h3><span class="contrib">drawings</span> <div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:CVizitiu@gbif.org">CVizitiu@gbif.org</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="othername">R.</span> <span class="surname">Vernooij</span></h3><span class="contrib">drawings</span> <div class="affiliation"><span class="orgname">The Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div><div><p class="pubdate"> (27 Jan 2004) </p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="CUPS-printing.html#id416419">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id416425">Features and Benefits</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id416476">Overview</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id416588">Basic CUPS Support Configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id416695">Linking smbd with libcups.so</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id416919">Simple <code class="filename">smb.conf</code> Settings for CUPS</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id417155">More Complex CUPS <code class="filename">smb.conf</code> Settings</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id417537">Advanced Configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id417551">Central Spooling vs. “<span class="quote">Peer-to-Peer</span>” Printing</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id417596">Raw Print Serving: Vendor Drivers on Windows Clients</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id417810">Installation of Windows Client Drivers</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#cups-raw">Explicitly Enable “<span class="quote">raw</span>” Printing for <span class="emphasis"><em>application/octet-stream</em></span></a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id418073">Driver Upload Methods</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id418184">Advanced Intelligent Printing with PostScript Driver Download</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#gdipost">GDI on Windows, PostScript on UNIX</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id418358">Windows Drivers, GDI, and EMF</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id418524">UNIX Printfile Conversion and GUI Basics</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#post-and-ghost">PostScript and Ghostscript</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id418848">Ghostscript: The Software RIP for Non-PostScript Printers</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id418988">PostScript Printer Description (PPD) Specification</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id419056">Using Windows-Formatted Vendor PPDs</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id419165">CUPS Also Uses PPDs for Non-PostScript Printers</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id419200">The CUPS Filtering Architecture</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id419416">MIME Types and CUPS Filters</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id419826">MIME Type Conversion Rules</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id420021">Filtering Overview</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id420169">Prefilters</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id420346">pstops</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id420506">pstoraster</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id420757">imagetops and imagetoraster</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id420837">rasterto [printers specific]</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id421049">CUPS Backends</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id421357">The Role of <em class="parameter"><code>cupsomatic/foomatic</code></em></a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id421572">The Complete Picture</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id421583"><code class="filename">mime.convs</code></a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id421644">“<span class="quote">Raw</span>” Printing</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id421744">application/octet-stream Printing</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id422005">PostScript Printer Descriptions for Non-PostScript Printers</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id422269"><span class="emphasis"><em>cupsomatic/foomatic-rip</em></span> Versus <span class="emphasis"><em>Native CUPS</em></span> Printing</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id422583">Examples for Filtering Chains</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id422984">Sources of CUPS Drivers/PPDs</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id423093">Printing with Interface Scripts</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id423172">Network Printing (Purely Windows)</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id423186">From Windows Clients to an NT Print Server</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id423245">Driver Execution on the Client</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id423310">Driver Execution on the Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id423409">Network Printing (Windows Clients and UNIX/Samba Print 2 Servers)</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id423425">From Windows Clients to a CUPS/Samba Print Server</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id423600">Samba Receiving Job-Files and Passing Them to CUPS</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id423671">Network PostScript RIP</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id423751">PPDs for Non-PS Printers on UNIX</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id423788">PPDs for Non-PS Printers on Windows</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id423848">Windows Terminal Servers (WTS) as CUPS Clients</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id423860">Printer Drivers Running in “<span class="quote">Kernel Mode</span>” Cause Many 3 Problems</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id423891">Workarounds Impose Heavy Limitations</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id423905">CUPS: A “<span class="quote">Magical Stone</span>”?</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id423941">PostScript Drivers with No Major Problems, Even in Kernel 4 Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id424020">Configuring CUPS for Driver Download</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id424038"><span class="emphasis"><em>cupsaddsmb</em></span>: The Unknown Utility</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id424126">Prepare Your <code class="filename">smb.conf</code> for <code class="literal">cupsaddsmb</code></a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id424414">CUPS “<span class="quote">PostScript Driver for Windows NT/200x/XP</span>”</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id424635">Recognizing Different Driver Files</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id424746">Acquiring the Adobe Driver Files</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id424766">ESP Print Pro PostScript Driver for Windows NT/200x/XP</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id424821">Caveats to Be Considered</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id425100">Windows CUPS PostScript Driver Versus Adobe Driver</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id425295">Run cupsaddsmb (Quiet Mode)</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id425429">Run cupsaddsmb with Verbose Output</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id425560">Understanding cupsaddsmb</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id425696">How to Recognize If cupsaddsmb Completed Successfully</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id425806">cupsaddsmb with a Samba PDC</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id425884">cupsaddsmb Flowchart</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id425962">Installing the PostScript Driver on a Client</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#cups-avoidps1">Avoiding Critical PostScript Driver Settings on the Client</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id426171">Installing PostScript Driver Files Manually Using rpcclient</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id426337">A Check of the rpcclient man Page</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id426497">Understanding the rpcclient man Page</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id426589">Producing an Example by Querying a Windows Box</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id426709">Requirements for adddriver and setdriver to Succeed</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id426920">Manual Driver Installation in 15 Steps</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id427799">Troubleshooting Revisited</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id427930">The Printing <code class="filename">*.tdb</code> Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id428129">Trivial Database Files</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id428191">Binary Format</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id428252">Losing <code class="filename">*.tdb</code> Files</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id428299">Using <code class="literal">tdbbackup</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id428409">CUPS Print Drivers from Linuxprinting.org</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id428570">foomatic-rip and Foomatic Explained</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id429283">foomatic-rip and Foomatic PPD Download and Installation</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id429705">Page Accounting with CUPS</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id429735">Setting Up Quotas</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id429785">Correct and Incorrect Accounting</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id429818">Adobe and CUPS PostScript Drivers for Windows Clients</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id429949">The page_log File Syntax</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id430085">Possible Shortcomings</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id430143">Future Developments</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id430178">Other Accounting Tools</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id430191">Additional Material</a></span></dt><dt><span class="sect1"><a href="CUPS-printing.html#id430379">Autodeletion or Preservation of CUPS Spool Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id430451">CUPS Configuration Settings Explained</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id430528">Preconditions</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id430657">Manual Configuration</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id430701">Printing from CUPS to Windows-Attached Printers</a></span></dt><dt><span class="sect1"><a href="CUPS-printing.html#id430957">More CUPS Filtering Chains</a></span></dt><dt><span class="sect1"><a href="CUPS-printing.html#id431066">Common Errors</a></span></dt><dd><dl><dt><span class="sect2"><a href="CUPS-printing.html#id431072">Windows 9x/Me Client Can't Install Driver</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#root-ask-loop">“<span class="quote">cupsaddsmb</span>” Keeps Asking for Root Password in Never-ending Loop</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431141">“<span class="quote">cupsaddsmb</span>” or “<span class="quote">rpcclient addriver</span>” Emit Error</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431178">“<span class="quote">cupsaddsmb</span>” Errors</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431248">Client Can't Connect to Samba Printer</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431271">New Account Reconnection from Windows 200x/XP Troubles</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431352">Avoid Being Connected to the Samba Server as the Wrong User</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431398">Upgrading to CUPS Drivers from Adobe Drivers</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431432">Can't Use “<span class="quote">cupsaddsmb</span>” on Samba Server, Which Is a PDC</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431467">Deleted Windows 200x Printer Driver Is Still Shown</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431498">Windows 200x/XP Local Security Policies</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431529">Administrator Cannot Install Printers for All Local Users</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431566">Print Change, Notify Functions on NT Clients</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431589">Win XP-SP1</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431631">Print Options for All Users Can't Be Set on Windows 200x/XP</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431898">Most Common Blunders in Driver Settings on Windows Clients</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431951"><code class="literal">cupsaddsmb</code> Does Not Work with Newly Installed Printer</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id431997">Permissions on <code class="filename">/var/spool/samba/</code> Get Reset After Each Reboot</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id432090">Print Queue Called “<span class="quote">lp</span>” Mishandles Print Jobs</a></span></dt><dt><span class="sect2"><a href="CUPS-printing.html#id432153">Location of Adobe PostScript Driver Files for “<span class="quote">cupsaddsmb</span>”</a></span></dt></dl></dd><dt><span class="sect1"><a href="CUPS-printing.html#id432204">Overview of the CUPS Printing Processes</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id416419"></a>Introduction</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id416425"></a>Features and Benefits</h3></div></div></div><p> 5 <a class="indexterm" name="id416433"></a> 6 The Common UNIX Print System (<a class="ulink" href="http://www.cups.org/" target="_top">CUPS</a>) 7 7 has become quite popular. All major Linux distributions now ship it as their default printing 8 8 system. To many, it is still a mystical tool. Mostly, it just works. People tend to regard 9 9 it as a “<span class="quote">black box</span>” that they do not want to look into as long as it works. But once 10 10 there is a little problem, they have trouble finding out where to start debugging it. Refer to 11 <a href="classicalprinting.html" title="Chapter 21. Classical Printing Support">Classical Printing</a>, which contains much information11 <a class="link" href="classicalprinting.html" title="Chapter 21. Classical Printing Support">Classical Printing</a>, which contains much information 12 12 that is also relevant to CUPS. 13 13 </p><p> 14 <a class="indexterm" name="id 392927"></a>14 <a class="indexterm" name="id416463"></a> 15 15 CUPS sports quite a few unique and powerful features. While its basic functions may be grasped quite 16 16 easily, they are also new. Because it is different from other, more traditional printing systems, it is best … … 18 18 the beginning. This documentation will lead you to a complete understanding of CUPS. Let's start with the most 19 19 basic things first. 20 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 392940"></a>Overview</h3></div></div></div><p>21 <a class="indexterm" name="id 392948"></a>22 <a class="indexterm" name="id 392954"></a>23 <a class="indexterm" name="id 392961"></a>24 <a class="indexterm" name="id 392968"></a>25 <a class="indexterm" name="id 392975"></a>26 <a class="indexterm" name="id 392984"></a>27 <a class="indexterm" name="id 392994"></a>28 <a class="indexterm" name="id 393000"></a>20 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id416476"></a>Overview</h3></div></div></div><p> 21 <a class="indexterm" name="id416484"></a> 22 <a class="indexterm" name="id416490"></a> 23 <a class="indexterm" name="id416497"></a> 24 <a class="indexterm" name="id416504"></a> 25 <a class="indexterm" name="id416511"></a> 26 <a class="indexterm" name="id416520"></a> 27 <a class="indexterm" name="id416530"></a> 28 <a class="indexterm" name="id416536"></a> 29 29 CUPS is more than just a print spooling system. It is a complete printer management system that 30 30 complies with the new Internet Printing Protocol (IPP). IPP is an industry and Internet Engineering Task Force … … 32 32 browser (giving you platform-independent access to the CUPS print server). Additionally, it has the 33 33 traditional command line and several more modern GUI interfaces (GUI interfaces developed by third parties, 34 like KDE's overwhelming <a href="http://printing.kde.org/" target="_top">KDEPrint</a>).34 like KDE's overwhelming <a class="ulink" href="http://printing.kde.org/" target="_top">KDEPrint</a>). 35 35 </p><p> 36 <a class="indexterm" name="id 393021"></a>37 <a class="indexterm" name="id 393028"></a>36 <a class="indexterm" name="id416557"></a> 37 <a class="indexterm" name="id416564"></a> 38 38 CUPS allows creation of <span class="emphasis"><em>raw</em></span> printers (i.e., no print file format translation) as 39 39 well as <span class="emphasis"><em>smart</em></span> printers (i.e., CUPS does file format conversion as required for the … … 41 41 course, if you are a CUPS advocate, you would argue that CUPS is better! In any case, let us now explore how 42 42 to configure CUPS for interfacing with MS Windows print clients via Samba. 43 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id 393049"></a>Basic CUPS Support Configuration</h2></div></div></div><p>44 <a class="indexterm" name="id 393057"></a>45 <a class="indexterm" name="id 393063"></a>46 <a class="indexterm" name="id 393070"></a>47 <a class="indexterm" name="id 393077"></a>48 <a class="indexterm" name="id 393084"></a>43 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id416588"></a>Basic CUPS Support Configuration</h2></div></div></div><p> 44 <a class="indexterm" name="id416596"></a> 45 <a class="indexterm" name="id416603"></a> 46 <a class="indexterm" name="id416609"></a> 47 <a class="indexterm" name="id416616"></a> 48 <a class="indexterm" name="id416623"></a> 49 49 Printing with CUPS in the most basic <code class="filename">smb.conf</code> setup in Samba-3.0 (as was true for 2.2.x) requires just two 50 parameters: <a class=" indexterm" name="id393098"></a>printing = cups and <a class="indexterm" name="id393105"></a>printcap = cups. CUPS does not need a printcap file. However, the50 parameters: <a class="link" href="smb.conf.5.html#PRINTING">printing = cups</a> and <a class="link" href="smb.conf.5.html#PRINTCAP">printcap = cups</a>. CUPS does not need a printcap file. However, the 51 51 <code class="filename">cupsd.conf</code> configuration file knows of two related directives that control how such a 52 52 file will be automatically created and maintained by CUPS for the convenience of third-party applications … … 55 55 print. Make sure CUPS is set to generate and maintain a printcap file. For details, see <code class="literal">man 56 56 cupsd.conf</code> and other CUPS-related documentation, like the wealth of documents regarding the CUPS 57 server itself available from the <a href="http://localhost:631/documentation.html" target="_top">CUPS</a> web site.58 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 393149"></a>Linking smbd with libcups.so</h3></div></div></div><p>59 <a class="indexterm" name="id 393157"></a>57 server itself available from the <a class="ulink" href="http://localhost:631/documentation.html" target="_top">CUPS</a> web site. 58 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id416695"></a>Linking smbd with libcups.so</h3></div></div></div><p> 59 <a class="indexterm" name="id416703"></a> 60 60 Samba has a special relationship to CUPS. Samba can be compiled with CUPS library support. 61 61 Most recent installations have this support enabled. By default, CUPS linking is compiled … … 64 64 there are some differences in required or supported configuration. 65 65 </p><p> 66 <a class="indexterm" name="id 393179"></a>67 <a class="indexterm" name="id 393186"></a>68 When Samba is compiled and linked with <code class="filename">libcups</code>, <a class=" indexterm" name="id393198"></a>printcap = cups66 <a class="indexterm" name="id416725"></a> 67 <a class="indexterm" name="id416732"></a> 68 When Samba is compiled and linked with <code class="filename">libcups</code>, <a class="link" href="smb.conf.5.html#PRINTCAP">printcap = cups</a> 69 69 uses the CUPS API to list printers, submit jobs, query queues, and so on. Otherwise it maps to the System V 70 70 commands with an additional <code class="literal">-oraw</code> option for printing. On a Linux … … 80 80 </pre><p> 81 81 </p><p> 82 <a class="indexterm" name="id 393246"></a>82 <a class="indexterm" name="id416796"></a> 83 83 The line <code class="computeroutput">libcups.so.2 => /usr/lib/libcups.so.2 (0x40123000)</code> shows 84 84 there is CUPS support compiled into this version of Samba. If this is the case, and printing = cups … … 86 86 This is an important point to remember! 87 87 </p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p> Should it be necessary, for any reason, to set your own print commands, you can do this by setting 88 <a class=" indexterm" name="id393277"></a>printing = sysv. However, you will lose all the benefits88 <a class="link" href="smb.conf.5.html#PRINTING">printing = sysv</a>. However, you will lose all the benefits 89 89 of tight CUPS-Samba integration. When you do this, you must manually configure the printing system commands 90 90 (most important: 91 <a class=" indexterm" name="id393285"></a>print command; other commands are92 <a class=" indexterm" name="id393293"></a>lppause command,93 <a class=" indexterm" name="id393300"></a>lpresume command,94 <a class=" indexterm" name="id393307"></a>lpq command,95 <a class=" indexterm" name="id393314"></a>lprm command,96 <a class=" indexterm" name="id393321"></a>queuepause commandand97 <a class=" indexterm" name="id393328"></a>queue resume command).98 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 393337"></a>Simple <code class="filename">smb.conf</code> Settings for CUPS</h3></div></div></div><p>99 To summarize, <a href="CUPS-printing.html#cups-exam-simple" title="Example 22.1. Simplest Printing-Related smb.conf">the Simplest Printing-Related91 <a class="link" href="smb.conf.5.html#PRINTCOMMAND">print command</a>; other commands are 92 <a class="link" href="smb.conf.5.html#LPPAUSECOMMAND">lppause command</a>, 93 <a class="link" href="smb.conf.5.html#LPRESUMECOMMAND">lpresume command</a>, 94 <a class="link" href="smb.conf.5.html#LPQCOMMAND">lpq command</a>, 95 <a class="link" href="smb.conf.5.html#LPRMCOMMAND">lprm command</a>, 96 <a class="link" href="smb.conf.5.html#QUEUEPAUSECOMMAND">queuepause command</a> and 97 <a class="link" href="smb.conf.5.html#QUEUERESUMECOMMAND">queue resume command</a>). 98 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id416919"></a>Simple <code class="filename">smb.conf</code> Settings for CUPS</h3></div></div></div><p> 99 To summarize, <a class="link" href="CUPS-printing.html#cups-exam-simple" title="Example 22.1. Simplest Printing-Related smb.conf">the Simplest Printing-Related 100 100 <code class="filename">smb.conf</code> file</a> shows the simplest printing-related setup for <code class="filename">smb.conf</code> to 101 101 enable basic CUPS support: 102 </p><div class="example"><a name="cups-exam-simple"></a><p class="title"><b>Example 22.1. Simplest Printing-Related smb.conf</b></p><div class="example-contents"><table class="simplelist" border="0" summary="Simple list"><tr><td> </td></tr><tr><td><em class="parameter"><code>[global]</code></em></td></tr><tr><td><a class="indexterm" name="id 393397"></a><em class="parameter"><code>load printers = yes</code></em></td></tr><tr><td><a class="indexterm" name="id393410"></a><em class="parameter"><code>printing = cups</code></em></td></tr><tr><td><a class="indexterm" name="id393422"></a><em class="parameter"><code>printcap name = cups</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[printers]</code></em></td></tr><tr><td><a class="indexterm" name="id393444"></a><em class="parameter"><code>comment = All Printers</code></em></td></tr><tr><td><a class="indexterm" name="id393456"></a><em class="parameter"><code>path = /var/spool/samba</code></em></td></tr><tr><td><a class="indexterm" name="id393469"></a><em class="parameter"><code>browseable = no</code></em></td></tr><tr><td><a class="indexterm" name="id393481"></a><em class="parameter"><code>public = yes</code></em></td></tr><tr><td><a class="indexterm" name="id393494"></a><em class="parameter"><code>guest ok = yes</code></em></td></tr><tr><td><a class="indexterm" name="id393506"></a><em class="parameter"><code>writable = no</code></em></td></tr><tr><td><a class="indexterm" name="id393519"></a><em class="parameter"><code>printable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id393531"></a><em class="parameter"><code>printer admin = root, @ntadmins</code></em></td></tr></table></div></div><br class="example-break"><p>103 <a class="indexterm" name="id 393547"></a>104 <a class="indexterm" name="id 393554"></a>105 <a class="indexterm" name="id 393561"></a>102 </p><div class="example"><a name="cups-exam-simple"></a><p class="title"><b>Example 22.1. Simplest Printing-Related smb.conf</b></p><div class="example-contents"><table class="simplelist" border="0" summary="Simple list"><tr><td> </td></tr><tr><td><em class="parameter"><code>[global]</code></em></td></tr><tr><td><a class="indexterm" name="id416979"></a><em class="parameter"><code>load printers = yes</code></em></td></tr><tr><td><a class="indexterm" name="id416990"></a><em class="parameter"><code>printing = cups</code></em></td></tr><tr><td><a class="indexterm" name="id417002"></a><em class="parameter"><code>printcap name = cups</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[printers]</code></em></td></tr><tr><td><a class="indexterm" name="id417022"></a><em class="parameter"><code>comment = All Printers</code></em></td></tr><tr><td><a class="indexterm" name="id417034"></a><em class="parameter"><code>path = /var/spool/samba</code></em></td></tr><tr><td><a class="indexterm" name="id417045"></a><em class="parameter"><code>browseable = no</code></em></td></tr><tr><td><a class="indexterm" name="id417057"></a><em class="parameter"><code>public = yes</code></em></td></tr><tr><td><a class="indexterm" name="id417068"></a><em class="parameter"><code>guest ok = yes</code></em></td></tr><tr><td><a class="indexterm" name="id417080"></a><em class="parameter"><code>writable = no</code></em></td></tr><tr><td><a class="indexterm" name="id417091"></a><em class="parameter"><code>printable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id417102"></a><em class="parameter"><code>printer admin = root, @ntadmins</code></em></td></tr></table></div></div><br class="example-break"><p> 103 <a class="indexterm" name="id417117"></a> 104 <a class="indexterm" name="id417124"></a> 105 <a class="indexterm" name="id417131"></a> 106 106 This is all you need for basic printing setup for CUPS. It will print all graphic, text, PDF, and PostScript 107 107 files submitted from Windows clients. However, most of your Windows users would not know how to send these … … 113 113 PostScript device, the print data stream is “<span class="quote">binary,</span>” sensible only for the target printer. Read 114 114 on to learn what problem this may cause and how to avoid it. 115 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 393584"></a>More Complex CUPS <code class="filename">smb.conf</code> Settings</h3></div></div></div><p>116 <a href="CUPS-printing.html#overridesettings" title="Example 22.2. Overriding Global CUPS Settings for One Printer">The Overriding Global CUPS Settings for One Printer example</a>115 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id417155"></a>More Complex CUPS <code class="filename">smb.conf</code> Settings</h3></div></div></div><p> 116 <a class="link" href="CUPS-printing.html#overridesettings" title="Example 22.2. Overriding Global CUPS Settings for One Printer">The Overriding Global CUPS Settings for One Printer example</a> 117 117 is a slightly more complex printing-related setup for <code class="filename">smb.conf</code>. It enables general CUPS printing 118 118 support for all printers, but defines one printer share, which is set up differently. 119 </p><div class="example"><a name="overridesettings"></a><p class="title"><b>Example 22.2. Overriding Global CUPS Settings for One Printer</b></p><div class="example-contents"><table class="simplelist" border="0" summary="Simple list"><tr><td> </td></tr><tr><td><em class="parameter"><code>[global]</code></em></td></tr><tr><td><a class="indexterm" name="id 393638"></a><em class="parameter"><code>printing = cups</code></em></td></tr><tr><td><a class="indexterm" name="id393651"></a><em class="parameter"><code>printcap name = cups</code></em></td></tr><tr><td><a class="indexterm" name="id393663"></a><em class="parameter"><code>load printers = yes</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[printers]</code></em></td></tr><tr><td><a class="indexterm" name="id393685"></a><em class="parameter"><code>comment = All Printers</code></em></td></tr><tr><td><a class="indexterm" name="id393697"></a><em class="parameter"><code>path = /var/spool/samba</code></em></td></tr><tr><td><a class="indexterm" name="id393710"></a><em class="parameter"><code>public = yes</code></em></td></tr><tr><td><a class="indexterm" name="id393722"></a><em class="parameter"><code>guest ok = yes</code></em></td></tr><tr><td><a class="indexterm" name="id393735"></a><em class="parameter"><code>writable = no</code></em></td></tr><tr><td><a class="indexterm" name="id393747"></a><em class="parameter"><code>printable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id393760"></a><em class="parameter"><code>printer admin = root, @ntadmins</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[special_printer]</code></em></td></tr><tr><td><a class="indexterm" name="id393781"></a><em class="parameter"><code>comment = A special printer with his own settings</code></em></td></tr><tr><td><a class="indexterm" name="id393794"></a><em class="parameter"><code>path = /var/spool/samba-special</code></em></td></tr><tr><td><a class="indexterm" name="id393807"></a><em class="parameter"><code>printing = sysv</code></em></td></tr><tr><td><a class="indexterm" name="id393819"></a><em class="parameter"><code>printcap = lpstat</code></em></td></tr><tr><td><a class="indexterm" name="id393832"></a><em class="parameter"><code>print command = echo "NEW: `date`: printfile %f" >> /tmp/smbprn.log ; echo " `date`: p-%p s-%s f-%f" >> /tmp/smbprn.log ; echo " `date`: j-%j J-%J z-%z c-%c" >> /tmp/smbprn.log ; rm %f </code></em></td></tr><tr><td><a class="indexterm" name="id393847"></a><em class="parameter"><code>public = no</code></em></td></tr><tr><td><a class="indexterm" name="id393859"></a><em class="parameter"><code>guest ok = no</code></em></td></tr><tr><td><a class="indexterm" name="id393872"></a><em class="parameter"><code>writable = no</code></em></td></tr><tr><td><a class="indexterm" name="id393884"></a><em class="parameter"><code>printable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id393897"></a><em class="parameter"><code>printer admin = kurt</code></em></td></tr><tr><td><a class="indexterm" name="id393910"></a><em class="parameter"><code>hosts deny = 0.0.0.0</code></em></td></tr><tr><td><a class="indexterm" name="id393922"></a><em class="parameter"><code>hosts allow = turbo_xp, 10.160.50.23, 10.160.51.60</code></em></td></tr></table></div></div><br class="example-break"><p>119 </p><div class="example"><a name="overridesettings"></a><p class="title"><b>Example 22.2. Overriding Global CUPS Settings for One Printer</b></p><div class="example-contents"><table class="simplelist" border="0" summary="Simple list"><tr><td> </td></tr><tr><td><em class="parameter"><code>[global]</code></em></td></tr><tr><td><a class="indexterm" name="id417208"></a><em class="parameter"><code>printing = cups</code></em></td></tr><tr><td><a class="indexterm" name="id417220"></a><em class="parameter"><code>printcap name = cups</code></em></td></tr><tr><td><a class="indexterm" name="id417231"></a><em class="parameter"><code>load printers = yes</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[printers]</code></em></td></tr><tr><td><a class="indexterm" name="id417252"></a><em class="parameter"><code>comment = All Printers</code></em></td></tr><tr><td><a class="indexterm" name="id417263"></a><em class="parameter"><code>path = /var/spool/samba</code></em></td></tr><tr><td><a class="indexterm" name="id417274"></a><em class="parameter"><code>public = yes</code></em></td></tr><tr><td><a class="indexterm" name="id417286"></a><em class="parameter"><code>guest ok = yes</code></em></td></tr><tr><td><a class="indexterm" name="id417297"></a><em class="parameter"><code>writable = no</code></em></td></tr><tr><td><a class="indexterm" name="id417309"></a><em class="parameter"><code>printable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id417320"></a><em class="parameter"><code>printer admin = root, @ntadmins</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[special_printer]</code></em></td></tr><tr><td><a class="indexterm" name="id417341"></a><em class="parameter"><code>comment = A special printer with his own settings</code></em></td></tr><tr><td><a class="indexterm" name="id417353"></a><em class="parameter"><code>path = /var/spool/samba-special</code></em></td></tr><tr><td><a class="indexterm" name="id417364"></a><em class="parameter"><code>printing = sysv</code></em></td></tr><tr><td><a class="indexterm" name="id417376"></a><em class="parameter"><code>printcap = lpstat</code></em></td></tr><tr><td><a class="indexterm" name="id417387"></a><em class="parameter"><code>print command = echo "NEW: `date`: printfile %f" >> /tmp/smbprn.log ; echo " `date`: p-%p s-%s f-%f" >> /tmp/smbprn.log ; echo " `date`: j-%j J-%J z-%z c-%c" >> /tmp/smbprn.log ; rm %f </code></em></td></tr><tr><td><a class="indexterm" name="id417401"></a><em class="parameter"><code>public = no</code></em></td></tr><tr><td><a class="indexterm" name="id417412"></a><em class="parameter"><code>guest ok = no</code></em></td></tr><tr><td><a class="indexterm" name="id417424"></a><em class="parameter"><code>writable = no</code></em></td></tr><tr><td><a class="indexterm" name="id417435"></a><em class="parameter"><code>printable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id417447"></a><em class="parameter"><code>printer admin = kurt</code></em></td></tr><tr><td><a class="indexterm" name="id417458"></a><em class="parameter"><code>hosts deny = 0.0.0.0</code></em></td></tr><tr><td><a class="indexterm" name="id417470"></a><em class="parameter"><code>hosts allow = turbo_xp, 10.160.50.23, 10.160.51.60</code></em></td></tr></table></div></div><br class="example-break"><p> 120 120 This special share is only for testing purposes. It does not write the print job to a file. It just logs the job parameters 121 121 known to Samba into the <code class="filename">/tmp/smbprn.log</code> file and deletes the job-file. Moreover, the 122 <a class=" indexterm" name="id393946"></a>printer adminof this share is “<span class="quote">kurt</span>” (not the “<span class="quote">@ntadmins</span>” group),122 <a class="link" href="smb.conf.5.html#PRINTERADMIN">printer admin</a> of this share is “<span class="quote">kurt</span>” (not the “<span class="quote">@ntadmins</span>” group), 123 123 guest access is not allowed, the share isn't published to the Network Neighborhood (so you need to know it is there), and it 124 124 allows access from only three hosts. To prevent CUPS from kicking in and taking over the print jobs for that share, we need to set 125 <a class=" indexterm" name="id393962"></a>printing = sysv and <a class="indexterm" name="id393970"></a>printcap = lpstat.126 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id 393980"></a>Advanced Configuration</h2></div></div></div><p>125 <a class="link" href="smb.conf.5.html#PRINTING">printing = sysv</a> and <a class="link" href="smb.conf.5.html#PRINTCAP">printcap = lpstat</a>. 126 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id417537"></a>Advanced Configuration</h2></div></div></div><p> 127 127 Before we delve into all the configuration options, let us clarify a few points. <span class="emphasis"><em>Network printing 128 128 needs to be organized and set up correctly</em></span>. This frequently doesn't happen. Legacy systems or small 129 129 business LAN environments often lack design and good housekeeping. 130 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 393994"></a>Central Spooling vs. “<span class="quote">Peer-to-Peer</span>” Printing</h3></div></div></div><p>131 <a class="indexterm" name="id 394006"></a>132 <a class="indexterm" name="id 394013"></a>133 <a class="indexterm" name="id 394022"></a>130 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id417551"></a>Central Spooling vs. “<span class="quote">Peer-to-Peer</span>” Printing</h3></div></div></div><p> 131 <a class="indexterm" name="id417563"></a> 132 <a class="indexterm" name="id417569"></a> 133 <a class="indexterm" name="id417579"></a> 134 134 Many small office or home networks, as well as badly organized larger environments, allow each client a direct 135 135 access to available network printers. This is generally a bad idea. It often blocks one client's access to the … … 139 139 central system, which responds immediately, takes jobs from multiple concurrent clients, and transfers them to 140 140 the printer(s) in the correct order. 141 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 394045"></a>Raw Print Serving: Vendor Drivers on Windows Clients</h3></div></div></div><p>142 <a class="indexterm" name="id 394053"></a>143 <a class="indexterm" name="id 394060"></a>141 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id417596"></a>Raw Print Serving: Vendor Drivers on Windows Clients</h3></div></div></div><p> 142 <a class="indexterm" name="id417604"></a> 143 <a class="indexterm" name="id417611"></a> 144 144 Most traditionally configured UNIX print servers acting on behalf of 145 145 Samba's Windows clients represented a really simple setup. Their only … … 150 150 be installed on each and every client for the target device. 151 151 </p><p> 152 <a class="indexterm" name="id 394077"></a>153 <a class="indexterm" name="id 394084"></a>152 <a class="indexterm" name="id417628"></a> 153 <a class="indexterm" name="id417635"></a> 154 154 It is possible to configure CUPS, Samba, and your Windows clients in the 155 155 same traditional and simple way. When CUPS printers are configured … … 165 165 attached to the Windows client. You then redirect output to a raw network 166 166 print queue. This procedure may be followed to achieve this: 167 </p><div class="procedure"><a name="id 394102"></a><p class="title"><b>Procedure 22.1. Configuration Steps for Raw CUPS Printing Support</b></p><ol type="1"><li><p>168 <a class="indexterm" name="id 394113"></a>167 </p><div class="procedure"><a name="id417653"></a><p class="title"><b>Procedure 22.1. Configuration Steps for Raw CUPS Printing Support</b></p><ol type="1"><li><p> 168 <a class="indexterm" name="id417664"></a> 169 169 Edit <code class="filename">/etc/cups/mime.types</code> to uncomment the line 170 170 near the end of the file that has: … … 173 173 </pre><p> 174 174 </p></li><li><p> 175 <a class="indexterm" name="id 394139"></a>175 <a class="indexterm" name="id417690"></a> 176 176 Do the same for the file <code class="filename">/etc/cups/mime.convs</code>. 177 177 </p></li><li><p> … … 182 182 </p></li><li><p> 183 183 In the <code class="filename">smb.conf</code> file <code class="constant">[printers]</code> section add 184 <a class=" indexterm" name="id394185"></a>use client driver = Yes,184 <a class="link" href="smb.conf.5.html#USECLIENTDRIVER">use client driver = Yes</a>, 185 185 and in the <code class="constant">[global]</code> section add 186 <a class=" indexterm" name="id394196"></a>printing = CUPS, plus187 <a class=" indexterm" name="id394203"></a>printcap = CUPS.186 <a class="link" href="smb.conf.5.html#PRINTING">printing = CUPS</a>, plus 187 <a class="link" href="smb.conf.5.html#PRINTCAP">printcap = CUPS</a>. 188 188 </p></li><li><p> 189 189 Install the printer as if it is a local printer, that is, Printing to <code class="constant">LPT1:</code>. … … 194 194 Here, the name <code class="constant">raw_q</code> is the name you gave the print 195 195 queue in the CUPS environment. 196 </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 394249"></a>Installation of Windows Client Drivers</h3></div></div></div><p>196 </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id417810"></a>Installation of Windows Client Drivers</h3></div></div></div><p> 197 197 The printer drivers on the Windows clients may be installed 198 198 in two functionally different ways: … … 201 201 printing and uses a <code class="filename">\\sambaserver\printershare</code> 202 202 type of connection.</p></li><li><p> 203 <a class="indexterm" name="id 394276"></a>203 <a class="indexterm" name="id417837"></a> 204 204 Deposit and prepare the drivers (for later download) on 205 205 the print server (Samba); this enables the clients to use … … 210 210 The second method is recommended for use over the first. 211 211 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="cups-raw"></a>Explicitly Enable “<span class="quote">raw</span>” Printing for <span class="emphasis"><em>application/octet-stream</em></span></h3></div></div></div><p> 212 <a class="indexterm" name="id 394316"></a>213 <a class="indexterm" name="id 394323"></a>214 <a class="indexterm" name="id 394330"></a>212 <a class="indexterm" name="id417877"></a> 213 <a class="indexterm" name="id417884"></a> 214 <a class="indexterm" name="id417891"></a> 215 215 If you use the first option (drivers are installed on the client 216 216 side), there is one setting to take care of: CUPS needs to be told … … 224 224 application/octet-stream 225 225 </pre><p> 226 <a class="indexterm" name="id 394380"></a>227 <a class="indexterm" name="id 394387"></a>226 <a class="indexterm" name="id417941"></a> 227 <a class="indexterm" name="id417948"></a> 228 228 In <code class="filename">/etc/cups/mime.convs</code>, have this line: 229 <a class="indexterm" name="id 394400"></a>229 <a class="indexterm" name="id417961"></a> 230 230 </p><pre class="programlisting"> 231 231 application/octet-stream application/vnd.cups-raw 0 - … … 238 238 not <span class="emphasis"><em>enforce</em></span> “<span class="quote">raw</span>” printing, it only <span class="emphasis"><em>allows</em></span> it. 239 239 </p></div><p><b>Background. </b> 240 <a class="indexterm" name="id 394461"></a>241 <a class="indexterm" name="id 394468"></a>240 <a class="indexterm" name="id418022"></a> 241 <a class="indexterm" name="id418029"></a> 242 242 That CUPS is a more security-aware printing system than traditional ones does not by default allow a user to 243 243 send deliberate (possibly binary) data to printing devices. This could be easily abused to launch a … … 253 253 more advanced CUPS/Samba printing, simply skip the remaining sections 254 254 of this chapter. 255 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 394512"></a>Driver Upload Methods</h3></div></div></div><p>255 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id418073"></a>Driver Upload Methods</h3></div></div></div><p> 256 256 This section describes three familiar methods, plus one new one, by which 257 257 printer drivers may be uploaded. 258 258 </p><p> 259 <a class="indexterm" name="id 394524"></a>259 <a class="indexterm" name="id418085"></a> 260 260 If you want to use the MS-RPC-type printing, you must upload the 261 261 drivers onto the Samba server first (<em class="parameter"><code>[print$]</code></em> 262 262 share). For a discussion on how to deposit printer drivers on the 263 263 Samba host (so the Windows clients can download and use them via 264 “<span class="quote">Point'n'Print</span>”), please refer to the <a href="classicalprinting.html" title="Chapter 21. Classical Printing Support">Classical Printing264 “<span class="quote">Point'n'Print</span>”), please refer to the <a class="link" href="classicalprinting.html" title="Chapter 21. Classical Printing Support">Classical Printing 265 265 chapter</a> of this book. There you will find a description or reference to 266 266 three methods of preparing the client drivers on the Samba server: 267 267 </p><div class="itemizedlist"><ul type="disc"><li><p> 268 <a class="indexterm" name="id 394557"></a>268 <a class="indexterm" name="id418118"></a> 269 269 The GUI, “<span class="quote">Add Printer Wizard</span>” <span class="emphasis"><em>upload-from-a-Windows-client</em></span> method. 270 270 </p></li><li><p> 271 271 The command line, “<span class="quote">smbclient/rpcclient</span>” upload-from-a-UNIX-workstation method. 272 272 </p></li><li><p> 273 <a class="indexterm" name="id 394584"></a>273 <a class="indexterm" name="id418145"></a> 274 274 The Imprints tool set method. 275 275 </p></li></ul></div><p> 276 <a class="indexterm" name="id 394595"></a>276 <a class="indexterm" name="id418156"></a> 277 277 These three methods apply to CUPS all the same. The <code class="literal">cupsaddsmb</code> utility is a new and more 278 278 convenient way to load the Windows drivers into Samba and is provided if you use CUPS. … … 280 280 <code class="literal">cupsaddsmb</code> is discussed in much detail later in this chapter. But we first 281 281 explore the CUPS filtering system and compare the Windows and UNIX printing architectures. 282 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id 394623"></a>Advanced Intelligent Printing with PostScript Driver Download</h2></div></div></div><p>283 <a class="indexterm" name="id 394631"></a>282 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id418184"></a>Advanced Intelligent Printing with PostScript Driver Download</h2></div></div></div><p> 283 <a class="indexterm" name="id418192"></a> 284 284 We now know how to set up a “<span class="quote">dump</span>” print server, that is, a server that spools 285 285 print jobs “<span class="quote">raw</span>”, leaving the print data untouched. 286 286 </p><p> 287 287 You might need to set up CUPS in a smarter way. The reasons could be manifold: 288 </p><a class="indexterm" name="id 394654"></a><a class="indexterm" name="id394660"></a><a class="indexterm" name="id394667"></a><div class="itemizedlist"><ul type="disc"><li><p>Maybe your boss wants to get monthly statistics: Which288 </p><a class="indexterm" name="id418215"></a><a class="indexterm" name="id418221"></a><a class="indexterm" name="id418228"></a><div class="itemizedlist"><ul type="disc"><li><p>Maybe your boss wants to get monthly statistics: Which 289 289 printer did how many pages? What was the average data size of a job? 290 290 What was the average print run per day? What are the typical hourly … … 302 302 CUPS filtering system, how it works, and how you can tweak it. 303 303 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gdipost"></a>GDI on Windows, PostScript on UNIX</h3></div></div></div><p> 304 <a class="indexterm" name="id 394728"></a>305 <a class="indexterm" name="id 394735"></a>304 <a class="indexterm" name="id418289"></a> 305 <a class="indexterm" name="id418296"></a> 306 306 Network printing is one of the most complicated and error-prone 307 307 day-to-day tasks any user or administrator may encounter. This is 308 308 true for all OS platforms, and there are reasons it is so. 309 309 </p><p> 310 <a class="indexterm" name="id 394746"></a>311 <a class="indexterm" name="id 394753"></a>312 <a class="indexterm" name="id 394759"></a>313 <a class="indexterm" name="id 394766"></a>314 <a class="indexterm" name="id 394773"></a>310 <a class="indexterm" name="id418307"></a> 311 <a class="indexterm" name="id418314"></a> 312 <a class="indexterm" name="id418320"></a> 313 <a class="indexterm" name="id418327"></a> 314 <a class="indexterm" name="id418334"></a> 315 315 You can't expect to throw just any file format at a printer and have it get printed. A file format conversion 316 316 must take place. The problem is that there is no common standard for print file formats across all … … 319 319 used page description languages (PDLs), there are still many manufacturers who “<span class="quote">roll their own</span>” 320 320 (their reasons may be unacceptable license fees for using printer-embedded PostScript interpreters, and so on). 321 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 394797"></a>Windows Drivers, GDI, and EMF</h3></div></div></div><p>322 <a class="indexterm" name="id 394804"></a>323 <a class="indexterm" name="id 394811"></a>324 <a class="indexterm" name="id 394818"></a>325 <a class="indexterm" name="id 394824"></a>321 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id418358"></a>Windows Drivers, GDI, and EMF</h3></div></div></div><p> 322 <a class="indexterm" name="id418365"></a> 323 <a class="indexterm" name="id418372"></a> 324 <a class="indexterm" name="id418378"></a> 325 <a class="indexterm" name="id418385"></a> 326 326 In Windows OS, the format conversion job is done by the printer drivers. On MS Windows OS platforms all 327 327 application programmers have at their disposal a built-in API, the graphical device interface (GDI), as part … … 334 334 driver and converted to the printer-specific file format. 335 335 </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 336 <a class="indexterm" name="id 394852"></a>337 <a class="indexterm" name="id 394859"></a>338 <a class="indexterm" name="id 394866"></a>336 <a class="indexterm" name="id418413"></a> 337 <a class="indexterm" name="id418420"></a> 338 <a class="indexterm" name="id418426"></a> 339 339 To the GDI foundation in MS Windows, Apple has chosen to put paper and screen output on a common foundation 340 for its (BSD-UNIX-based, did you know?) Mac OS X and Darwin operating <a class="indexterm" name="id 394874"></a> <a class="indexterm" name="id394881"></a>341 <a class="indexterm" name="id 394888"></a> <a class="indexterm" name="id394894"></a> systems.340 for its (BSD-UNIX-based, did you know?) Mac OS X and Darwin operating <a class="indexterm" name="id418435"></a> <a class="indexterm" name="id418442"></a> 341 <a class="indexterm" name="id418448"></a> <a class="indexterm" name="id418455"></a> systems. 342 342 Apple's <span class="emphasis"><em>core graphic engine</em></span> uses a <span class="emphasis"><em>PDF</em></span> derivative for all display work. 343 343 </p></div><p> 344 The example in <a href="CUPS-printing.html#1small" title="Figure 22.1. Windows Printing to a Local Printer.">Windows Printing to a Local Printer</a> illustrates local Windows344 The example in <a class="link" href="CUPS-printing.html#1small" title="Figure 22.1. Windows Printing to a Local Printer.">Windows Printing to a Local Printer</a> illustrates local Windows 345 345 printing. 346 </p><div class="figure"><a name="1small"></a><p class="title"><b>Figure 22.1. Windows Printing to a Local Printer.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/1small.png" alt="Windows Printing to a Local Printer."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 394963"></a>UNIX Printfile Conversion and GUI Basics</h3></div></div></div><p>347 <a class="indexterm" name="id 394971"></a>348 <a class="indexterm" name="id 394978"></a>349 <a class="indexterm" name="id 394984"></a>350 <a class="indexterm" name="id 394991"></a>346 </p><div class="figure"><a name="1small"></a><p class="title"><b>Figure 22.1. Windows Printing to a Local Printer.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/1small.png" alt="Windows Printing to a Local Printer."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id418524"></a>UNIX Printfile Conversion and GUI Basics</h3></div></div></div><p> 347 <a class="indexterm" name="id418532"></a> 348 <a class="indexterm" name="id418538"></a> 349 <a class="indexterm" name="id418545"></a> 350 <a class="indexterm" name="id418552"></a> 351 351 In UNIX and Linux, there is no comparable layer built into the OS kernel(s) or the X (screen display) server. 352 352 Every application is responsible for itself to create its print output. Fortunately, most use PostScript and … … 362 362 your system; there are separate ones for fonts used for X display and fonts to be used on paper. 363 363 </p><p><b>Background. </b> 364 <a class="indexterm" name="id 395031"></a>365 <a class="indexterm" name="id 395038"></a>366 <a class="indexterm" name="id 395045"></a>367 <a class="indexterm" name="id 395051"></a>368 <a class="indexterm" name="id 395058"></a>369 <a class="indexterm" name="id 395065"></a>370 <a class="indexterm" name="id 395072"></a>371 <a class="indexterm" name="id 395079"></a>372 <a class="indexterm" name="id 395085"></a>373 <a class="indexterm" name="id 395092"></a>364 <a class="indexterm" name="id418592"></a> 365 <a class="indexterm" name="id418599"></a> 366 <a class="indexterm" name="id418606"></a> 367 <a class="indexterm" name="id418612"></a> 368 <a class="indexterm" name="id418619"></a> 369 <a class="indexterm" name="id418626"></a> 370 <a class="indexterm" name="id418633"></a> 371 <a class="indexterm" name="id418640"></a> 372 <a class="indexterm" name="id418646"></a> 373 <a class="indexterm" name="id418653"></a> 374 374 The PostScript programming language is an “<span class="quote">invention</span>” by Adobe, but its specifications have been 375 375 published extensively. Its strength lies in its powerful abilities to describe graphical objects (fonts, … … 383 383 program or on paper by a printer. 384 384 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="post-and-ghost"></a>PostScript and Ghostscript</h3></div></div></div><p> 385 <a class="indexterm" name="id 395133"></a>386 <a class="indexterm" name="id 395139"></a>387 <a class="indexterm" name="id 395148"></a>388 <a class="indexterm" name="id 395158"></a>389 <a class="indexterm" name="id 395164"></a>385 <a class="indexterm" name="id418694"></a> 386 <a class="indexterm" name="id418700"></a> 387 <a class="indexterm" name="id418709"></a> 388 <a class="indexterm" name="id418718"></a> 389 <a class="indexterm" name="id418725"></a> 390 390 So UNIX is lacking a common ground for printing on paper and displaying on screen. Despite this unfavorable 391 391 legacy for UNIX, basic printing is fairly easy if you have PostScript printers at your disposal. The reason is … … 396 396 different than PostScript printing a file from a Windows origin. 397 397 </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 398 <a class="indexterm" name="id 395187"></a>399 <a class="indexterm" name="id 395194"></a>400 <a class="indexterm" name="id 395200"></a>398 <a class="indexterm" name="id418748"></a> 399 <a class="indexterm" name="id418755"></a> 400 <a class="indexterm" name="id418761"></a> 401 401 Traditional UNIX programs and printing systems while using PostScript are largely not 402 402 PPD-aware. PPDs are “<span class="quote">PostScript Printer Description</span>” files. They enable you to specify and 403 403 control all options a printer supports: duplexing, stapling, and punching. Therefore, UNIX users for a long 404 404 time couldn't choose many of the supported device and job options, unlike Windows or Apple users. But now 405 there is CUPS. as illustrated in <a href="CUPS-printing.html#2small" title="Figure 22.2. Printing to a PostScript Printer.">Printing to a PostScript Printer</a>.405 there is CUPS. as illustrated in <a class="link" href="CUPS-printing.html#2small" title="Figure 22.2. Printing to a PostScript Printer.">Printing to a PostScript Printer</a>. 406 406 </p></div><div class="figure"><a name="2small"></a><p class="title"><b>Figure 22.2. Printing to a PostScript Printer.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/2small.png" alt="Printing to a PostScript Printer."></div></div></div><br class="figure-break"><p> 407 <a class="indexterm" name="id 395274"></a>407 <a class="indexterm" name="id418835"></a> 408 408 However, there are other types of printers out there. These do not know how to print PostScript. They use 409 409 their own PDL, often proprietary. To print to them is much more demanding. Since your UNIX applications mostly 410 410 produce PostScript, and since these devices do not understand PostScript, you need to convert the print files 411 411 to a format suitable for your printer on the host before you can send it away. 412 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 395287"></a>Ghostscript: The Software RIP for Non-PostScript Printers</h3></div></div></div><p>413 <a class="indexterm" name="id 395295"></a>412 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id418848"></a>Ghostscript: The Software RIP for Non-PostScript Printers</h3></div></div></div><p> 413 <a class="indexterm" name="id418856"></a> 414 414 Here is where Ghostscript kicks in. Ghostscript is the traditional (and quite powerful) PostScript interpreter 415 415 used on UNIX platforms. It is a RIP in software, capable of doing a <span class="emphasis"><em>lot</em></span> of file format 416 416 conversions for a very broad spectrum of hardware devices as well as software file formats. Ghostscript 417 417 technology and drivers are what enable PostScript printing to non-PostScript hardware. This is shown in 418 <a href="CUPS-printing.html#3small" title="Figure 22.3. Ghostscript as a RIP for Non-PostScript Printers.">Ghostscript as a RIP for Non-PostScript Printers</a>.418 <a class="link" href="CUPS-printing.html#3small" title="Figure 22.3. Ghostscript as a RIP for Non-PostScript Printers.">Ghostscript as a RIP for Non-PostScript Printers</a>. 419 419 </p><div class="figure"><a name="3small"></a><p class="title"><b>Figure 22.3. Ghostscript as a RIP for Non-PostScript Printers.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/3small.png" alt="Ghostscript as a RIP for Non-PostScript Printers."></div></div></div><br class="figure-break"><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p> 420 <a class="indexterm" name="id 395360"></a>421 <a class="indexterm" name="id 395367"></a>422 <a class="indexterm" name="id 395374"></a>420 <a class="indexterm" name="id418922"></a> 421 <a class="indexterm" name="id418928"></a> 422 <a class="indexterm" name="id418935"></a> 423 423 Use the “<span class="quote">gs -h</span>” command to check for all built-in “<span class="quote">devices</span>” on your Ghostscript 424 424 version. If you specify a parameter of <em class="parameter"><code>-sDEVICE=png256</code></em> on your Ghostscript command … … 428 428 initially put under the “<span class="quote">AFPL</span>” license, but re-released under the GNU GPL as soon as the next 429 429 AFPL version appears. GNU Ghostscript is probably the version installed on most Samba systems. But it has some 430 deficiencies. <a class="indexterm" name="id 395406"></a> Therefore, ESP Ghostscript was developed as an enhancement over GNU Ghostscript,430 deficiencies. <a class="indexterm" name="id418968"></a> Therefore, ESP Ghostscript was developed as an enhancement over GNU Ghostscript, 431 431 with lots of bug-fixes, additional devices, and improvements. It is jointly maintained by developers from 432 432 CUPS, Gimp-Print, MandrakeSoft, SuSE, Red Hat, and Debian. It includes the “<span class="quote">cups</span>” device 433 433 (essential to print to non-PS printers from CUPS). 434 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 395426"></a>PostScript Printer Description (PPD) Specification</h3></div></div></div><p>435 <a class="indexterm" name="id 395434"></a>436 <a class="indexterm" name="id 395441"></a>437 <a class="indexterm" name="id 395447"></a>434 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id418988"></a>PostScript Printer Description (PPD) Specification</h3></div></div></div><p> 435 <a class="indexterm" name="id418996"></a> 436 <a class="indexterm" name="id419002"></a> 437 <a class="indexterm" name="id419009"></a> 438 438 While PostScript in essence is a PDL to represent the page layout in a device-independent way, real-world 439 439 print jobs are always ending up being output on hardware with device-specific features. To take care of all … … 457 457 file created by the driver. 458 458 </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p> 459 <a class="indexterm" name="id 395476"></a>460 <a class="indexterm" name="id 395483"></a>459 <a class="indexterm" name="id419038"></a> 460 <a class="indexterm" name="id419044"></a> 461 461 A PostScript file that was created to contain device-specific commands 462 462 for achieving a certain print job output (e.g., duplexed, stapled, and … … 464 464 may not be printable at all on other models; it also may not be fit 465 465 for further processing by software (e.g., by a PDF distilling program). 466 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 395495"></a>Using Windows-Formatted Vendor PPDs</h3></div></div></div><p>467 <a class="indexterm" name="id 395503"></a>468 <a class="indexterm" name="id 395510"></a>469 <a class="indexterm" name="id 395516"></a>466 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id419056"></a>Using Windows-Formatted Vendor PPDs</h3></div></div></div><p> 467 <a class="indexterm" name="id419064"></a> 468 <a class="indexterm" name="id419071"></a> 469 <a class="indexterm" name="id419078"></a> 470 470 CUPS can handle all spec-compliant PPDs as supplied by the manufacturers for their PostScript models. Even if 471 471 a vendor does not mention our favorite OS in his or her manuals and brochures, you can safely trust this: … … 473 473 access the full power of your printer just like a Windows NT user could! 474 474 </p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p> 475 To check the spec compliance of any PPD online, go to <a href="http://www.cups.org/testppd.php" target="_top">http://www.cups.org/testppd.php</a> and upload your PPD. You will475 To check the spec compliance of any PPD online, go to <a class="ulink" href="http://www.cups.org/testppd.php" target="_top">http://www.cups.org/testppd.php</a> and upload your PPD. You will 476 476 see the results displayed immediately. CUPS in all versions after 1.1.19 has a much stricter internal PPD 477 477 parsing and checking code enabled; in case of printing trouble, this online resource should be one of your 478 478 first pit stops. 479 479 </p></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p> 480 <a class="indexterm" name="id 395550"></a>481 <a class="indexterm" name="id 395556"></a>480 <a class="indexterm" name="id419111"></a> 481 <a class="indexterm" name="id419118"></a> 482 482 For real PostScript printers, <span class="emphasis"><em>do not</em></span> use the <span class="emphasis"><em>Foomatic</em></span> or 483 483 <span class="emphasis"><em>cupsomatic</em></span> PPDs from Linuxprinting.org. With these devices, the original vendor-provided 484 484 PPDs are always the first choice. 485 485 </p></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p> 486 <a class="indexterm" name="id 395580"></a>486 <a class="indexterm" name="id419141"></a> 487 487 If you are looking for an original vendor-provided PPD of a specific device, and you know that an NT4 box (or 488 488 any other Windows box) on your LAN has the PostScript driver installed, just use <code class="literal">smbclient 489 489 //NT4-box/print\$ -U username</code> to access the Windows directory where all printer driver files are 490 490 stored. First look in the <code class="filename">W32X86/2</code> subdirectory for the PPD you are seeking. 491 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 395604"></a>CUPS Also Uses PPDs for Non-PostScript Printers</h3></div></div></div><p>492 <a class="indexterm" name="id 395612"></a>493 <a class="indexterm" name="id 395618"></a>494 <a class="indexterm" name="id 395625"></a>491 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id419165"></a>CUPS Also Uses PPDs for Non-PostScript Printers</h3></div></div></div><p> 492 <a class="indexterm" name="id419173"></a> 493 <a class="indexterm" name="id419180"></a> 494 <a class="indexterm" name="id419186"></a> 495 495 CUPS also uses specially crafted PPDs to handle non-PostScript printers. These PPDs are usually not available 496 496 from the vendors (and no, you can't just take the PPD of a PostScript printer with the same model name and 497 497 hope it works for the non-PostScript version too). To understand how these PPDs work for non-PS printers, we 498 498 first need to dive deeply into the CUPS filtering and file format conversion architecture. Stay tuned. 499 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id 395639"></a>The CUPS Filtering Architecture</h2></div></div></div><p>500 <a class="indexterm" name="id 395647"></a>501 <a class="indexterm" name="id 395653"></a>502 <a class="indexterm" name="id 395660"></a>503 <a class="indexterm" name="id 395667"></a>504 <a class="indexterm" name="id 395674"></a>499 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id419200"></a>The CUPS Filtering Architecture</h2></div></div></div><p> 500 <a class="indexterm" name="id419208"></a> 501 <a class="indexterm" name="id419215"></a> 502 <a class="indexterm" name="id419222"></a> 503 <a class="indexterm" name="id419228"></a> 504 <a class="indexterm" name="id419235"></a> 505 505 The core of the CUPS filtering system is based on Ghostscript. In addition to Ghostscript, CUPS uses some 506 506 other filters of its own. You (or your OS vendor) may have plugged in even more filters. CUPS handles all data … … 513 513 If CUPS rasterizes a PostScript file natively to a bitmap, this is done in two stages: 514 514 </p><div class="itemizedlist"><ul type="disc"><li><p> 515 <a class="indexterm" name="id 395702"></a>516 <a class="indexterm" name="id 395709"></a>515 <a class="indexterm" name="id419258"></a> 516 <a class="indexterm" name="id419265"></a> 517 517 The first stage uses a Ghostscript device named “<span class="quote">cups</span>” 518 518 (this is since version 1.1.15) and produces a generic raster format 519 519 called “<span class="quote">CUPS raster</span>”. 520 520 </p></li><li><p> 521 <a class="indexterm" name="id 395729"></a>521 <a class="indexterm" name="id419284"></a> 522 522 The second stage uses a “<span class="quote">raster driver</span>” that converts 523 523 the generic CUPS raster to a device-specific raster. 524 524 </p></li></ul></div><p> 525 <a class="indexterm" name="id 395744"></a>526 <a class="indexterm" name="id 395751"></a>527 <a class="indexterm" name="id 395758"></a>525 <a class="indexterm" name="id419300"></a> 526 <a class="indexterm" name="id419307"></a> 527 <a class="indexterm" name="id419314"></a> 528 528 Make sure your Ghostscript version has the “<span class="quote">cups</span>” device compiled in (check with <code class="literal">gs -h | 529 529 grep cups</code>). Otherwise you may encounter the dreaded <code class="computeroutput">Unable to convert file 530 530 0</code> in your CUPS error_log file. To have “<span class="quote">cups</span>” as a device in your Ghostscript, 531 531 you either need to patch GNU Ghostscript and recompile or use 532 <a class="indexterm" name="id 395786"></a><ahref="http://www.cups.org/ghostscript.php" target="_top">ESP Ghostscript</a>. The superior alternative is ESP532 <a class="indexterm" name="id419342"></a><a class="ulink" href="http://www.cups.org/ghostscript.php" target="_top">ESP Ghostscript</a>. The superior alternative is ESP 533 533 Ghostscript. It supports not just CUPS, but 300 other devices (while GNU Ghostscript supports only about 180). 534 534 Because of this broad output device support, ESP Ghostscript is the first choice for non-CUPS spoolers, too. 535 535 It is now recommended by Linuxprinting.org for all spoolers. 536 536 </p><p> 537 <a class="indexterm" name="id 395806"></a>538 <a class="indexterm" name="id 395812"></a>539 <a class="indexterm" name="id 395819"></a>540 <a class="indexterm" name="id 395826"></a>537 <a class="indexterm" name="id419362"></a> 538 <a class="indexterm" name="id419368"></a> 539 <a class="indexterm" name="id419375"></a> 540 <a class="indexterm" name="id419382"></a> 541 541 CUPS printers may be set up to use external rendering paths. One of the most common is provided by the 542 Foomatic/cupsomatic concept from <a href="http://www.linuxprinting.org/" target="_top">Linuxprinting.org</a>. This542 Foomatic/cupsomatic concept from <a class="ulink" href="http://www.linuxprinting.org/" target="_top">Linuxprinting.org</a>. This 543 543 uses the classical Ghostscript approach, doing everything in one step. It does not use the 544 544 “<span class="quote">cups</span>” device, but one of the many others. However, even for Foomatic/cupsomatic usage, best 545 results and <a class="indexterm" name="id 395845"></a> broadest printer545 results and <a class="indexterm" name="id419401"></a> broadest printer 546 546 model support is provided by ESP Ghostscript (more about Foomatic/cupsomatic, particularly the new version 547 547 called now <span class="emphasis"><em>foomatic-rip</em></span>, follows). 548 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 395860"></a>MIME Types and CUPS Filters</h3></div></div></div><p>549 <a class="indexterm" name="id 395868"></a>550 <a class="indexterm" name="id 395878"></a>551 <a class="indexterm" name="id 395884"></a>552 <a class="indexterm" name="id 395891"></a>553 <a class="indexterm" name="id 395898"></a>548 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id419416"></a>MIME Types and CUPS Filters</h3></div></div></div><p> 549 <a class="indexterm" name="id419424"></a> 550 <a class="indexterm" name="id419433"></a> 551 <a class="indexterm" name="id419440"></a> 552 <a class="indexterm" name="id419447"></a> 553 <a class="indexterm" name="id419454"></a> 554 554 CUPS reads the file <code class="filename">/etc/cups/mime.types</code> (and all other files carrying a 555 555 <code class="filename">*.types</code> suffix in the same directory) upon startup. These files contain the MIME type … … 557 557 man page for <code class="filename">mime.types</code> and in the comments section of the 558 558 <code class="filename">mime.types</code> file itself. A simple rule reads like this: 559 <a class="indexterm" name="id 395931"></a>559 <a class="indexterm" name="id419487"></a> 560 560 </p><pre class="programlisting"> 561 561 application/pdf pdf string(0,%PDF) 562 562 </pre><p> 563 <a class="indexterm" name="id 395944"></a>564 <a class="indexterm" name="id 395951"></a>563 <a class="indexterm" name="id419500"></a> 564 <a class="indexterm" name="id419507"></a> 565 565 This means if a filename has a <code class="filename">.pdf</code> suffix or if the magic string 566 566 <span class="emphasis"><em>%PDF</em></span> is right at the beginning of the file itself (offset 0 from the start), then it is a … … 569 569 application/postscript ai eps ps string(0,%!) string(0,<04>%!) 570 570 </pre><p> 571 <a class="indexterm" name="id 395981"></a>572 <a class="indexterm" name="id 395988"></a>573 <a class="indexterm" name="id 395995"></a>574 <a class="indexterm" name="id 396002"></a>575 <a class="indexterm" name="id 396008"></a>576 <a class="indexterm" name="id 396015"></a>571 <a class="indexterm" name="id419537"></a> 572 <a class="indexterm" name="id419544"></a> 573 <a class="indexterm" name="id419551"></a> 574 <a class="indexterm" name="id419557"></a> 575 <a class="indexterm" name="id419564"></a> 576 <a class="indexterm" name="id419571"></a> 577 577 If the filename has one of the suffixes <code class="filename">.ai</code>, <code class="filename">.eps</code>, 578 578 <code class="filename">.ps</code>, or if the file itself starts with one of the strings <span class="emphasis"><em>%!</em></span> or … … 580 580 (<em class="parameter"><code>application/postscript</code></em>). 581 581 </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p> 582 <a class="indexterm" name="id 396057"></a>582 <a class="indexterm" name="id419613"></a> 583 583 Don't confuse the other mime.types files your system might be using 584 584 with the one in the <code class="filename">/etc/cups/</code> directory. 585 585 </p></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 586 <a class="indexterm" name="id 396075"></a>587 <a class="indexterm" name="id 396082"></a>588 <a class="indexterm" name="id 396089"></a>589 <a class="indexterm" name="id 396095"></a>590 <a class="indexterm" name="id 396102"></a>586 <a class="indexterm" name="id419631"></a> 587 <a class="indexterm" name="id419638"></a> 588 <a class="indexterm" name="id419644"></a> 589 <a class="indexterm" name="id419651"></a> 590 <a class="indexterm" name="id419658"></a> 591 591 There is an important difference between two similar MIME types in CUPS: one is 592 592 <em class="parameter"><code>application/postscript</code></em>, the other is … … 599 599 <em class="parameter"><code>pstops</code></em> filter. pstops uses information contained in the PPD to do the transformation. 600 600 </p></div><p> 601 <a class="indexterm" name="id 396158"></a>602 <a class="indexterm" name="id 396165"></a>603 <a class="indexterm" name="id 396172"></a>604 <a class="indexterm" name="id 396178"></a>605 <a class="indexterm" name="id 396185"></a>606 <a class="indexterm" name="id 396192"></a>607 <a class="indexterm" name="id 396198"></a>608 <a class="indexterm" name="id 396205"></a>609 <a class="indexterm" name="id 396211"></a>610 <a class="indexterm" name="id 396218"></a>611 <a class="indexterm" name="id 396225"></a>612 <a class="indexterm" name="id 396232"></a>613 <a class="indexterm" name="id 396239"></a>614 <a class="indexterm" name="id 396245"></a>615 <a class="indexterm" name="id 396252"></a>616 <a class="indexterm" name="id 396259"></a>601 <a class="indexterm" name="id419714"></a> 602 <a class="indexterm" name="id419721"></a> 603 <a class="indexterm" name="id419728"></a> 604 <a class="indexterm" name="id419734"></a> 605 <a class="indexterm" name="id419741"></a> 606 <a class="indexterm" name="id419747"></a> 607 <a class="indexterm" name="id419754"></a> 608 <a class="indexterm" name="id419760"></a> 609 <a class="indexterm" name="id419767"></a> 610 <a class="indexterm" name="id419774"></a> 611 <a class="indexterm" name="id419781"></a> 612 <a class="indexterm" name="id419788"></a> 613 <a class="indexterm" name="id419794"></a> 614 <a class="indexterm" name="id419801"></a> 615 <a class="indexterm" name="id419808"></a> 616 <a class="indexterm" name="id419815"></a> 617 617 CUPS can handle ASCII text, HP-GL, PDF, PostScript, DVI, and 618 618 many image formats (GIF, PNG, TIFF, JPEG, Photo-CD, SUN-Raster, 619 619 PNM, PBM, SGI-RGB, and more) and their associated MIME types 620 620 with its filters. 621 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 396270"></a>MIME Type Conversion Rules</h3></div></div></div><p>622 <a class="indexterm" name="id 396278"></a>623 <a class="indexterm" name="id 396284"></a>624 <a class="indexterm" name="id 396291"></a>625 <a class="indexterm" name="id 396298"></a>626 <a class="indexterm" name="id 396305"></a>621 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id419826"></a>MIME Type Conversion Rules</h3></div></div></div><p> 622 <a class="indexterm" name="id419834"></a> 623 <a class="indexterm" name="id419840"></a> 624 <a class="indexterm" name="id419847"></a> 625 <a class="indexterm" name="id419854"></a> 626 <a class="indexterm" name="id419861"></a> 627 627 CUPS reads the file <code class="filename">/etc/cups/mime.convs</code> 628 628 (and all other files named with a <code class="filename">*.convs</code> … … 635 635 application/pdf application/postscript 33 pdftops 636 636 </pre><p> 637 <a class="indexterm" name="id 396332"></a>637 <a class="indexterm" name="id419888"></a> 638 638 This means that the <em class="parameter"><code>pdftops</code></em> filter will take 639 639 <em class="parameter"><code>application/pdf</code></em> as input and produce … … 641 641 cost of this operation is 33 CUPS-$. The next filter is more 642 642 expensive, costing 66 CUPS-$: 643 <a class="indexterm" name="id 396358"></a>643 <a class="indexterm" name="id419914"></a> 644 644 </p><pre class="programlisting"> 645 645 application/vnd.hp-HPGL application/postscript 66 hpgltops 646 646 </pre><p> 647 <a class="indexterm" name="id 396371"></a>647 <a class="indexterm" name="id419927"></a> 648 648 This is the <em class="parameter"><code>hpgltops</code></em>, which processes HP-GL 649 649 plotter files to PostScript. 650 <a class="indexterm" name="id 396384"></a>650 <a class="indexterm" name="id419940"></a> 651 651 </p><pre class="programlisting"> 652 652 application/octet-stream 653 653 </pre><p> 654 654 Here are two more examples: 655 <a class="indexterm" name="id 396398"></a>656 <a class="indexterm" name="id 396404"></a>657 <a class="indexterm" name="id 396411"></a>658 <a class="indexterm" name="id 396418"></a>655 <a class="indexterm" name="id419953"></a> 656 <a class="indexterm" name="id419960"></a> 657 <a class="indexterm" name="id419967"></a> 658 <a class="indexterm" name="id419974"></a> 659 659 </p><pre class="programlisting"> 660 660 application/x-shell application/postscript 33 texttops 661 661 text/plain application/postscript 33 texttops 662 662 </pre><p> 663 <a class="indexterm" name="id 396431"></a>663 <a class="indexterm" name="id419987"></a> 664 664 The last two examples name the <em class="parameter"><code>texttops</code></em> filter to work on 665 665 <em class="parameter"><code>text/plain</code></em> as well as on <em class="parameter"><code>application/x-shell</code></em>. (Hint: This 666 666 differentiation is needed for the syntax highlighting feature of <em class="parameter"><code>texttops</code></em>). 667 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 396465"></a>Filtering Overview</h3></div></div></div><p>668 <a class="indexterm" name="id 396473"></a>667 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id420021"></a>Filtering Overview</h3></div></div></div><p> 668 <a class="indexterm" name="id420029"></a> 669 669 There are many more combinations named in <code class="filename">mime.convs</code>. However, you are not limited to use 670 670 the ones predefined there. You can plug in any filter you like to the CUPS framework. It must meet, or must be … … 672 672 sure it complies with what CUPS needs and put in the right lines in <code class="filename">mime.types</code> and 673 673 <code class="filename">mime.convs</code>; then it will work seamlessly inside CUPS. 674 </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id 396505"></a>Filter Requirements</h4></div></div></div><p>674 </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id420058"></a>Filter Requirements</h4></div></div></div><p> 675 675 The “<span class="quote">CUPS requirements</span>” for filters are simple. Take filenames or <code class="filename">stdin</code> as 676 676 input and write to <code class="filename">stdout</code>. They should take these arguments: … … 691 691 fed through <code class="filename">stdin</code>). In most cases, it is easy to 692 692 write a simple wrapper script around existing filters to make them work with CUPS. 693 </p></dd></dl></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 396616"></a>Prefilters</h3></div></div></div><p>694 <a class="indexterm" name="id 396624"></a>695 <a class="indexterm" name="id 396631"></a>696 <a class="indexterm" name="id 396637"></a>693 </p></dd></dl></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id420169"></a>Prefilters</h3></div></div></div><p> 694 <a class="indexterm" name="id420177"></a> 695 <a class="indexterm" name="id420184"></a> 696 <a class="indexterm" name="id420191"></a> 697 697 As previously stated, PostScript is the central file format to any UNIX-based 698 698 printing system. From PostScript, CUPS generates raster data to feed 699 699 non-PostScript printers. 700 700 </p><p> 701 <a class="indexterm" name="id 396649"></a>702 <a class="indexterm" name="id 396656"></a>703 <a class="indexterm" name="id 396663"></a>704 <a class="indexterm" name="id 396669"></a>705 <a class="indexterm" name="id 396676"></a>706 <a class="indexterm" name="id 396682"></a>707 <a class="indexterm" name="id 396689"></a>708 <a class="indexterm" name="id 396696"></a>709 <a class="indexterm" name="id 396703"></a>710 <a class="indexterm" name="id 396710"></a>701 <a class="indexterm" name="id420202"></a> 702 <a class="indexterm" name="id420209"></a> 703 <a class="indexterm" name="id420216"></a> 704 <a class="indexterm" name="id420223"></a> 705 <a class="indexterm" name="id420229"></a> 706 <a class="indexterm" name="id420236"></a> 707 <a class="indexterm" name="id420242"></a> 708 <a class="indexterm" name="id420249"></a> 709 <a class="indexterm" name="id420256"></a> 710 <a class="indexterm" name="id420263"></a> 711 711 But what happens if you send one of the supported non-PS formats to print? Then CUPS runs 712 712 “<span class="quote">prefilters</span>” on these input formats to generate PostScript first. There are prefilters to create … … 716 716 running on all supported image formats, the <em class="parameter"><code>imagetops</code></em> filter. Its outcome is always of 717 717 MIME type <em class="parameter"><code>application/vnd.cups-postscript</code></em> (not application/postscript), meaning it has 718 the print options already embedded into the file. This is shown in <a href="CUPS-printing.html#4small" title="Figure 22.4. Prefiltering in CUPS to Form PostScript.">Prefiltering in718 the print options already embedded into the file. This is shown in <a class="link" href="CUPS-printing.html#4small" title="Figure 22.4. Prefiltering in CUPS to Form PostScript.">Prefiltering in 719 719 CUPS to Form PostScript</a>. 720 </p><div class="figure"><a name="4small"></a><p class="title"><b>Figure 22.4. Prefiltering in CUPS to Form PostScript.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/4small.png" width="135" alt="Prefiltering in CUPS to Form PostScript."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 396793"></a>pstops</h3></div></div></div><p>721 <a class="indexterm" name="id 396801"></a>722 <a class="indexterm" name="id 396808"></a>723 <a class="indexterm" name="id 396814"></a>724 <a class="indexterm" name="id 396821"></a>725 <a class="indexterm" name="id 396828"></a>726 <a class="indexterm" name="id 396835"></a>727 <a class="indexterm" name="id 396842"></a>720 </p><div class="figure"><a name="4small"></a><p class="title"><b>Figure 22.4. Prefiltering in CUPS to Form PostScript.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/4small.png" width="135" alt="Prefiltering in CUPS to Form PostScript."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id420346"></a>pstops</h3></div></div></div><p> 721 <a class="indexterm" name="id420354"></a> 722 <a class="indexterm" name="id420361"></a> 723 <a class="indexterm" name="id420368"></a> 724 <a class="indexterm" name="id420375"></a> 725 <a class="indexterm" name="id420381"></a> 726 <a class="indexterm" name="id420388"></a> 727 <a class="indexterm" name="id420395"></a> 728 728 <span class="emphasis"><em>pstops</em></span> is a filter that is used to convert <em class="parameter"><code>application/postscript</code></em> to 729 729 <em class="parameter"><code>application/vnd.cups-postscript</code></em>. As stated earlier, this filter inserts all 730 730 device-specific print options (commands to the printer to ask for the duplexing of output, or stapling and 731 punching it, and so on) into the PostScript file. An example is illustrated in <a href="CUPS-printing.html#5small" title="Figure 22.5. Adding Device-Specific Print Options.">Adding Device-Specific Print Options</a>.731 punching it, and so on) into the PostScript file. An example is illustrated in <a class="link" href="CUPS-printing.html#5small" title="Figure 22.5. Adding Device-Specific Print Options.">Adding Device-Specific Print Options</a>. 732 732 </p><div class="figure"><a name="5small"></a><p class="title"><b>Figure 22.5. Adding Device-Specific Print Options.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/5small.png" width="135" alt="Adding Device-Specific Print Options."></div></div></div><br class="figure-break"><p> 733 733 This is not all. Other tasks performed by it are: … … 741 741 </p></li><li><p>Counting the pages of the job to insert the accounting 742 742 information into the <code class="filename">/var/log/cups/page_log</code>. 743 </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 396952"></a>pstoraster</h3></div></div></div><p>744 <a class="indexterm" name="id 396960"></a>745 <a class="indexterm" name="id 396967"></a>746 <a class="indexterm" name="id 396973"></a>743 </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id420506"></a>pstoraster</h3></div></div></div><p> 744 <a class="indexterm" name="id420514"></a> 745 <a class="indexterm" name="id420520"></a> 746 <a class="indexterm" name="id420527"></a> 747 747 <em class="parameter"><code>pstoraster</code></em> is at the core of the CUPS filtering system. It is responsible for the first 748 748 stage of the rasterization process. Its input is of MIME type application/vnd.cups-postscript; its output is 749 749 application/vnd.cups-raster. This output format is not yet meant to be printable. Its aim is to serve as a 750 750 general-purpose input format for more specialized <span class="emphasis"><em>raster drivers</em></span> that are able to 751 generate device-specific printer data. This is shown in <a href="CUPS-printing.html#cups-raster" title="Figure 22.6. PostScript to Intermediate Raster Format.">the PostScript to751 generate device-specific printer data. This is shown in <a class="link" href="CUPS-printing.html#cups-raster" title="Figure 22.6. PostScript to Intermediate Raster Format.">the PostScript to 752 752 Intermediate Raster Format diagram</a>. 753 753 </p><div class="figure"><a name="cups-raster"></a><p class="title"><b>Figure 22.6. PostScript to Intermediate Raster Format.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/6small.png" width="135" alt="PostScript to Intermediate Raster Format."></div></div></div><br class="figure-break"><p> 754 <a class="indexterm" name="id 397044"></a>755 <a class="indexterm" name="id 397051"></a>756 <a class="indexterm" name="id 397058"></a>757 <a class="indexterm" name="id 397065"></a>754 <a class="indexterm" name="id420598"></a> 755 <a class="indexterm" name="id420605"></a> 756 <a class="indexterm" name="id420612"></a> 757 <a class="indexterm" name="id420619"></a> 758 758 CUPS raster is a generic raster format with powerful features. It is able to include per-page information, 759 759 color profiles, and more, to be used by the downstream raster drivers. Its MIME type is registered with IANA … … 762 762 CUPS always takes care of the first stage of rasterization so these vendors do not need to care about 763 763 Ghostscript complications (in fact, there are currently more than one vendor financing the development of CUPS 764 raster drivers). This is illustrated in <a href="CUPS-printing.html#cups-raster2" title="Figure 22.7. CUPS-Raster Production Using Ghostscript.">the CUPS-Raster Production Using764 raster drivers). This is illustrated in <a class="link" href="CUPS-printing.html#cups-raster2" title="Figure 22.7. CUPS-Raster Production Using Ghostscript.">the CUPS-Raster Production Using 765 765 Ghostscript illustration</a>. 766 766 </p><div class="figure"><a name="cups-raster2"></a><p class="title"><b>Figure 22.7. CUPS-Raster Production Using Ghostscript.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/7small.png" alt="CUPS-Raster Production Using Ghostscript."></div></div></div><br class="figure-break"><p> 767 <a class="indexterm" name="id 397129"></a>768 <a class="indexterm" name="id 397136"></a>769 <a class="indexterm" name="id 397143"></a>770 <a class="indexterm" name="id 397149"></a>767 <a class="indexterm" name="id420684"></a> 768 <a class="indexterm" name="id420691"></a> 769 <a class="indexterm" name="id420697"></a> 770 <a class="indexterm" name="id420704"></a> 771 771 CUPS versions before version 1.1.15 shipped a binary (or source code) standalone filter, named 772 772 <em class="parameter"><code>pstoraster</code></em>. <em class="parameter"><code>pstoraster</code></em>, which was derived from GNU Ghostscript … … 779 779 If your Ghostscript fails when this command is executed: <code class="literal">gs -h |grep cups</code>, you might not 780 780 be able to print, update your Ghostscript. 781 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 397202"></a>imagetops and imagetoraster</h3></div></div></div><p>782 <a class="indexterm" name="id 397210"></a>783 <a class="indexterm" name="id 397217"></a>781 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id420757"></a>imagetops and imagetoraster</h3></div></div></div><p> 782 <a class="indexterm" name="id420765"></a> 783 <a class="indexterm" name="id420772"></a> 784 784 In the section about prefilters, we mentioned the prefilter 785 785 that generates PostScript from image formats. The <em class="parameter"><code>imagetoraster</code></em> … … 787 787 intermediate PostScript stage. It is used more often than the previously 788 788 mentioned prefilters. We summarize in a flowchart the image file 789 filtering in <a href="CUPS-printing.html#small8" title="Figure 22.8. Image Format to CUPS-Raster Format Conversion.">the Image Format to CUPS-Raster Format Conversion illustration</a>.790 </p><div class="figure"><a name="small8"></a><p class="title"><b>Figure 22.8. Image Format to CUPS-Raster Format Conversion.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/8small.png" alt="Image Format to CUPS-Raster Format Conversion."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 397282"></a>rasterto [printers specific]</h3></div></div></div><p>791 <a class="indexterm" name="id 397290"></a>792 <a class="indexterm" name="id 397297"></a>793 <a class="indexterm" name="id 397304"></a>794 <a class="indexterm" name="id 397310"></a>795 <a class="indexterm" name="id 397317"></a>796 <a class="indexterm" name="id 397324"></a>797 <a class="indexterm" name="id 397331"></a>798 <a class="indexterm" name="id 397338"></a>799 <a class="indexterm" name="id 397344"></a>800 <a class="indexterm" name="id 397351"></a>801 <a class="indexterm" name="id 397358"></a>789 filtering in <a class="link" href="CUPS-printing.html#small8" title="Figure 22.8. Image Format to CUPS-Raster Format Conversion.">the Image Format to CUPS-Raster Format Conversion illustration</a>. 790 </p><div class="figure"><a name="small8"></a><p class="title"><b>Figure 22.8. Image Format to CUPS-Raster Format Conversion.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/8small.png" alt="Image Format to CUPS-Raster Format Conversion."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id420837"></a>rasterto [printers specific]</h3></div></div></div><p> 791 <a class="indexterm" name="id420845"></a> 792 <a class="indexterm" name="id420852"></a> 793 <a class="indexterm" name="id420858"></a> 794 <a class="indexterm" name="id420865"></a> 795 <a class="indexterm" name="id420872"></a> 796 <a class="indexterm" name="id420879"></a> 797 <a class="indexterm" name="id420886"></a> 798 <a class="indexterm" name="id420892"></a> 799 <a class="indexterm" name="id420899"></a> 800 <a class="indexterm" name="id420906"></a> 801 <a class="indexterm" name="id420913"></a> 802 802 CUPS ships with quite a variety of raster drivers for processing CUPS raster. On my system, I find in 803 803 /usr/lib/cups/filter/ the following: <em class="parameter"><code>rastertoalps</code></em>, <em class="parameter"><code>rastertobj</code></em>, … … 808 808 installed by commercial add-ons to CUPS (like <em class="parameter"><code>rastertoturboprint</code></em>), and others (like 809 809 <em class="parameter"><code>rastertoprinter</code></em>) by third-party driver development projects (such as Gimp-Print) 810 wanting to cooperate as closely as possible with CUPS. See <a href="CUPS-printing.html#small9" title="Figure 22.9. Raster to Printer-Specific Formats.">the Raster to810 wanting to cooperate as closely as possible with CUPS. See <a class="link" href="CUPS-printing.html#small9" title="Figure 22.9. Raster to Printer-Specific Formats.">the Raster to 811 811 Printer-Specific Formats illustration</a>. 812 </p><div class="figure"><a name="small9"></a><p class="title"><b>Figure 22.9. Raster to Printer-Specific Formats.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/9small.png" alt="Raster to Printer-Specific Formats."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 397494"></a>CUPS Backends</h3></div></div></div><p>813 <a class="indexterm" name="id 397502"></a>814 <a class="indexterm" name="id 397509"></a>812 </p><div class="figure"><a name="small9"></a><p class="title"><b>Figure 22.9. Raster to Printer-Specific Formats.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/9small.png" alt="Raster to Printer-Specific Formats."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id421049"></a>CUPS Backends</h3></div></div></div><p> 813 <a class="indexterm" name="id421057"></a> 814 <a class="indexterm" name="id421064"></a> 815 815 The last part of any CUPS filtering chain is a backend. Backends 816 816 are special programs that send the print-ready file to the final … … 886 886 printer name.) 887 887 </p><p> 888 <a class="indexterm" name="id 397760"></a>889 <a class="indexterm" name="id 397767"></a>888 <a class="indexterm" name="id421315"></a> 889 <a class="indexterm" name="id421322"></a> 890 890 Not all of the mentioned backends may be present on your system or 891 891 usable (depending on your hardware configuration). One test for all … … 895 895 </p><pre class="screen"> 896 896 <code class="prompt">$ </code><strong class="userinput"><code>lpinfo -v</code></strong> 897 </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 397802"></a>The Role of <em class="parameter"><code>cupsomatic/foomatic</code></em></h3></div></div></div><p>898 <a class="indexterm" name="id 397814"></a>899 <a class="indexterm" name="id 397821"></a>900 <a class="indexterm" name="id 397828"></a>901 <a class="indexterm" name="id 397835"></a>902 <a class="indexterm" name="id 397842"></a>897 </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id421357"></a>The Role of <em class="parameter"><code>cupsomatic/foomatic</code></em></h3></div></div></div><p> 898 <a class="indexterm" name="id421369"></a> 899 <a class="indexterm" name="id421376"></a> 900 <a class="indexterm" name="id421383"></a> 901 <a class="indexterm" name="id421390"></a> 902 <a class="indexterm" name="id421396"></a> 903 903 <em class="parameter"><code>cupsomatic</code></em> filters may be the most widely used on CUPS 904 904 installations. You must be clear that these were not … … 924 924 the print job. 925 925 </p><p> 926 <a class="indexterm" name="id 397899"></a>927 <a class="indexterm" name="id 397906"></a>928 <a class="indexterm" name="id 397912"></a>929 <a class="indexterm" name="id 397919"></a>930 <a class="indexterm" name="id 397926"></a>931 <a class="indexterm" name="id 397933"></a>932 <a class="indexterm" name="id 397940"></a>933 <a class="indexterm" name="id 397946"></a>934 <a class="indexterm" name="id 397953"></a>935 <a class="indexterm" name="id 397960"></a>936 <a class="indexterm" name="id 397967"></a>926 <a class="indexterm" name="id421454"></a> 927 <a class="indexterm" name="id421460"></a> 928 <a class="indexterm" name="id421467"></a> 929 <a class="indexterm" name="id421474"></a> 930 <a class="indexterm" name="id421481"></a> 931 <a class="indexterm" name="id421488"></a> 932 <a class="indexterm" name="id421494"></a> 933 <a class="indexterm" name="id421501"></a> 934 <a class="indexterm" name="id421508"></a> 935 <a class="indexterm" name="id421515"></a> 936 <a class="indexterm" name="id421522"></a> 937 937 However, <em class="parameter"><code>cupsomatic</code></em> is now deprecated. Its PPDs (especially the first 938 938 generation of them, still in heavy use out there) are not meeting the … … 956 956 legacy spoolers too (like LPRng, BSD-LPD, PDQ, PPR, and so on), providing 957 957 for them access to use PPDs for their printing. 958 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 398021"></a>The Complete Picture</h3></div></div></div><p>958 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id421572"></a>The Complete Picture</h3></div></div></div><p> 959 959 If you want to see an overview of all the filters and how they 960 960 relate to each other, the complete picture of the puzzle is at the end 961 961 of this chapter. 962 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 398033"></a><code class="filename">mime.convs</code></h3></div></div></div><p>962 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id421583"></a><code class="filename">mime.convs</code></h3></div></div></div><p> 963 963 CUPS autoconstructs all possible filtering chain paths for any given 964 964 MIME type and every printer installed. But how does it decide in … … 970 970 a total “<span class="quote">filter cost.</span>” CUPS decides for the most “<span class="quote">inexpensive</span>” route. 971 971 </p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p> 972 <a class="indexterm" name="id 398060"></a>973 <a class="indexterm" name="id 398067"></a>972 <a class="indexterm" name="id421610"></a> 973 <a class="indexterm" name="id421617"></a> 974 974 Setting <em class="parameter"><code>FilterLimit 1000</code></em> in 975 975 <code class="filename">cupsd.conf</code> will not allow more filters to … … 979 979 200 allows roughly one job at a time, while a FilterLimit of 1000 allows 980 980 approximately five jobs maximum at a time. 981 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 398094"></a>“<span class="quote">Raw</span>” Printing</h3></div></div></div><p>982 <a class="indexterm" name="id 398104"></a>983 <a class="indexterm" name="id 398111"></a>984 <a class="indexterm" name="id 398117"></a>981 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id421644"></a>“<span class="quote">Raw</span>” Printing</h3></div></div></div><p> 982 <a class="indexterm" name="id421654"></a> 983 <a class="indexterm" name="id421661"></a> 984 <a class="indexterm" name="id421668"></a> 985 985 You can tell CUPS to print (nearly) any file “<span class="quote">raw</span>”. “<span class="quote">Raw</span>” means it will not be 986 986 filtered. CUPS will send the file to the printer “<span class="quote">as is</span>” without bothering if the printer is able … … 1000 1000 only send known MIME types (as defined in its own mime.types file) and 1001 1001 refuse others. 1002 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 398194"></a>application/octet-stream Printing</h3></div></div></div><p>1003 <a class="indexterm" name="id 398202"></a>1004 <a class="indexterm" name="id 398209"></a>1002 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id421744"></a>application/octet-stream Printing</h3></div></div></div><p> 1003 <a class="indexterm" name="id421752"></a> 1004 <a class="indexterm" name="id421759"></a> 1005 1005 Any MIME type with no rule in the <code class="filename">/etc/cups/mime.types</code> file is regarded as unknown 1006 1006 or <em class="parameter"><code>application/octet-stream</code></em> and will not be … … 1015 1015 these two files: 1016 1016 </p><div class="itemizedlist"><ul type="disc"><li><p><code class="filename">/etc/cups/mime.convs</code></p></li><li><p><code class="filename">/etc/cups/mime.types</code></p></li></ul></div><p> 1017 <a class="indexterm" name="id 398269"></a>1017 <a class="indexterm" name="id421820"></a> 1018 1018 Both contain entries (at the end of the respective files) that must be uncommented to allow raw mode 1019 1019 operation for <em class="parameter"><code>application/octet-stream</code></em>. In <code class="filename">/etc/cups/mime.types</code> 1020 1020 make sure this line is present: 1021 <a class="indexterm" name="id 398290"></a>1021 <a class="indexterm" name="id421840"></a> 1022 1022 </p><pre class="programlisting"> 1023 1023 application/octet-stream … … 1030 1030 application/octet-stream application/vnd.cups-raw 0 - 1031 1031 </pre><p> 1032 <a class="indexterm" name="id 398322"></a>1032 <a class="indexterm" name="id421872"></a> 1033 1033 This line tells CUPS to use the <span class="emphasis"><em>Null Filter</em></span> 1034 1034 (denoted as “<span class="quote">-</span>”, doing nothing at all) on … … 1041 1041 <span class="emphasis"><em>enforce</em></span> “<span class="quote">raw</span>” printing, it only <span class="emphasis"><em>allows</em></span> it. 1042 1042 </p></div><p><b>Background. </b> 1043 <a class="indexterm" name="id 398386"></a>1044 <a class="indexterm" name="id 398393"></a>1045 <a class="indexterm" name="id 398399"></a>1046 <a class="indexterm" name="id 398406"></a>1043 <a class="indexterm" name="id421936"></a> 1044 <a class="indexterm" name="id421943"></a> 1045 <a class="indexterm" name="id421950"></a> 1046 <a class="indexterm" name="id421956"></a> 1047 1047 That CUPS is a more security-aware printing system than traditional ones 1048 1048 does not by default allow one to send deliberate (possibly binary) … … 1056 1056 recognizes MIME types. The file <code class="filename">/etc/cups/mime.convs</code> decides which file 1057 1057 conversion filter(s) may be applied to which MIME types. 1058 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 398455"></a>PostScript Printer Descriptions for Non-PostScript Printers</h3></div></div></div><p>1059 <a class="indexterm" name="id 398463"></a>1060 <a class="indexterm" name="id 398469"></a>1061 <a class="indexterm" name="id 398476"></a>1062 <a class="indexterm" name="id 398483"></a>1063 <a class="indexterm" name="id 398489"></a>1064 <a class="indexterm" name="id 398496"></a>1058 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id422005"></a>PostScript Printer Descriptions for Non-PostScript Printers</h3></div></div></div><p> 1059 <a class="indexterm" name="id422013"></a> 1060 <a class="indexterm" name="id422020"></a> 1061 <a class="indexterm" name="id422026"></a> 1062 <a class="indexterm" name="id422033"></a> 1063 <a class="indexterm" name="id422040"></a> 1064 <a class="indexterm" name="id422046"></a> 1065 1065 Originally PPDs were meant to be used for PostScript printers 1066 1066 only. Here, they help to send device-specific commands and settings … … 1075 1075 PPDs for a non-PostScript printer have a few lines that are unique to 1076 1076 CUPS. The most important one looks similar to this: 1077 <a class="indexterm" name="id 398513"></a>1077 <a class="indexterm" name="id422063"></a> 1078 1078 </p><pre class="programlisting"> 1079 1079 *cupsFilter: application/vnd.cups-raster 66 rastertoprinter … … 1092 1092 several hundred printer models. You may not be able to control 1093 1093 different paper trays, or you may get larger margins than your 1094 specific model supports. See Table 21.1<a href="CUPS-printing.html#cups-ppds" title="Table 22.1. PPDs Shipped with CUPS">???</a> for summary information.1095 </p><div class="table"><a name="cups-ppds"></a><p class="title"><b>Table 22.1. PPDs Shipped with CUPS</b></p><div class="table-contents"><table summary="PPDs Shipped with CUPS" border="1"><colgroup><col align="left"><col align="justify"></colgroup><thead><tr><th align="left">PPD file</th><th align="justify">Printer type</th></tr></thead><tbody><tr><td align="left">deskjet.ppd</td><td align="justify">older HP inkjet printers and compatible</td></tr><tr><td align="left">deskjet2.ppd</td><td align="justify">newer HP inkjet printers and compatible </td></tr><tr><td align="left">dymo.ppd</td><td align="justify">label printers </td></tr><tr><td align="left">epson9.ppd</td><td align="justify">Epson 24-pin impact printers and compatible </td></tr><tr><td align="left">epson24.ppd</td><td align="justify">Epson 24-pin impact printers and compatible </td></tr><tr><td align="left">okidata9.ppd</td><td align="justify">Okidata 9-pin impact printers and compatible </td></tr><tr><td align="left">okidat24.ppd</td><td align="justify">Okidata 24-pin impact printers and compatible </td></tr><tr><td align="left">stcolor.ppd</td><td align="justify">older Epson Stylus Color printers </td></tr><tr><td align="left">stcolor2.ppd</td><td align="justify">newer Epson Stylus Color printers </td></tr><tr><td align="left">stphoto.ppd</td><td align="justify">older Epson Stylus Photo printers </td></tr><tr><td align="left">stphoto2.ppd</td><td align="justify">newer Epson Stylus Photo printers </td></tr><tr><td align="left">laserjet.ppd</td><td align="justify">all PCL printers </td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 398718"></a><span class="emphasis"><em>cupsomatic/foomatic-rip</em></span> Versus <span class="emphasis"><em>Native CUPS</em></span> Printing</h3></div></div></div><p>1096 <a class="indexterm" name="id 398732"></a>1097 <a class="indexterm" name="id 398739"></a>1094 specific model supports. See Table 21.1<a class="link" href="CUPS-printing.html#cups-ppds" title="Table 22.1. PPDs Shipped with CUPS">“PPDs Shipped with CUPS”</a> for summary information. 1095 </p><div class="table"><a name="cups-ppds"></a><p class="title"><b>Table 22.1. PPDs Shipped with CUPS</b></p><div class="table-contents"><table summary="PPDs Shipped with CUPS" border="1"><colgroup><col align="left"><col align="justify"></colgroup><thead><tr><th align="left">PPD file</th><th align="justify">Printer type</th></tr></thead><tbody><tr><td align="left">deskjet.ppd</td><td align="justify">older HP inkjet printers and compatible</td></tr><tr><td align="left">deskjet2.ppd</td><td align="justify">newer HP inkjet printers and compatible </td></tr><tr><td align="left">dymo.ppd</td><td align="justify">label printers </td></tr><tr><td align="left">epson9.ppd</td><td align="justify">Epson 24-pin impact printers and compatible </td></tr><tr><td align="left">epson24.ppd</td><td align="justify">Epson 24-pin impact printers and compatible </td></tr><tr><td align="left">okidata9.ppd</td><td align="justify">Okidata 9-pin impact printers and compatible </td></tr><tr><td align="left">okidat24.ppd</td><td align="justify">Okidata 24-pin impact printers and compatible </td></tr><tr><td align="left">stcolor.ppd</td><td align="justify">older Epson Stylus Color printers </td></tr><tr><td align="left">stcolor2.ppd</td><td align="justify">newer Epson Stylus Color printers </td></tr><tr><td align="left">stphoto.ppd</td><td align="justify">older Epson Stylus Photo printers </td></tr><tr><td align="left">stphoto2.ppd</td><td align="justify">newer Epson Stylus Photo printers </td></tr><tr><td align="left">laserjet.ppd</td><td align="justify">all PCL printers </td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id422269"></a><span class="emphasis"><em>cupsomatic/foomatic-rip</em></span> Versus <span class="emphasis"><em>Native CUPS</em></span> Printing</h3></div></div></div><p> 1096 <a class="indexterm" name="id422282"></a> 1097 <a class="indexterm" name="id422289"></a> 1098 1098 Native CUPS rasterization works in two steps: 1099 1099 </p><div class="itemizedlist"><ul type="disc"><li><p> 1100 <a class="indexterm" name="id 398753"></a>1100 <a class="indexterm" name="id422303"></a> 1101 1101 First is the <em class="parameter"><code>pstoraster</code></em> step. It uses the special CUPS 1102 <a class="indexterm" name="id 398766"></a>1102 <a class="indexterm" name="id422316"></a> 1103 1103 device from ESP Ghostscript 7.05.x as its tool. 1104 1104 </p></li><li><p> … … 1109 1109 </p></li></ul></div><p> 1110 1110 Often this produces better quality (and has several more advantages) than other methods. 1111 This is shown in <a href="CUPS-printing.html#cupsomatic-dia" title="Figure 22.10. cupsomatic/foomatic Processing Versus Native CUPS."> the cupsomatic/foomatic Processing Versus Native CUPS1111 This is shown in <a class="link" href="CUPS-printing.html#cupsomatic-dia" title="Figure 22.10. cupsomatic/foomatic Processing Versus Native CUPS."> the cupsomatic/foomatic Processing Versus Native CUPS 1112 1112 illustration</a>. 1113 1113 </p><div class="figure"><a name="cupsomatic-dia"></a><p class="title"><b>Figure 22.10. cupsomatic/foomatic Processing Versus Native CUPS.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/10small.png" alt="cupsomatic/foomatic Processing Versus Native CUPS."></div></div></div><br class="figure-break"><p> … … 1115 1115 way. Note that <em class="parameter"><code>cupsomatic</code></em> is <span class="emphasis"><em>not</em></span> made by the CUPS 1116 1116 developers. It is an independent contribution to printing development, 1117 made by people from Linuxprinting.org.<sup>[<a name="id 398861" href="#ftn.id398861">6</a>]</sup>1117 made by people from Linuxprinting.org.<sup>[<a name="id422411" href="#ftn.id422411" class="footnote">6</a>]</sup> 1118 1118 <em class="parameter"><code>cupsomatic</code></em> is no longer developed, maintained, or supported. It now been 1119 1119 replaced by <em class="parameter"><code>foomatic-rip</code></em>. <em class="parameter"><code>foomatic-rip</code></em> is a complete rewrite … … 1123 1123 too. 1124 1124 </p><p> 1125 <a class="indexterm" name="id 398907"></a>1126 <a class="indexterm" name="id 398914"></a>1125 <a class="indexterm" name="id422457"></a> 1126 <a class="indexterm" name="id422464"></a> 1127 1127 Like the old <em class="parameter"><code>cupsomatic</code></em> method, the <em class="parameter"><code>foomatic-rip</code></em> (new) method 1128 1128 from Linuxprinting.org uses the traditional Ghostscript print file processing, doing everything in a single … … 1134 1134 different queues) and find out which works best for you. 1135 1135 </p><p> 1136 <a class="indexterm" name="id 398944"></a>1137 <a class="indexterm" name="id 398951"></a>1138 <a class="indexterm" name="id 398958"></a>1139 <a class="indexterm" name="id 398964"></a>1140 <a class="indexterm" name="id 398971"></a>1141 <a class="indexterm" name="id 398978"></a>1136 <a class="indexterm" name="id422494"></a> 1137 <a class="indexterm" name="id422501"></a> 1138 <a class="indexterm" name="id422508"></a> 1139 <a class="indexterm" name="id422515"></a> 1140 <a class="indexterm" name="id422522"></a> 1141 <a class="indexterm" name="id422528"></a> 1142 1142 <em class="parameter"><code>cupsomatic</code></em> kidnaps the print file after the 1143 1143 <em class="parameter"><code>application/vnd.cups-postscript</code></em> stage and deviates it through the CUPS-external, … … 1145 1145 filter (and also bypasses the CUPS raster drivers <em class="parameter"><code>rastertosomething</code></em>). After Ghostscript 1146 1146 finished its rasterization, <em class="parameter"><code>cupsomatic</code></em> hands the rendered file directly to the CUPS 1147 backend. <a href="CUPS-printing.html#cupsomatic-dia" title="Figure 22.10. cupsomatic/foomatic Processing Versus Native CUPS.">cupsomatic/foomatic Processing Versus Native1147 backend. <a class="link" href="CUPS-printing.html#cupsomatic-dia" title="Figure 22.10. cupsomatic/foomatic Processing Versus Native CUPS.">cupsomatic/foomatic Processing Versus Native 1148 1148 CUPS</a>, illustrates the difference between native CUPS rendering and the 1149 1149 <em class="parameter"><code>Foomatic/cupsomatic</code></em> method. 1150 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 399033"></a>Examples for Filtering Chains</h3></div></div></div><p>1150 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id422583"></a>Examples for Filtering Chains</h3></div></div></div><p> 1151 1151 Here are a few examples of commonly occurring filtering chains to 1152 1152 illustrate the workings of CUPS. 1153 1153 </p><p> 1154 <a class="indexterm" name="id 399045"></a>1155 <a class="indexterm" name="id 399052"></a>1156 <a class="indexterm" name="id 399058"></a>1157 <a class="indexterm" name="id 399065"></a>1154 <a class="indexterm" name="id422595"></a> 1155 <a class="indexterm" name="id422602"></a> 1156 <a class="indexterm" name="id422609"></a> 1157 <a class="indexterm" name="id422615"></a> 1158 1158 Assume you want to print a PDF file to an HP JetDirect-connected 1159 1159 PostScript printer, but you want to print pages 3-5, 7, and 11-13 … … 1172 1172 <em class="parameter"><code>application/vnd.cups-postscript</code></em>.</p></li><li><p>The file goes to the <em class="parameter"><code>socket</code></em> 1173 1173 backend, which transfers the job to the printers.</p></li></ul></div><p> 1174 The resulting filter chain, therefore, is as shown in <a href="CUPS-printing.html#pdftosocket" title="Figure 22.11. PDF to Socket Chain.">the PDF to socket chain1174 The resulting filter chain, therefore, is as shown in <a class="link" href="CUPS-printing.html#pdftosocket" title="Figure 22.11. PDF to Socket Chain.">the PDF to socket chain 1175 1175 illustration</a>. 1176 </p><a class="indexterm" name="id 399167"></a><div class="figure"><a name="pdftosocket"></a><p class="title"><b>Figure 22.11. PDF to Socket Chain.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/pdftosocket.png" alt="PDF to Socket Chain."></div></div></div><br class="figure-break"><p>1177 <a class="indexterm" name="id 399215"></a>1178 <a class="indexterm" name="id 399222"></a>1179 <a class="indexterm" name="id 399229"></a>1176 </p><a class="indexterm" name="id422717"></a><div class="figure"><a name="pdftosocket"></a><p class="title"><b>Figure 22.11. PDF to Socket Chain.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/pdftosocket.png" alt="PDF to Socket Chain."></div></div></div><br class="figure-break"><p> 1177 <a class="indexterm" name="id422765"></a> 1178 <a class="indexterm" name="id422772"></a> 1179 <a class="indexterm" name="id422779"></a> 1180 1180 Assume you want to print the same filter to an USB-connected Epson Stylus Photo Printer installed with the CUPS 1181 1181 <code class="filename">stphoto2.ppd</code>. The first few filtering stages are nearly the same: … … 1187 1187 <em class="parameter"><code>application/pdf</code></em>. 1188 1188 </p></li><li><p> 1189 <a class="indexterm" name="id 399266"></a>1190 <a class="indexterm" name="id 399272"></a>1189 <a class="indexterm" name="id422816"></a> 1190 <a class="indexterm" name="id422823"></a> 1191 1191 The file must first pass the <em class="parameter"><code>pdftops</code></em> prefilter, which produces PostScript 1192 1192 MIME type <em class="parameter"><code>application/postscript</code></em> (a preview here would still show all 1193 1193 pages of the original PDF). 1194 1194 </p></li><li><p> 1195 <a class="indexterm" name="id 399296"></a>1196 <a class="indexterm" name="id 399303"></a>1195 <a class="indexterm" name="id422846"></a> 1196 <a class="indexterm" name="id422853"></a> 1197 1197 The file then passes the “<span class="quote">pstops</span>” filter that applies 1198 1198 the command-line options: it selects the pages 2-5, 7, and 11-13, … … 1206 1206 <em class="parameter"><code>application/cups-raster</code></em>. 1207 1207 </p></li><li><p> 1208 <a class="indexterm" name="id 399354"></a>1208 <a class="indexterm" name="id422904"></a> 1209 1209 Finally, the <em class="parameter"><code>rastertoepson</code></em> filter 1210 1210 does its work (as indicated in the printer's PPD), creating the … … 1214 1214 The file goes to the <em class="parameter"><code>usb</code></em> backend, which transfers the job to the printers. 1215 1215 </p></li></ul></div><p> 1216 The resulting filter chain therefore is as shown in <a href="CUPS-printing.html#pdftoepsonusb" title="Figure 22.12. PDF to USB Chain.">the PDF to USB Chain1216 The resulting filter chain therefore is as shown in <a class="link" href="CUPS-printing.html#pdftoepsonusb" title="Figure 22.12. PDF to USB Chain.">the PDF to USB Chain 1217 1217 illustration</a>. 1218 </p><div class="figure"><a name="pdftoepsonusb"></a><p class="title"><b>Figure 22.12. PDF to USB Chain.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/pdftoepsonusb.png" alt="PDF to USB Chain."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 399434"></a>Sources of CUPS Drivers/PPDs</h3></div></div></div><p>1218 </p><div class="figure"><a name="pdftoepsonusb"></a><p class="title"><b>Figure 22.12. PDF to USB Chain.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/pdftoepsonusb.png" alt="PDF to USB Chain."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id422984"></a>Sources of CUPS Drivers/PPDs</h3></div></div></div><p> 1219 1219 On the Internet you can now find many thousands of CUPS-PPD files 1220 1220 (with their companion filters), in many national languages 1221 1221 supporting more than 1,000 non-PostScript models. 1222 </p><div class="itemizedlist"><a class="indexterm" name="id 399447"></a><a class="indexterm" name="id399456"></a><ul type="disc"><li><p>1223 <a href="http://www.easysw.com/printpro/" target="_top">ESP PrintPro</a>1222 </p><div class="itemizedlist"><a class="indexterm" name="id422997"></a><a class="indexterm" name="id423006"></a><ul type="disc"><li><p> 1223 <a class="ulink" href="http://www.easysw.com/printpro/" target="_top">ESP PrintPro</a> 1224 1224 (commercial, non-free) is packaged with more than 3,000 PPDs, ready for 1225 1225 successful use “<span class="quote">out of the box</span>” on Linux, Mac OS X, IBM-AIX, … … 1229 1229 CUPS, as they feed their creators). 1230 1230 </p></li><li><p> 1231 The <a href="http://gimp-print.sourceforge.net/" target="_top">Gimp-Print Project</a>1231 The <a class="ulink" href="http://gimp-print.sourceforge.net/" target="_top">Gimp-Print Project</a> 1232 1232 (GPL, free software) provides around 140 PPDs (supporting nearly 400 printers, many driven 1233 1233 to photo quality output), to be used alongside the Gimp-Print CUPS filters. 1234 1234 </p></li><li><p> 1235 <a href="http://www.turboprint.de/english.html/" target="_top">TurboPrint </a> (shareware, non-free) supports1235 <a class="ulink" href="http://www.turboprint.de/english.html/" target="_top">TurboPrint </a> (shareware, non-free) supports 1236 1236 roughly the same number of printers in excellent quality. 1237 1237 </p></li><li><p> 1238 <a href="http://www-124.ibm.com/developerworks/oss/linux/projects/omni/" target="_top">OMNI </a>1238 <a class="ulink" href="http://www-124.ibm.com/developerworks/oss/linux/projects/omni/" target="_top">OMNI </a> 1239 1239 (LPGL, free) is a package made by IBM, now containing support for more 1240 1240 than 400 printers, stemming from the inheritance of IBM OS/2 know-how 1241 1241 ported over to Linux (CUPS support is in a beta stage at present). 1242 1242 </p></li><li><p> 1243 <a href="http://hpinkjet.sourceforge.net/" target="_top">HPIJS </a> (BSD-style licenses, free)1243 <a class="ulink" href="http://hpinkjet.sourceforge.net/" target="_top">HPIJS </a> (BSD-style licenses, free) 1244 1244 supports approximately 150 of HP's own printers and also provides 1245 1245 excellent print quality now (currently available only via the Foomatic path). 1246 1246 </p></li><li><p> 1247 <a href="http://www.linuxprinting.org/" target="_top">Foomatic/cupsomatic </a>1247 <a class="ulink" href="http://www.linuxprinting.org/" target="_top">Foomatic/cupsomatic </a> 1248 1248 (LPGL, free) from Linuxprinting.org provide PPDs for practically every Ghostscript 1249 1249 filter known to the world (including Omni, Gimp-Print, and HPIJS). 1250 </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 399543"></a>Printing with Interface Scripts</h3></div></div></div><p>1251 <a class="indexterm" name="id 399551"></a>1252 <a class="indexterm" name="id 399557"></a>1250 </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423093"></a>Printing with Interface Scripts</h3></div></div></div><p> 1251 <a class="indexterm" name="id423101"></a> 1252 <a class="indexterm" name="id423108"></a> 1253 1253 CUPS also supports the use of “<span class="quote">interface scripts</span>” as known from 1254 1254 System V AT&T printing systems. These are often used for PCL … … 1270 1270 script or program into one specific print queue (some information about the traditional 1271 1271 use of interface scripts is found at 1272 <a href="http://playground.sun.com/printing/documentation/interface.html" target="_top">1272 <a class="ulink" href="http://playground.sun.com/printing/documentation/interface.html" target="_top"> 1273 1273 http://playground.sun.com/printing/documentation/interface.html</a>). 1274 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id 399622"></a>Network Printing (Purely Windows)</h2></div></div></div><p>1274 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id423172"></a>Network Printing (Purely Windows)</h2></div></div></div><p> 1275 1275 Network printing covers a lot of ground. To understand what exactly 1276 1276 goes on with Samba when it is printing on behalf of its Windows 1277 1277 clients, let's first look at a “<span class="quote">purely Windows</span>” setup: Windows clients 1278 1278 with a Windows NT print server. 1279 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 399636"></a>From Windows Clients to an NT Print Server</h3></div></div></div><p>1279 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423186"></a>From Windows Clients to an NT Print Server</h3></div></div></div><p> 1280 1280 Windows clients printing to an NT-based print server have two 1281 1281 options. They may: 1282 <a class="indexterm" name="id 399645"></a>1283 <a class="indexterm" name="id 399652"></a>1282 <a class="indexterm" name="id423195"></a> 1283 <a class="indexterm" name="id423202"></a> 1284 1284 </p><div class="itemizedlist"><ul type="disc"><li><p>Execute the driver locally and render the GDI output 1285 1285 (EMF) into the printer-specific format on their own. … … 1287 1287 driver is executed to render the printer-specific output. 1288 1288 </p></li></ul></div><p> 1289 Both print paths are shown in the flowcharts in <a href="CUPS-printing.html#small11" title="Figure 22.13. Print Driver Execution on the Client.">1289 Both print paths are shown in the flowcharts in <a class="link" href="CUPS-printing.html#small11" title="Figure 22.13. Print Driver Execution on the Client."> 1290 1290 Print Driver Execution on the Client</a>, and 1291 <a href="CUPS-printing.html#small12" title="Figure 22.14. Print Driver Execution on the Server.">Print Driver Execution on the Server</a>.1292 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 399694"></a>Driver Execution on the Client</h3></div></div></div><p>1291 <a class="link" href="CUPS-printing.html#small12" title="Figure 22.14. Print Driver Execution on the Server.">Print Driver Execution on the Server</a>. 1292 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423245"></a>Driver Execution on the Client</h3></div></div></div><p> 1293 1293 In the first case, the print server must spool the file as raw, meaning it shouldn't touch the job file and try 1294 1294 to convert it in any way. This is what a traditional UNIX-based print server can do too, and at a better … … 1296 1296 familiar with. One advantage of this setup is that this “<span class="quote">spooling-only</span>” print server may be used 1297 1297 even if no driver(s) for UNIX is available. It is sufficient to have the Windows client drivers available and 1298 installed on the clients. This is illustrated in <a href="CUPS-printing.html#small11" title="Figure 22.13. Print Driver Execution on the Client.">the Print Driver Execution on the1298 installed on the clients. This is illustrated in <a class="link" href="CUPS-printing.html#small11" title="Figure 22.13. Print Driver Execution on the Client.">the Print Driver Execution on the 1299 1299 Client diagram</a>. 1300 </p><div class="figure"><a name="small11"></a><p class="title"><b>Figure 22.13. Print Driver Execution on the Client.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/11small.png" alt="Print Driver Execution on the Client."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 399759"></a>Driver Execution on the Server</h3></div></div></div><p>1301 <a class="indexterm" name="id 399767"></a>1302 <a class="indexterm" name="id 399774"></a>1303 <a class="indexterm" name="id 399780"></a>1304 <a class="indexterm" name="id 399787"></a>1305 <a class="indexterm" name="id 399794"></a>1300 </p><div class="figure"><a name="small11"></a><p class="title"><b>Figure 22.13. Print Driver Execution on the Client.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/11small.png" alt="Print Driver Execution on the Client."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423310"></a>Driver Execution on the Server</h3></div></div></div><p> 1301 <a class="indexterm" name="id423318"></a> 1302 <a class="indexterm" name="id423325"></a> 1303 <a class="indexterm" name="id423331"></a> 1304 <a class="indexterm" name="id423338"></a> 1305 <a class="indexterm" name="id423344"></a> 1306 1306 The other path executes the printer driver on the server. The client transfers print files in EMF format to 1307 1307 the server. The server uses the PostScript, PCL, ESC/P, or other driver to convert the EMF file into the 1308 1308 printer-specific language. It is not possible for UNIX to do the same. Currently, there is no program or 1309 1309 method to convert a Windows client's GDI output on a UNIX server into something a printer could understand. 1310 This is illustrated in <a href="CUPS-printing.html#small12" title="Figure 22.14. Print Driver Execution on the Server.">the Print Driver Execution on the Server diagram</a>.1310 This is illustrated in <a class="link" href="CUPS-printing.html#small12" title="Figure 22.14. Print Driver Execution on the Server.">the Print Driver Execution on the Server diagram</a>. 1311 1311 </p><div class="figure"><a name="small12"></a><p class="title"><b>Figure 22.14. Print Driver Execution on the Server.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/12small.png" alt="Print Driver Execution on the Server."></div></div></div><br class="figure-break"><p> 1312 1312 However, something similar is possible with CUPS, so read on. 1313 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id 399858"></a>Network Printing (Windows Clients and UNIX/Samba Print1313 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id423409"></a>Network Printing (Windows Clients and UNIX/Samba Print 1314 1314 Servers)</h2></div></div></div><p> 1315 1315 Since UNIX print servers <span class="emphasis"><em>cannot</em></span> execute the Win32 … … 1318 1318 much. On the contrary, you may have a way here to implement printing 1319 1319 features that are not possible otherwise. 1320 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id 399874"></a>From Windows Clients to a CUPS/Samba Print Server</h3></div></div></div><p>1320 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423425"></a>From Windows Clients to a CUPS/Samba Print Server</h3></div></div></div><p> 1321 1321 Here is a simple recipe showing how you can take advantage of CUPS's 1322 1322 powerful features for the benefit of your Windows network printing … … 1330 1330 First, to enable CUPS-based printing through Samba, the following options should be set in your <code class="filename">smb.conf</code> 1331 1331 file <em class="parameter"><code>[global]</code></em> section: 1332 </p><table class="simplelist" border="0" summary="Simple list"><tr><td><a class="indexterm" name="id 399924"></a><em class="parameter"><code>printing = cups</code></em></td></tr><tr><td><a class="indexterm" name="id399936"></a><em class="parameter"><code>printcap = cups</code></em></td></tr></table><p>1333 When these parameters are specified, all manually set print directives (like <a class=" indexterm" name="id399952"></a>print command or <a class="indexterm" name="id399959"></a>lppause command) in <code class="filename">smb.conf</code> (as well as in Samba itself) will be1332 </p><table class="simplelist" border="0" summary="Simple list"><tr><td><a class="indexterm" name="id423474"></a><em class="parameter"><code>printing = cups</code></em></td></tr><tr><td><a class="indexterm" name="id423486"></a><em class="parameter"><code>printcap = cups</code></em></td></tr></table><p> 1333 When these parameters are specified, all manually set print directives (like <a class="link" href="smb.conf.5.html#PRINTCOMMAND">print command</a> or <a class="link" href="smb.conf.5.html#LPPAUSECOMMAND">lppause command</a>) in <code class="filename">smb.conf</code> (as well as in Samba itself) will be 1334 1334 ignored. Instead, Samba will directly interface with CUPS through its application program interface (API), as 1335 1335 long as Samba has been compiled with CUPS library (libcups) support. If Samba has not been compiled with CUPS 1336 1336 support, and if no other print commands are set up, then printing will use the <span class="emphasis"><em>System V</em></span> 1337 1337 AT&T command set, with the -oraw option automatically passing through (if you want your own defined print 1338 commands to work with a Samba server that has CUPS support compiled in, simply use <a class=" indexterm" name="id399981"></a>classicalprinting = sysv). This is illustrated in <ahref="CUPS-printing.html#13small" title="Figure 22.15. Printing via CUPS/Samba Server.">the Printing via1338 commands to work with a Samba server that has CUPS support compiled in, simply use <a class="link" href="smb.conf.5.html#CLASSICALPRINTING">classicalprinting = sysv</a>). This is illustrated in <a class="link" href="CUPS-printing.html#13small" title="Figure 22.15. Printing via CUPS/Samba Server.">the Printing via 1339 1339 CUPS/Samba Server diagram</a>. 1340 </p><div class="figure"><a name="13small"></a><p class="title"><b>Figure 22.15. Printing via CUPS/Samba Server.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/13small.png" alt="Printing via CUPS/Samba Server."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 00039"></a>Samba Receiving Job-Files and Passing Them to CUPS</h3></div></div></div><p>1341 Samba <span class="emphasis"><em>must</em></span> use its own spool directory (it is set by a line similar to <a class=" indexterm" name="id400052"></a>path = /var/spool/samba, in the <em class="parameter"><code>[printers]</code></em> or <em class="parameter"><code>[printername]</code></em> section of <code class="filename">smb.conf</code>). Samba receives the job in its own spool space and passes it1340 </p><div class="figure"><a name="13small"></a><p class="title"><b>Figure 22.15. Printing via CUPS/Samba Server.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/13small.png" alt="Printing via CUPS/Samba Server."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423600"></a>Samba Receiving Job-Files and Passing Them to CUPS</h3></div></div></div><p> 1341 Samba <span class="emphasis"><em>must</em></span> use its own spool directory (it is set by a line similar to <a class="link" href="smb.conf.5.html#PATH">path = /var/spool/samba</a>, in the <em class="parameter"><code>[printers]</code></em> or <em class="parameter"><code>[printername]</code></em> section of <code class="filename">smb.conf</code>). Samba receives the job in its own spool space and passes it 1342 1342 into the spool directory of CUPS (the CUPS spool directory is set by the <em class="parameter"><code>RequestRoot</code></em> 1343 1343 directive in a line that defaults to <em class="parameter"><code>RequestRoot /var/spool/cups</code></em>). CUPS checks the … … 1350 1350 allow “<span class="quote">localhost</span>” to print. If it runs on different machines, you 1351 1351 need to make sure the Samba host gets access to printing on CUPS. 1352 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 00108"></a>Network PostScript RIP</h2></div></div></div><p>1352 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id423671"></a>Network PostScript RIP</h2></div></div></div><p> 1353 1353 This section discusses the use of CUPS filters on the server configuration where 1354 1354 clients make use of a PostScript driver with CUPS-PPDs. 1355 1355 </p><p> 1356 <a class="indexterm" name="id4 00122"></a>1357 <a class="indexterm" name="id4 00129"></a>1358 <a class="indexterm" name="id4 00136"></a>1356 <a class="indexterm" name="id423686"></a> 1357 <a class="indexterm" name="id423693"></a> 1358 <a class="indexterm" name="id423699"></a> 1359 1359 PPDs can control all print device options. They are usually provided by the manufacturer if you own 1360 1360 a PostScript printer, that is. PPD files are always a component of PostScript printer drivers on MS Windows or … … 1364 1364 </p><p> 1365 1365 CUPS can load, without any conversions, the PPD file from any Windows (NT is recommended) PostScript driver 1366 and handle the options. There is a Web browser interface to the print options (select <a href="http://localhost:631/printers/" target="_top">http://localhost:631/printers/</a> and click on one1366 and handle the options. There is a Web browser interface to the print options (select <a class="ulink" href="http://localhost:631/printers/" target="_top">http://localhost:631/printers/</a> and click on one 1367 1367 <span class="guibutton">Configure Printer</span> button to see it) or a command-line interface (see <code class="literal">man 1368 1368 lpoptions</code> or see if you have <code class="literal">lphelp</code> on your system). There are also some 1369 1369 different GUI front-ends on Linux/UNIX, which can present PPD options to users. PPD options are normally meant 1370 1370 to be evaluated by the PostScript RIP on the real PostScript printer. 1371 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 00187"></a>PPDs for Non-PS Printers on UNIX</h3></div></div></div><p>1372 <a class="indexterm" name="id4 00195"></a>1371 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423751"></a>PPDs for Non-PS Printers on UNIX</h3></div></div></div><p> 1372 <a class="indexterm" name="id423758"></a> 1373 1373 CUPS does not limit itself to “<span class="quote">real</span>” PostScript printers in its use of PPDs. The CUPS developers 1374 1374 have extended the scope of the PPD concept to also describe available device and driver options for … … 1382 1382 devices to its clients, because it can act as a PostScript RIP for those printers, processing the received 1383 1383 PostScript code into a proper raster print format. 1384 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 00224"></a>PPDs for Non-PS Printers on Windows</h3></div></div></div><p>1385 <a class="indexterm" name="id4 00232"></a>1384 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423788"></a>PPDs for Non-PS Printers on Windows</h3></div></div></div><p> 1385 <a class="indexterm" name="id423795"></a> 1386 1386 CUPS-PPDs can also be used on Windows clients, on top of a “<span class="quote">core</span>” PostScript driver (now 1387 1387 recommended is the CUPS PostScript Driver for Windows NT/200x/XP; you can also use the Adobe one, with … … 1397 1397 </p></li></ul></div><p> 1398 1398 Using CUPS PPDs on Windows clients enables them to control all print job settings just as a UNIX client can do. 1399 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 00285"></a>Windows Terminal Servers (WTS) as CUPS Clients</h2></div></div></div><p>1399 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id423848"></a>Windows Terminal Servers (WTS) as CUPS Clients</h2></div></div></div><p> 1400 1400 This setup may be of special interest to people experiencing major problems in WTS environments. WTS often 1401 1401 need a multitude of non-PostScript drivers installed to run their clients' variety of different printer 1402 1402 models. This often imposes the price of much increased instability. 1403 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 00296"></a>Printer Drivers Running in “<span class="quote">Kernel Mode</span>” Cause Many1403 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423860"></a>Printer Drivers Running in “<span class="quote">Kernel Mode</span>” Cause Many 1404 1404 Problems</h3></div></div></div><p> 1405 1405 Windows NT printer drivers, which run in “<span class="quote">kernel mode</span>”, introduce a high risk for the stability … … 1413 1413 one from Adobe and the one from Microsoft. Both are well-tested and are as stable as you can imagine on 1414 1414 Windows. The CUPS driver is derived from the Microsoft one. 1415 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 00328"></a>Workarounds Impose Heavy Limitations</h3></div></div></div><p>1415 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423891"></a>Workarounds Impose Heavy Limitations</h3></div></div></div><p> 1416 1416 In an attempt to work around problems, site administrators have resorted to restricting the 1417 1417 allowed drivers installed on their WTS to one generic PCL and one PostScript driver. This, however, restricts 1418 1418 the number of printer options available for clients to use. Often they can't get out more than simplex 1419 1419 prints from one standard paper tray, while their devices could do much better if driven by a different driver! 1420 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 00341"></a>CUPS: A “<span class="quote">Magical Stone</span>”?</h3></div></div></div><p>1421 <a class="indexterm" name="id4 00352"></a>1422 <a class="indexterm" name="id4 00359"></a>1420 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423905"></a>CUPS: A “<span class="quote">Magical Stone</span>”?</h3></div></div></div><p> 1421 <a class="indexterm" name="id423916"></a> 1422 <a class="indexterm" name="id423923"></a> 1423 1423 Using a PostScript driver, enabled with a CUPS-PPD, seems to be a very elegant way to overcome all these 1424 1424 shortcomings. There are, depending on the version of Windows OS you use, up to three different PostScript … … 1429 1429 “<span class="quote">raw spooling</span>” device. Plus, this setup is not yet widely tested, although the first feedbacks 1430 1430 look very promising. 1431 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 00378"></a>PostScript Drivers with No Major Problems, Even in Kernel1431 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id423941"></a>PostScript Drivers with No Major Problems, Even in Kernel 1432 1432 Mode</h3></div></div></div><p> 1433 <a class="indexterm" name="id4 00386"></a>1434 <a class="indexterm" name="id4 00393"></a>1435 <a class="indexterm" name="id4 00400"></a>1436 <a class="indexterm" name="id4 00406"></a>1437 <a class="indexterm" name="id4 00413"></a>1438 <a class="indexterm" name="id4 00420"></a>1433 <a class="indexterm" name="id423950"></a> 1434 <a class="indexterm" name="id423956"></a> 1435 <a class="indexterm" name="id423963"></a> 1436 <a class="indexterm" name="id423970"></a> 1437 <a class="indexterm" name="id423977"></a> 1438 <a class="indexterm" name="id423984"></a> 1439 1439 More recent printer drivers on W200x and XP no longer run in kernel mode (unlike Windows NT). However, both 1440 1440 operating systems can still use the NT drivers, running in kernel mode (you can roughly tell which is which as … … 1448 1448 the GPL, and if you are the owner of an “<span class="quote">MS DDK for Windows NT,</span>” you can check the driver 1449 1449 yourself. 1450 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 00456"></a>Configuring CUPS for Driver Download</h2></div></div></div><p>1450 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id424020"></a>Configuring CUPS for Driver Download</h2></div></div></div><p> 1451 1451 As we have said before, all previously known methods to prepare client printer drivers on the Samba server for 1452 1452 download and Point'n'Print convenience of Windows workstations are working with CUPS, too. These methods were 1453 described in <a href="classicalprinting.html" title="Chapter 21. Classical Printing Support">Classical Printing</a>. In reality, this is a pure Samba1453 described in <a class="link" href="classicalprinting.html" title="Chapter 21. Classical Printing Support">Classical Printing</a>. In reality, this is a pure Samba 1454 1454 business and relates only to the Samba-Windows client relationship. 1455 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 00475"></a><span class="emphasis"><em>cupsaddsmb</em></span>: The Unknown Utility</h3></div></div></div><p>1456 <a class="indexterm" name="id4 00485"></a>1455 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id424038"></a><span class="emphasis"><em>cupsaddsmb</em></span>: The Unknown Utility</h3></div></div></div><p> 1456 <a class="indexterm" name="id424048"></a> 1457 1457 The <em class="parameter"><code>cupsaddsmb</code></em> utility (shipped with all current CUPS versions) is an alternative 1458 1458 method to transfer printer drivers into the Samba <em class="parameter"><code>[print$]</code></em> share. Remember, this … … 1471 1471 CUPS drivers. You will also need to get the respective part of the Adobe driver 1472 1472 if you need to support Windows 95, 98, and Me clients. 1473 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 00563"></a>Prepare Your <code class="filename">smb.conf</code> for <code class="literal">cupsaddsmb</code></h3></div></div></div><p>1473 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id424126"></a>Prepare Your <code class="filename">smb.conf</code> for <code class="literal">cupsaddsmb</code></h3></div></div></div><p> 1474 1474 Prior to running <code class="literal">cupsaddsmb</code>, you need the settings in 1475 <code class="filename">smb.conf</code> as shown in <a href="CUPS-printing.html#cupsadd-ex" title="Example 22.3. smb.conf for cupsaddsmb Usage">the <code class="filename">smb.conf</code> for cupsaddsmb Usage</a>.1476 </p><div class="example"><a name="cupsadd-ex"></a><p class="title"><b>Example 22.3. smb.conf for cupsaddsmb Usage</b></p><div class="example-contents"><table class="simplelist" border="0" summary="Simple list"><tr><td> </td></tr><tr><td><em class="parameter"><code>[global]</code></em></td></tr><tr><td><a class="indexterm" name="id4 00631"></a><em class="parameter"><code>load printers = yes</code></em></td></tr><tr><td><a class="indexterm" name="id400644"></a><em class="parameter"><code>printing = cups</code></em></td></tr><tr><td><a class="indexterm" name="id400656"></a><em class="parameter"><code>printcap name = cups</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[printers]</code></em></td></tr><tr><td><a class="indexterm" name="id400678"></a><em class="parameter"><code>comment = All Printers</code></em></td></tr><tr><td><a class="indexterm" name="id400690"></a><em class="parameter"><code>path = /var/spool/samba</code></em></td></tr><tr><td><a class="indexterm" name="id400703"></a><em class="parameter"><code>browseable = no</code></em></td></tr><tr><td><a class="indexterm" name="id400715"></a><em class="parameter"><code>public = yes</code></em></td></tr><tr><td># setting depends on your requirements</td></tr><tr><td><a class="indexterm" name="id400731"></a><em class="parameter"><code>guest ok = yes</code></em></td></tr><tr><td><a class="indexterm" name="id400744"></a><em class="parameter"><code>writable = no</code></em></td></tr><tr><td><a class="indexterm" name="id400756"></a><em class="parameter"><code>printable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id400769"></a><em class="parameter"><code>printer admin = root</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[print$]</code></em></td></tr><tr><td><a class="indexterm" name="id400790"></a><em class="parameter"><code>comment = Printer Drivers</code></em></td></tr><tr><td><a class="indexterm" name="id400803"></a><em class="parameter"><code>path = /etc/samba/drivers</code></em></td></tr><tr><td><a class="indexterm" name="id400816"></a><em class="parameter"><code>browseable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id400828"></a><em class="parameter"><code>guest ok = no</code></em></td></tr><tr><td><a class="indexterm" name="id400841"></a><em class="parameter"><code>read only = yes</code></em></td></tr><tr><td><a class="indexterm" name="id400853"></a><em class="parameter"><code>write list = root</code></em></td></tr></table></div></div><br class="example-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id400868"></a>CUPS “<span class="quote">PostScript Driver for Windows NT/200x/XP</span>”</h3></div></div></div><p>1477 <a class="indexterm" name="id4 00878"></a>1478 CUPS users may get the exact same package from <a href="http://www.cups.org/software.html" target="_top">http://www.cups.org/software.html</a>. It is a separate package1475 <code class="filename">smb.conf</code> as shown in <a class="link" href="CUPS-printing.html#cupsadd-ex" title="Example 22.3. smb.conf for cupsaddsmb Usage">the <code class="filename">smb.conf</code> for cupsaddsmb Usage</a>. 1476 </p><div class="example"><a name="cupsadd-ex"></a><p class="title"><b>Example 22.3. smb.conf for cupsaddsmb Usage</b></p><div class="example-contents"><table class="simplelist" border="0" summary="Simple list"><tr><td> </td></tr><tr><td><em class="parameter"><code>[global]</code></em></td></tr><tr><td><a class="indexterm" name="id424195"></a><em class="parameter"><code>load printers = yes</code></em></td></tr><tr><td><a class="indexterm" name="id424206"></a><em class="parameter"><code>printing = cups</code></em></td></tr><tr><td><a class="indexterm" name="id424218"></a><em class="parameter"><code>printcap name = cups</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[printers]</code></em></td></tr><tr><td><a class="indexterm" name="id424238"></a><em class="parameter"><code>comment = All Printers</code></em></td></tr><tr><td><a class="indexterm" name="id424250"></a><em class="parameter"><code>path = /var/spool/samba</code></em></td></tr><tr><td><a class="indexterm" name="id424261"></a><em class="parameter"><code>browseable = no</code></em></td></tr><tr><td><a class="indexterm" name="id424272"></a><em class="parameter"><code>public = yes</code></em></td></tr><tr><td># setting depends on your requirements</td></tr><tr><td><a class="indexterm" name="id424288"></a><em class="parameter"><code>guest ok = yes</code></em></td></tr><tr><td><a class="indexterm" name="id424299"></a><em class="parameter"><code>writable = no</code></em></td></tr><tr><td><a class="indexterm" name="id424310"></a><em class="parameter"><code>printable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id424322"></a><em class="parameter"><code>printer admin = root</code></em></td></tr><tr><td> </td></tr><tr><td><em class="parameter"><code>[print$]</code></em></td></tr><tr><td><a class="indexterm" name="id424342"></a><em class="parameter"><code>comment = Printer Drivers</code></em></td></tr><tr><td><a class="indexterm" name="id424354"></a><em class="parameter"><code>path = /etc/samba/drivers</code></em></td></tr><tr><td><a class="indexterm" name="id424366"></a><em class="parameter"><code>browseable = yes</code></em></td></tr><tr><td><a class="indexterm" name="id424377"></a><em class="parameter"><code>guest ok = no</code></em></td></tr><tr><td><a class="indexterm" name="id424388"></a><em class="parameter"><code>read only = yes</code></em></td></tr><tr><td><a class="indexterm" name="id424400"></a><em class="parameter"><code>write list = root</code></em></td></tr></table></div></div><br class="example-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id424414"></a>CUPS “<span class="quote">PostScript Driver for Windows NT/200x/XP</span>”</h3></div></div></div><p> 1477 <a class="indexterm" name="id424424"></a> 1478 CUPS users may get the exact same package from <a class="ulink" href="http://www.cups.org/software.html" target="_top">http://www.cups.org/software.html</a>. It is a separate package 1479 1479 from the CUPS-based software files, tagged as CUPS 1.1.x Windows NT/200x/XP Printer Driver for Samba (tar.gz, 1480 1480 192k). The filename to download is <code class="filename">cups-samba-1.1.x.tar.gz</code>. Upon untar and unzipping, it … … 1488 1488 cups-samba.ss 1489 1489 </pre><p> 1490 <a class="indexterm" name="id4 00921"></a>1491 <a class="indexterm" name="id4 00930"></a>1490 <a class="indexterm" name="id424466"></a> 1491 <a class="indexterm" name="id424475"></a> 1492 1492 These have been packaged with the ESP meta-packager software EPM. The <code class="filename">*.install</code> and 1493 1493 <code class="filename">*.remove</code> files are simple shell scripts, which untar the <code class="filename">*.ss</code> (the … … 1521 1521 the correct place. 1522 1522 </p></div><p> 1523 <a class="indexterm" name="id4 01073"></a>1523 <a class="indexterm" name="id424618"></a> 1524 1524 This new CUPS PostScript driver is currently binary only, but free of charge. No complete source code is 1525 1525 provided (yet). The reason is that it has been developed with the help of the Microsoft DDK and compiled with … … 1527 1527 free software. However, CUPS developers released the “<span class="quote">diff</span>” in source code under the GPL, so 1528 1528 anybody with a license for Visual Studio and a DDK will be able to compile for himself or herself. 1529 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 01090"></a>Recognizing Different Driver Files</h3></div></div></div><p>1529 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id424635"></a>Recognizing Different Driver Files</h3></div></div></div><p> 1530 1530 The CUPS drivers do not support the older Windows 95/98/Me, but only the Windows NT/2000/XP client. 1531 1531 </p><p>Windows NT, 2000, and XP are supported by:</p><div class="itemizedlist"><ul type="disc"><li><p>cups.hlp</p></li><li><p>cupsdrvr.dll</p></li><li><p>cupsui.dll</p></li></ul></div><p> … … 1534 1534 different platforms. 1535 1535 </p><p>Windows 95, 98, and ME are supported by:</p><div class="itemizedlist"><ul type="disc"><li><p>ADFONTS.MFM</p></li><li><p>ADOBEPS4.DRV</p></li><li><p>ADOBEPS4.HLP</p></li><li><p>DEFPRTR2.PPD</p></li><li><p>ICONLIB.DLL</p></li><li><p>PSMON.DLL</p></li></ul></div><p>Windows NT, 2000, and XP are supported by:</p><div class="itemizedlist"><ul type="disc"><li><p>ADOBEPS5.DLL</p></li><li><p>ADOBEPSU.DLL</p></li><li><p>ADOBEPSU.HLP</p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 1536 <a class="indexterm" name="id4 01182"></a>1536 <a class="indexterm" name="id424728"></a> 1537 1537 If both the Adobe driver files and the CUPS driver files for the support of Windows NT/200x/XP are presently 1538 1538 installed on the server, the Adobe files will be ignored and the CUPS files will be used. If you prefer 1539 1539 for whatever reason to use Adobe-only drivers, move away the three CUPS driver files. 1540 1540 The Windows 9x/Me clients use the Adobe drivers in any case. 1541 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 01201"></a>Acquiring the Adobe Driver Files</h3></div></div></div><p>1541 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id424746"></a>Acquiring the Adobe Driver Files</h3></div></div></div><p> 1542 1542 Acquiring the Adobe driver files seems to be unexpectedly difficult for many users. They are not available on 1543 1543 the Adobe Web site as single files, and the self-extracting and/or self-installing Windows-.exe is not easy to … … 1545 1545 client once. This will install the drivers (and one generic PostScript printer) locally on the client. When 1546 1546 they are installed, share the generic PostScript printer. After this, the client's <em class="parameter"><code>[print$]</code></em> share holds the Adobe files, which you can get with smbclient from the CUPS host. 1547 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 01221"></a>ESP Print Pro PostScript Driver for Windows NT/200x/XP</h3></div></div></div><p>1548 <a class="indexterm" name="id4 01229"></a>1547 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id424766"></a>ESP Print Pro PostScript Driver for Windows NT/200x/XP</h3></div></div></div><p> 1548 <a class="indexterm" name="id424774"></a> 1549 1549 Users of the ESP Print Pro software are able to install the ESP print drivers package as an alternative to the 1550 1550 Adobe PostScript drivers. To do so, retrieve the driver files from the normal download area of the ESP Print 1551 Pro software at <a href="http://www.easysw.com/software.html" target="_top">Easy Software</a> web site.1551 Pro software at <a class="ulink" href="http://www.easysw.com/software.html" target="_top">Easy Software</a> web site. 1552 1552 You need to locate the link labeled “<span class="quote">SAMBA</span>” among the <span class="guilabel">Download Printer Drivers for ESP 1553 1553 Print Pro 4.x</span> area and download the package. Once installed, you can prepare any driver by simply … … 1556 1556 the <em class="parameter"><code>[print$]</code></em> share, and so on. The ESP Print Pro package includes the CUPS driver 1557 1557 files as well as a (licensed) set of Adobe drivers for the Windows 95/98/Me client family. 1558 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 01275"></a>Caveats to Be Considered</h3></div></div></div><p>1559 <a class="indexterm" name="id4 01283"></a>1560 <a class="indexterm" name="id4 01290"></a>1561 <a class="indexterm" name="id4 01297"></a>1562 <a class="indexterm" name="id4 01304"></a>1558 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id424821"></a>Caveats to Be Considered</h3></div></div></div><p> 1559 <a class="indexterm" name="id424829"></a> 1560 <a class="indexterm" name="id424835"></a> 1561 <a class="indexterm" name="id424842"></a> 1562 <a class="indexterm" name="id424849"></a> 1563 1563 Once you have run the install script (and possibly manually moved the <code class="filename">cups.hlp</code> file to 1564 1564 <code class="filename">/usr/share/cups/drivers/</code>), the driver is ready to be put into Samba's <em class="parameter"><code>[print$]</code></em> share (which often maps to <code class="filename">/etc/samba/drivers/</code> and contains a … … 1567 1567 1.1.16). 1568 1568 </p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p> 1569 <a class="indexterm" name="id4 01360"></a>1570 <a class="indexterm" name="id4 01366"></a>1569 <a class="indexterm" name="id424905"></a> 1570 <a class="indexterm" name="id424912"></a> 1571 1571 You may need to put root into the smbpasswd file by running <code class="literal">smbpasswd</code>; this is especially 1572 1572 important if you should run this whole procedure for the first time and are not working in an environment … … 1583 1583 1.1.16) will automatically prefer its own drivers if it finds both. 1584 1584 </p></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 1585 <a class="indexterm" name="id4 01436"></a>1586 <a class="indexterm" name="id4 01443"></a>1585 <a class="indexterm" name="id424981"></a> 1586 <a class="indexterm" name="id424988"></a> 1587 1587 Should your Windows clients have had the old <code class="filename">ADOBE*.*</code> files for the Adobe PostScript 1588 1588 driver installed, the download and installation of the new CUPS PostScript driver for Windows NT/200x/XP will … … 1598 1598 privileges to do this. 1599 1599 </p></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 1600 <a class="indexterm" name="id4 01510"></a>1601 <a class="indexterm" name="id4 01519"></a>1600 <a class="indexterm" name="id425055"></a> 1601 <a class="indexterm" name="id425064"></a> 1602 1602 Once you have successfully downloaded the CUPS PostScript driver to a client, you can easily switch all 1603 printers to this one by proceeding as described in <a href="classicalprinting.html" title="Chapter 21. Classical Printing Support">Classical Printing1603 printers to this one by proceeding as described in <a class="link" href="classicalprinting.html" title="Chapter 21. Classical Printing Support">Classical Printing 1604 1604 Support</a>. Either change a driver for an existing printer by running the <span class="guilabel">Printer 1605 1605 Properties</span> dialog, or use <code class="literal">rpcclient</code> with the <code class="literal">setdriver</code> 1606 1606 subcommand. 1607 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 01555"></a>Windows CUPS PostScript Driver Versus Adobe Driver</h3></div></div></div><p>1607 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id425100"></a>Windows CUPS PostScript Driver Versus Adobe Driver</h3></div></div></div><p> 1608 1608 Are you interested in a comparison between the CUPS and the Adobe PostScript drivers? For our purposes, these 1609 1609 are the most important items that weigh in favor of CUPS: 1610 1610 </p><div class="itemizedlist"><ul type="disc"><li><p>No hassle with the Adobe EULA.</p></li><li><p>No hassle with the question, “<span class="quote">Where do I 1611 1611 get the ADOBE*.* driver files?</span>”</p></li><li><p> 1612 <a class="indexterm" name="id4 01583"></a>1612 <a class="indexterm" name="id425128"></a> 1613 1613 The Adobe drivers (on request of the printer PPD associated with them) often put a PJL header in front of the 1614 1614 main PostScript part of the print file. Thus, the print file starts with <em class="parameter"><code><1B … … 1616 1616 <em class="parameter"><code>%!PS</code></em>. This leads to the CUPS daemon autotyping the incoming file as a print-ready file, 1617 1617 not initiating a pass through the <em class="parameter"><code>pstops</code></em> filter (to speak more technically, it is not 1618 regarded as the generic MIME-type <a class="indexterm" name="id4 01617"></a>1618 regarded as the generic MIME-type <a class="indexterm" name="id425162"></a> 1619 1619 <em class="parameter"><code>application/postscript</code></em>, but as the more special MIME type 1620 <a class="indexterm" name="id4 01630"></a>1620 <a class="indexterm" name="id425175"></a> 1621 1621 <em class="parameter"><code>application/cups.vnd-postscript</code></em>), which therefore also leads to the page accounting in 1622 1622 <em class="parameter"><code>/var/log/cups/page_log</code></em> not receiving the exact number of pages; instead the dummy page 1623 1623 number of “<span class="quote">1</span>” is logged in a standard setup). 1624 1624 </p></li><li><p>The Adobe driver has more options to misconfigure the 1625 <a class="indexterm" name="id4 01658"></a>1625 <a class="indexterm" name="id425204"></a> 1626 1626 PostScript generated by it (like setting it inadvertently to 1627 1627 <span class="guilabel">Optimize for Speed</span> instead of 1628 1628 <span class="guilabel">Optimize for Portability</span>, which 1629 1629 could lead to CUPS being unable to process it).</p></li><li><p>The CUPS PostScript driver output sent by Windows 1630 <a class="indexterm" name="id4 01683"></a>1630 <a class="indexterm" name="id425228"></a> 1631 1631 clients to the CUPS server is guaranteed to autotype 1632 1632 as the generic MIME type <em class="parameter"><code>application/postscript</code></em>, … … 1634 1634 correct number of pages in the <code class="filename">page_log</code> for 1635 1635 accounting and quota purposes.</p></li><li><p> 1636 <a class="indexterm" name="id4 01713"></a>1636 <a class="indexterm" name="id425259"></a> 1637 1637 The CUPS PostScript driver supports the sending of additional standard (IPP) print options by Windows 1638 1638 NT/200x/XP clients. Such additional print options are naming the CUPS standard <span class="emphasis"><em>banner … … 1647 1647 and simply ignore it).</p></li><li><p>The CUPS PostScript driver will be the heart of the 1648 1648 fully fledged CUPS IPP client for Windows NT/200x/XP to be released soon 1649 (probably alongside the first beta release for CUPS 1.2).</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 01750"></a>Run cupsaddsmb (Quiet Mode)</h3></div></div></div><p>1650 <a class="indexterm" name="id4 01758"></a>1651 <a class="indexterm" name="id4 01765"></a>1649 (probably alongside the first beta release for CUPS 1.2).</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id425295"></a>Run cupsaddsmb (Quiet Mode)</h3></div></div></div><p> 1650 <a class="indexterm" name="id425303"></a> 1651 <a class="indexterm" name="id425310"></a> 1652 1652 The <code class="literal">cupsaddsmb</code> command copies the needed files into your <em class="parameter"><code>[print$]</code></em> 1653 1653 share. Additionally, the PPD associated with this printer is copied from <code class="filename">/etc/cups/ppd/</code> 1654 1654 to <em class="parameter"><code>[print$]</code></em>. There the files wait for convenient Windows client installations via 1655 1655 Point'n'Print. Before we can run the command successfully, we need to be sure that we can authenticate toward 1656 Samba. If you have a small network, you are probably using user-level security (<a class=" indexterm" name="id401798"></a>security = user).1656 Samba. If you have a small network, you are probably using user-level security (<a class="link" href="smb.conf.5.html#SECURITY">security = user</a>). 1657 1657 </p><p> 1658 1658 Here is an example of a successfully run <code class="literal">cupsaddsmb</code> command: 1659 <a class="indexterm" name="id4 01815"></a>1660 <a class="indexterm" name="id4 01822"></a>1659 <a class="indexterm" name="id425364"></a> 1660 <a class="indexterm" name="id425371"></a> 1661 1661 </p><pre class="screen"> 1662 1662 <code class="prompt">root# </code><strong class="userinput"><code>cupsaddsmb -U root infotec_IS2027</code></strong> 1663 1663 Password for root required to access localhost via Samba: <strong class="userinput"><code>['secret']</code></strong> 1664 1664 </pre><p> 1665 <a class="indexterm" name="id4 01853"></a>1665 <a class="indexterm" name="id425402"></a> 1666 1666 To share <span class="emphasis"><em>all</em></span> printers and drivers, use the 1667 1667 <code class="option">-a</code> parameter instead of a printer name. Since 1668 1668 <code class="literal">cupsaddsmb</code> “<span class="quote">exports</span>” the printer drivers to Samba, it should be 1669 1669 obvious that it only works for queues with a CUPS driver associated. 1670 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 01880"></a>Run cupsaddsmb with Verbose Output</h3></div></div></div><p>1671 <a class="indexterm" name="id4 01888"></a>1670 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id425429"></a>Run cupsaddsmb with Verbose Output</h3></div></div></div><p> 1671 <a class="indexterm" name="id425437"></a> 1672 1672 Probably you want to see what's going on. Use the 1673 1673 <code class="option">-v</code> parameter to get a more verbose output. The … … 1675 1675 a line indicate that I inserted an artificial line break plus some 1676 1676 indentation here: 1677 <a class="indexterm" name="id4 01904"></a>1678 <a class="indexterm" name="id4 01913"></a>1677 <a class="indexterm" name="id425452"></a> 1678 <a class="indexterm" name="id425462"></a> 1679 1679 </p><pre class="screen"> 1680 1680 <code class="prompt">root# </code><strong class="userinput"><code>cupsaddsmb -U root -v infotec_2105</code></strong> … … 1745 1745 This will occur when the directories WIN40 and W32X86 already existed in the <em class="parameter"><code>[print$]</code></em> 1746 1746 driver download share (from a previous driver installation). These are harmless warning messages. 1747 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 02011"></a>Understanding cupsaddsmb</h3></div></div></div><p>1748 <a class="indexterm" name="id4 02019"></a>1747 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id425560"></a>Understanding cupsaddsmb</h3></div></div></div><p> 1748 <a class="indexterm" name="id425568"></a> 1749 1749 What has happened? What did <code class="literal">cupsaddsmb</code> do? There are five stages of the procedure: 1750 1750 </p><div class="orderedlist"><ol type="1"><li><p> 1751 <a class="indexterm" name="id4 02043"></a>1751 <a class="indexterm" name="id425592"></a> 1752 1752 Call the CUPS server via IPP and request the driver files and the PPD file for the named printer.</p></li><li><p>Store the files temporarily in the local TEMPDIR (as defined in <code class="filename">cupsd.conf</code>).</p></li><li><p>Connect via smbclient to the Samba server's <em class="parameter"><code>[print$]</code></em> share and put the files into the 1753 1753 share's WIN40 (for Windows 9x/Me) and W32X86 (for Windows NT/200x/XP) subdirectories.</p></li><li><p> 1754 <a class="indexterm" name="id4 02077"></a>1754 <a class="indexterm" name="id425626"></a> 1755 1755 Connect via rpcclient to the Samba server and execute the <code class="literal">adddriver</code> command with the correct parameters. 1756 1756 </p></li><li><p> 1757 <a class="indexterm" name="id4 02098"></a>1757 <a class="indexterm" name="id425646"></a> 1758 1758 Connect via rpcclient to the Samba server a second time and execute the <code class="literal">setdriver</code> command.</p></li></ol></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 1759 1759 You can run the <code class="literal">cupsaddsmb</code> utility with parameters to specify one remote host as Samba host … … 1764 1764 <code class="prompt">root# </code><strong class="userinput"><code>cupsaddsmb -H sambaserver -h cupsserver -v printer</code></strong> 1765 1765 </pre><p> 1766 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 02147"></a>How to Recognize If cupsaddsmb Completed Successfully</h3></div></div></div><p>1766 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id425696"></a>How to Recognize If cupsaddsmb Completed Successfully</h3></div></div></div><p> 1767 1767 You <span class="emphasis"><em>must</em></span> always check if the utility completed 1768 1768 successfully in all fields. You need at minimum these three messages … … 1786 1786 result was WERR_ACCESS_DENIED 1787 1787 </pre><p> 1788 it means that you might have set <a class=" indexterm" name="id402217"></a>use client driver = yesfor this printer.1788 it means that you might have set <a class="link" href="smb.conf.5.html#USECLIENTDRIVER">use client driver = yes</a> for this printer. 1789 1789 Setting it to “<span class="quote">no</span>” will solve the problem. Refer to the <code class="filename">smb.conf</code> man page for explanation of 1790 1790 the <em class="parameter"><code>use client driver</code></em>. … … 1793 1793 Therefore, we strongly recommend against use of the default quiet mode. It will hide any problems from you that 1794 1794 might occur. 1795 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 02254"></a>cupsaddsmb with a Samba PDC</h3></div></div></div><p>1796 <a class="indexterm" name="id4 02262"></a>1797 <a class="indexterm" name="id4 02269"></a>1795 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id425806"></a>cupsaddsmb with a Samba PDC</h3></div></div></div><p> 1796 <a class="indexterm" name="id425814"></a> 1797 <a class="indexterm" name="id425821"></a> 1798 1798 Can't get the standard <code class="literal">cupsaddsmb</code> command to run on a Samba PDC? Are you asked for the 1799 1799 password credential again and again, and the command just will not take off at all? Try one of these … … 1805 1805 </pre><p> 1806 1806 (Note the two backslashes: the first one is required to “<span class="quote">escape</span>” the second one). 1807 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 02332"></a>cupsaddsmb Flowchart</h3></div></div></div><p>1808 <a class="indexterm" name="id4 02339"></a>1809 <a class="indexterm" name="id4 02346"></a>1810 <a href="CUPS-printing.html#small14" title="Figure 22.16. cupsaddsmb Flowchart.">The cupsaddsmb Flowchart</a> shows a chart about the procedures, command flows, and1807 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id425884"></a>cupsaddsmb Flowchart</h3></div></div></div><p> 1808 <a class="indexterm" name="id425891"></a> 1809 <a class="indexterm" name="id425898"></a> 1810 <a class="link" href="CUPS-printing.html#small14" title="Figure 22.16. cupsaddsmb Flowchart.">The cupsaddsmb Flowchart</a> shows a chart about the procedures, command flows, and 1811 1811 data flows of the <code class="literal">cupaddsmb</code> command. Note again: cupsaddsmb is 1812 1812 not intended to, and does not work with, raw print queues! 1813 </p><div class="figure"><a name="small14"></a><p class="title"><b>Figure 22.16. cupsaddsmb Flowchart.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/14small.png" alt="cupsaddsmb Flowchart."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 02410"></a>Installing the PostScript Driver on a Client</h3></div></div></div><p>1814 <a class="indexterm" name="id4 02418"></a>1815 <a class="indexterm" name="id4 02425"></a>1813 </p><div class="figure"><a name="small14"></a><p class="title"><b>Figure 22.16. cupsaddsmb Flowchart.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/14small.png" alt="cupsaddsmb Flowchart."></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id425962"></a>Installing the PostScript Driver on a Client</h3></div></div></div><p> 1814 <a class="indexterm" name="id425970"></a> 1815 <a class="indexterm" name="id425977"></a> 1816 1816 After <code class="literal">cupsaddsmb</code> is completed, your driver is prepared for the clients to use. Here are the 1817 1817 steps you must perform to download and install it via Point'n'Print. From a Windows client, browse to the 1818 1818 CUPS/Samba server: 1819 1819 </p><div class="itemizedlist"><ul type="disc"><li><p> 1820 <a class="indexterm" name="id4 02446"></a>1820 <a class="indexterm" name="id425998"></a> 1821 1821 Open the <span class="guilabel">Printers</span> share of Samba in Network Neighborhood.</p></li><li><p>Right-click on the printer in question.</p></li><li><p>From the opening context menu select 1822 1822 <span class="guimenuitem">Install...</span> or … … 1828 1828 <code class="filename">\\SambaServer\PrinterName</code> entry in the drop-down list of available printers. 1829 1829 </p><p> 1830 <a class="indexterm" name="id4 02510"></a>1831 <a class="indexterm" name="id4 02517"></a>1832 <a class="indexterm" name="id4 02524"></a>1830 <a class="indexterm" name="id426062"></a> 1831 <a class="indexterm" name="id426069"></a> 1832 <a class="indexterm" name="id426076"></a> 1833 1833 <code class="literal">cupsaddsmb</code> will only reliably work with CUPS version 1.1.15 or higher and with Samba 1834 1834 version 2.2.4, or later. If it does not work, or if the automatic printer driver download to the clients does … … 1859 1859 instead of 3 (the latest ESP Ghostscript package handles Level 3 PostScript very well; Adobe). 1860 1860 </p></li><li><p> 1861 Say Yes to PostScript Error Handler (Adobe).</p></li></ul></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 02619"></a>Installing PostScript Driver Files Manually Using rpcclient</h2></div></div></div><p>1861 Say Yes to PostScript Error Handler (Adobe).</p></li></ul></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id426171"></a>Installing PostScript Driver Files Manually Using rpcclient</h2></div></div></div><p> 1862 1862 Of course, you can run all the commands that are embedded into the 1863 1863 cupsaddsmb convenience utility yourself, one by one, and upload … … 1865 1865 </p><div class="orderedlist"><ol type="1"><li><p>Prepare Samba (a CUPS print queue with the name of the 1866 1866 printer should be there. We are providing the driver now).</p></li><li><p>Copy all files to <em class="parameter"><code>[print$]</code></em>.</p></li><li><p> 1867 <a class="indexterm" name="id4 02655"></a>1867 <a class="indexterm" name="id426207"></a> 1868 1868 Run <code class="literal">rpcclient adddriver</code> 1869 1869 (for each client architecture you want to support).</p></li><li><p> 1870 <a class="indexterm" name="id4 02675"></a>1870 <a class="indexterm" name="id426227"></a> 1871 1871 Run <code class="literal">rpcclient setdriver.</code></p></li></ol></div><p> 1872 <a class="indexterm" name="id4 02694"></a>1873 <a class="indexterm" name="id4 02703"></a>1874 <a class="indexterm" name="id4 02712"></a>1875 <a class="indexterm" name="id4 02721"></a>1876 <a class="indexterm" name="id4 02730"></a>1872 <a class="indexterm" name="id426246"></a> 1873 <a class="indexterm" name="id426255"></a> 1874 <a class="indexterm" name="id426264"></a> 1875 <a class="indexterm" name="id426273"></a> 1876 <a class="indexterm" name="id426282"></a> 1877 1877 We are going to do this now. First, read the man page on <em class="parameter"><code>rpcclient</code></em> to get a first idea. 1878 1878 Look at all the printing-related subcommands: <code class="literal">enumprinters</code>, <code class="literal">enumdrivers</code>, … … 1881 1881 You can use it to query (and command) a Windows NT (or 200x/XP) PC, too. MS-RPC is used by Windows clients, 1882 1882 among other things, to benefit from the Point'n'Print features. Samba can now mimic this as well. 1883 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 02785"></a>A Check of the rpcclient man Page</h3></div></div></div><p>1883 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id426337"></a>A Check of the rpcclient man Page</h3></div></div></div><p> 1884 1884 First let's check the <em class="parameter"><code>rpcclient</code></em> man page. Here are two relevant passages: 1885 1885 </p><p> 1886 <a class="indexterm" name="id4 02803"></a>1887 <a class="indexterm" name="id4 02810"></a>1888 <a class="indexterm" name="id4 02816"></a>1886 <a class="indexterm" name="id426355"></a> 1887 <a class="indexterm" name="id426361"></a> 1888 <a class="indexterm" name="id426368"></a> 1889 1889 <code class="literal">adddriver <arch> <config></code> Execute an <code class="literal">AddPrinterDriver()</code> RPC 1890 1890 to install the printer driver information on the server. The driver files should already exist in the … … 1909 1909 RPC will fail. 1910 1910 </p><p> 1911 <a class="indexterm" name="id4 02887"></a>1912 <a class="indexterm" name="id4 02894"></a>1911 <a class="indexterm" name="id426439"></a> 1912 <a class="indexterm" name="id426445"></a> 1913 1913 <code class="literal">setdriver <printername> <drivername></code> Execute a <code class="literal">SetPrinter()</code> 1914 1914 command to update the printer driver associated with an installed printer. The printer driver must already be 1915 1915 correctly installed on the print server. 1916 1916 </p><p> 1917 <a class="indexterm" name="id4 02917"></a>1918 <a class="indexterm" name="id4 02924"></a>1917 <a class="indexterm" name="id426469"></a> 1918 <a class="indexterm" name="id426476"></a> 1919 1919 See also the <code class="literal">enumprinters</code> and <code class="literal">enumdrivers</code> commands to 1920 1920 obtain a list of installed printers and drivers. 1921 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 02945"></a>Understanding the rpcclient man Page</h3></div></div></div><p>1922 <a class="indexterm" name="id4 02953"></a>1921 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id426497"></a>Understanding the rpcclient man Page</h3></div></div></div><p> 1922 <a class="indexterm" name="id426505"></a> 1923 1923 The <span class="emphasis"><em>exact</em></span> format isn't made too clear by the man page, since you have to deal with some 1924 1924 parameters containing spaces. Here is a better description for it. We have line-broken the command and … … 1944 1944 access it from a UNIX workstation. We will query it with <code class="literal">rpcclient</code> to see what it tells us 1945 1945 and try to understand the man page more clearly. 1946 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 03037"></a>Producing an Example by Querying a Windows Box</h3></div></div></div><p>1947 <a class="indexterm" name="id4 03045"></a>1948 <a class="indexterm" name="id4 03055"></a>1946 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id426589"></a>Producing an Example by Querying a Windows Box</h3></div></div></div><p> 1947 <a class="indexterm" name="id426597"></a> 1948 <a class="indexterm" name="id426606"></a> 1949 1949 We could run <code class="literal">rpcclient</code> with a <code class="literal">getdriver</code> or a 1950 1950 <code class="literal">getprinter</code> subcommand (in level 3 verbosity) against it. Just sit down at a UNIX or Linux … … 1954 1954 </pre><p> 1955 1955 From the result it should become clear which is which. Here is an example from my installation: 1956 <a class="indexterm" name="id4 03103"></a>1956 <a class="indexterm" name="id426654"></a> 1957 1957 </p><pre class="screen"> 1958 1958 <code class="prompt">root# </code><strong class="userinput"><code>rpcclient -U'Danka%xxxx' W200xSERVER \ … … 1985 1985 drivers, we do not need any (nor would we for the Adobe PostScript driver); therefore, the field will get a 1986 1986 “<span class="quote">NULL</span>” entry. 1987 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 03163"></a>Requirements for adddriver and setdriver to Succeed</h3></div></div></div><p>1988 <a class="indexterm" name="id4 03171"></a>1989 <a class="indexterm" name="id4 03180"></a>1990 <a class="indexterm" name="id4 03187"></a>1987 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id426709"></a>Requirements for adddriver and setdriver to Succeed</h3></div></div></div><p> 1988 <a class="indexterm" name="id426717"></a> 1989 <a class="indexterm" name="id426726"></a> 1990 <a class="indexterm" name="id426733"></a> 1991 1991 From the man page (and from the quoted output of <code class="literal">cupsaddsmb</code> above) it becomes clear that 1992 1992 you need to have certain conditions in order to make the manual uploading and initializing of the driver files 1993 1993 succeed. The two <code class="literal">rpcclient</code> subcommands (<code class="literal">adddriver</code> and 1994 1994 <code class="literal">setdriver</code>) need to encounter the following preconditions to complete successfully: 1995 </p><div class="itemizedlist"><ul type="disc"><li><p>You are connected as <a class=" indexterm" name="id403227"></a>printer adminor root (this is1995 </p><div class="itemizedlist"><ul type="disc"><li><p>You are connected as <a class="link" href="smb.conf.5.html#PRINTERADMIN">printer admin</a> or root (this is 1996 1996 <span class="emphasis"><em>not</em></span> the “<span class="quote">Printer Operators</span>” group in NT, but the <span class="emphasis"><em>printer 1997 1997 admin</em></span> group as defined in the <em class="parameter"><code>[global]</code></em> section of <code class="filename">smb.conf</code>). … … 2005 2005 subdirectories.</p></li><li><p>The printer you are going to set up for the Windows 2006 2006 clients needs to be installed in CUPS already.</p></li><li><p> 2007 <a class="indexterm" name="id4 03328"></a>2008 <a class="indexterm" name="id4 03337"></a>2007 <a class="indexterm" name="id426877"></a> 2008 <a class="indexterm" name="id426886"></a> 2009 2009 The CUPS printer must be known to Samba; otherwise the <code class="literal">setdriver</code> subcommand fails with an 2010 2010 NT_STATUS_UNSUCCESSFUL error. To check if the printer is known by Samba, you may use the … … 2012 2012 proper update of the printer list until every smbd process had received a SIGHUP or was restarted. Remember 2013 2013 this in case you've created the CUPS printer just recently and encounter problems: try restarting Samba. 2014 </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 03371"></a>Manual Driver Installation in 15 Steps</h3></div></div></div><p>2014 </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id426920"></a>Manual Driver Installation in 15 Steps</h3></div></div></div><p> 2015 2015 We are going to install a printer driver now by manually executing all 2016 2016 required commands. Because this may seem a rather complicated process at 2017 2017 first, we go through the procedure step by step, explaining every 2018 2018 single action item as it comes up. 2019 </p><div class="procedure"><a name="id4 03382"></a><p class="title"><b>Procedure 22.2. Manual Driver Installation</b></p><ol type="1"><li><p class="title"><b>Install the printer on CUPS.</b></p><pre class="screen">2019 </p><div class="procedure"><a name="id426931"></a><p class="title"><b>Procedure 22.2. Manual Driver Installation</b></p><ol type="1"><li><p class="title"><b>Install the printer on CUPS.</b></p><pre class="screen"> 2020 2020 <code class="prompt">root# </code><strong class="userinput"><code>lpadmin -p mysmbtstprn -v socket://10.160.51.131:9100 -E \ 2021 2021 -P canonIR85.ppd</code></strong> … … 2026 2026 for this step. 2027 2027 </p></li><li><p class="title"><b>(Optional.) Check if the printer is recognized by Samba.</b></p><p> 2028 <a class="indexterm" name="id4 03435"></a>2028 <a class="indexterm" name="id426984"></a> 2029 2029 </p><pre class="screen"> 2030 2030 <code class="prompt">root# </code><strong class="userinput"><code>rpcclient -Uroot%xxxx -c 'enumprinters' localhost \ … … 2046 2046 list</span>” as defined in <code class="filename">smb.conf</code> for <em class="parameter"><code>[print$]</code></em>. 2047 2047 </p></li><li><p class="title"><b>(Optional.) Check if Samba knows a driver for the printer.</b></p><p> 2048 <a class="indexterm" name="id4 03526"></a>2049 <a class="indexterm" name="id4 03536"></a>2048 <a class="indexterm" name="id427075"></a> 2049 <a class="indexterm" name="id427085"></a> 2050 2050 </p><pre class="screen"> 2051 2051 <code class="prompt">root# </code><strong class="userinput"><code>rpcclient -Uroot%xxxx -c 'getprinter mysmbtstprn 2'\ … … 2103 2103 <em class="parameter"><code>[print$]</code></em>. 2104 2104 </p></li><li><p class="title"><b>Tell Samba that these are driver files (<code class="literal">adddriver</code>).</b></p><p> 2105 <a class="indexterm" name="id4 03706"></a>2105 <a class="indexterm" name="id427255"></a> 2106 2106 </p><pre class="screen"> 2107 2107 <code class="prompt">root# </code><strong class="userinput"><code>rpcclient -Uroot%xxxx -c 'adddriver "Windows NT x86" \ … … 2134 2134 subdirectory. Compare this with the situation after step 5. 2135 2135 </p></li><li><p class="title"><b>(Optional.) Verify if Samba now recognizes the driver.</b></p><p> 2136 <a class="indexterm" name="id4 03801"></a>2136 <a class="indexterm" name="id427350"></a> 2137 2137 </p><pre class="screen"> 2138 2138 <code class="prompt">root# </code><strong class="userinput"><code>rpcclient -Uroot%xxxx -c 'enumdrivers 3' \ … … 2149 2149 Remember, this command greps for the name you chose for the 2150 2150 driver in step 6. This command must succeed before you can proceed. 2151 </p></li><li><p>< font color="red"><title>Tell Samba which printer should use these driver files (<code class="literal">setdriver</code>).</title></font></p><p>2152 <a class="indexterm" name="id4 03852"></a>2151 </p></li><li><p><span style="color: red"><title>Tell Samba which printer should use these driver files (<code class="literal">setdriver</code>).</title></span></p><p> 2152 <a class="indexterm" name="id427401"></a> 2153 2153 </p><pre class="screen"> 2154 2154 <code class="prompt">root# </code><strong class="userinput"><code>rpcclient -Uroot%xxxx -c 'setdriver mysmbtstprn mydrivername' \ … … 2161 2161 <code class="literal">enumprinters</code> must find the printer. 2162 2162 </p></li><li><p class="title"><b>(Optional) Verify if Samba has recognized this association.</b></p><p> 2163 <a class="indexterm" name="id4 03907"></a>2164 <a class="indexterm" name="id4 03916"></a>2165 <a class="indexterm" name="id4 03926"></a>2163 <a class="indexterm" name="id427456"></a> 2164 <a class="indexterm" name="id427465"></a> 2165 <a class="indexterm" name="id427474"></a> 2166 2166 </p><pre class="screen"> 2167 2167 <code class="prompt">root# </code><strong class="userinput"><code>rpcclient -Uroot%xxxx -c 'getprinter mysmbtstprn 2' localhost \ … … 2203 2203 2204 2204 </pre><p> 2205 <a class="indexterm" name="id4 03993"></a>2205 <a class="indexterm" name="id427542"></a> 2206 2206 Compare these results with the ones from steps 2 and 3. Every one of these commands show the driver is installed. Even 2207 2207 the <code class="literal">enumprinters</code> command now lists the driver … … 2209 2209 </p></li><li><p class="title"><b>(Optional.) Tickle the driver into a correct 2210 2210 device mode.</b></p><p> 2211 <a class="indexterm" name="id4 04026"></a>2211 <a class="indexterm" name="id427575"></a> 2212 2212 You certainly know how to install the driver on the client. In case 2213 2213 you are not particularly familiar with Windows, here is a short … … 2232 2232 <span class="guilabel">landscape</span></em></span>), click on <span class="guibutton">Apply</span>, and change the setting back. 2233 2233 </p></li><li><p class="title"><b>Install the printer on a client (Point'n'Print).</b></p><p> 2234 <a class="indexterm" name="id4 04135"></a>2234 <a class="indexterm" name="id427684"></a> 2235 2235 </p><pre class="screen"> 2236 2236 <code class="prompt">C:\> </code><strong class="userinput"><code>rundll32 printui.dll,PrintUIEntry /in /n "\\sambaserver\mysmbtstprn"</code></strong> 2237 2237 </pre><p> 2238 2238 If it does not work, it could be a permissions problem with the <em class="parameter"><code>[print$]</code></em> share. 2239 </p></li><li><p class="title"><b>(Optional) Print a test page.</b></p><a class="indexterm" name="id4 04175"></a><pre class="screen">2239 </p></li><li><p class="title"><b>(Optional) Print a test page.</b></p><a class="indexterm" name="id427724"></a><pre class="screen"> 2240 2240 <code class="prompt">C:\> </code><strong class="userinput"><code>rundll32 printui.dll,PrintUIEntry /p /n "\\sambaserver\mysmbtstprn"</code></strong> 2241 2241 </pre><p> … … 2247 2247 </p></li><li><p class="title"><b>(Obligatory.) Enjoy. Jump. Celebrate your success.</b></p><pre class="screen"> 2248 2248 <code class="prompt">root# </code><strong class="userinput"><code>echo "Cheeeeerioooooo! Success..." >> /var/log/samba/log.smbd</code></strong> 2249 </pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 04250"></a>Troubleshooting Revisited</h3></div></div></div><p>2250 <a class="indexterm" name="id4 04258"></a>2249 </pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id427799"></a>Troubleshooting Revisited</h3></div></div></div><p> 2250 <a class="indexterm" name="id427807"></a> 2251 2251 The setdriver command will fail if in Samba's mind the queue is not 2252 2252 already there. A successful installation displys the promising message that the: … … 2259 2259 result was NT_STATUS_UNSUCCESSFUL 2260 2260 </code></p><p> 2261 <a class="indexterm" name="id4 04287"></a>2262 <a class="indexterm" name="id4 04294"></a>2261 <a class="indexterm" name="id427836"></a> 2262 <a class="indexterm" name="id427842"></a> 2263 2263 It is not good enough that you can see the queue in CUPS, using the <code class="literal">lpstat -p ir85wm</code> 2264 2264 command. A bug in most recent versions of Samba prevents the proper update of the queue list. The recognition … … 2266 2266 if this is the reason why Samba does not execute the <code class="literal">setdriver</code> command successfully, check 2267 2267 if Samba “<span class="quote">sees</span>” the printer: 2268 <a class="indexterm" name="id4 04319"></a>2268 <a class="indexterm" name="id427868"></a> 2269 2269 </p><pre class="screen"> 2270 2270 <code class="prompt">root# </code><strong class="userinput"><code>rpcclient transmeta -N -U'root%xxxx' -c 'enumprinters 0'|grep ir85wm</code></strong> … … 2272 2272 </pre><p> 2273 2273 An alternate command could be this: 2274 <a class="indexterm" name="id4 04347"></a>2274 <a class="indexterm" name="id427896"></a> 2275 2275 </p><pre class="screen"> 2276 2276 <code class="prompt">root# </code><strong class="userinput"><code>rpcclient transmeta -N -U'root%secret' -c 'getprinter ir85wm' </code></strong> … … 2282 2282 </pre><p> 2283 2283 By the way, you can use these commands, plus a few more, of course, to install drivers on remote Windows NT print servers too! 2284 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 04381"></a>The Printing <code class="filename">*.tdb</code> Files</h2></div></div></div><p>2285 <a class="indexterm" name="id4 04395"></a>2286 <a class="indexterm" name="id4 04402"></a>2287 <a class="indexterm" name="id4 04410"></a>2288 <a class="indexterm" name="id4 04419"></a>2289 <a class="indexterm" name="id4 04428"></a>2290 <a class="indexterm" name="id4 04437"></a>2291 <a class="indexterm" name="id4 04446"></a>2292 <a class="indexterm" name="id4 04455"></a>2293 <a class="indexterm" name="id4 04464"></a>2294 <a class="indexterm" name="id4 04473"></a>2295 <a class="indexterm" name="id4 04482"></a>2296 <a class="indexterm" name="id4 04491"></a>2297 <a class="indexterm" name="id4 04500"></a>2284 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id427930"></a>The Printing <code class="filename">*.tdb</code> Files</h2></div></div></div><p> 2285 <a class="indexterm" name="id427944"></a> 2286 <a class="indexterm" name="id427950"></a> 2287 <a class="indexterm" name="id427959"></a> 2288 <a class="indexterm" name="id427968"></a> 2289 <a class="indexterm" name="id427977"></a> 2290 <a class="indexterm" name="id427986"></a> 2291 <a class="indexterm" name="id427995"></a> 2292 <a class="indexterm" name="id428004"></a> 2293 <a class="indexterm" name="id428013"></a> 2294 <a class="indexterm" name="id428022"></a> 2295 <a class="indexterm" name="id428031"></a> 2296 <a class="indexterm" name="id428040"></a> 2297 <a class="indexterm" name="id428049"></a> 2298 2298 Some mystery is associated with the series of files with a tdb suffix appearing in every Samba installation. 2299 2299 They are <code class="filename">connections.tdb</code>, <code class="filename">printing.tdb</code>, … … 2302 2302 <code class="filename">messages.tdb</code> , <code class="filename">ntprinters.tdb</code>, <code class="filename">sessionid.tdb</code>, 2303 2303 and <code class="filename">secrets.tdb</code>. What is their purpose? 2304 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 04580"></a>Trivial Database Files</h3></div></div></div><p>2305 <a class="indexterm" name="id4 04588"></a>2304 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id428129"></a>Trivial Database Files</h3></div></div></div><p> 2305 <a class="indexterm" name="id428137"></a> 2306 2306 A Windows NT (print) server keeps track of all information needed to serve its duty toward its clients by 2307 2307 storing entries in the Windows registry. Client queries are answered by reading from the registry, … … 2312 2312 <code class="filename">ntprinters.tdb</code>, <code class="filename">printing.tdb</code>,<code class="filename">ntforms.tdb</code>, and 2313 2313 <code class="filename">ntdrivers.tdb</code>. 2314 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 04646"></a>Binary Format</h3></div></div></div><p>2314 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id428191"></a>Binary Format</h3></div></div></div><p> 2315 2315 <code class="filename">*.tdb</code> files are not human readable. They are written in a binary format. “<span class="quote">Why not 2316 2316 ASCII?</span>”, you may ask. “<span class="quote">After all, ASCII configuration files are a good and proven tradition on … … 2321 2321 <code class="filename">*.tdb</code> files allows for this provision. Many smbd processes may write to the same 2322 2322 <code class="filename">*.tdb</code> file at the same time. This wouldn't be possible with pure ASCII files. 2323 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 04707"></a>Losing <code class="filename">*.tdb</code> Files</h3></div></div></div><p>2323 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id428252"></a>Losing <code class="filename">*.tdb</code> Files</h3></div></div></div><p> 2324 2324 It is very important that all <code class="filename">*.tdb</code> files remain consistent over all write and read 2325 2325 accesses. However, it may happen that these files <span class="emphasis"><em>do</em></span> get corrupted. (A <code class="literal">kill -9 … … 2328 2328 only option. After that, you need to re-create all print-related setups unless you have made a backup of the 2329 2329 <code class="filename">*.tdb</code> files in time. 2330 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 04753"></a>Using <code class="literal">tdbbackup</code></h3></div></div></div><p>2331 <a class="indexterm" name="id4 04766"></a>2332 <a class="indexterm" name="id4 04777"></a>2330 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id428299"></a>Using <code class="literal">tdbbackup</code></h3></div></div></div><p> 2331 <a class="indexterm" name="id428311"></a> 2332 <a class="indexterm" name="id428322"></a> 2333 2333 Samba ships with a little utility that helps the root user of your system to backup your 2334 2334 <code class="filename">*.tdb</code> files. If you run it with no argument, it prints a usage message: … … 2357 2357 -rw------- 1 root root 40960 May 2 03:44 printing.tdb.bak 2358 2358 2359 </pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 04864"></a>CUPS Print Drivers from Linuxprinting.org</h2></div></div></div><p>2360 <a class="indexterm" name="id4 04872"></a>2359 </pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id428409"></a>CUPS Print Drivers from Linuxprinting.org</h2></div></div></div><p> 2360 <a class="indexterm" name="id428417"></a> 2361 2361 CUPS ships with good support for HP LaserJet-type printers. You can install the generic driver as follows: 2362 <a class="indexterm" name="id4 04880"></a>2362 <a class="indexterm" name="id428425"></a> 2363 2363 </p><pre class="screen"> 2364 2364 <code class="prompt">root# </code><strong class="userinput"><code>lpadmin -p laserjet4plus -v parallel:/dev/lp0 -E -m laserjet.ppd</code></strong> … … 2371 2371 LaserJet-compatible model. It constitutes a sort of “<span class="quote">least common denominator</span>” of all the models. 2372 2372 If for some reason you must pay for the commercially available ESP Print Pro drivers, your first move should 2373 be to consult the database on the <a href="http://www.linuxprinting.org/printer_list.cgi" target="_top">Linuxprinting</a> Web site. Linuxprinting.org has2373 be to consult the database on the <a class="ulink" href="http://www.linuxprinting.org/printer_list.cgi" target="_top">Linuxprinting</a> Web site. Linuxprinting.org has 2374 2374 excellent recommendations about which driver is best used for each printer. Its database is kept current by 2375 2375 the tireless work of Till Kamppeter from Mandrakesoft, who is also the principal author of the 2376 2376 <code class="literal">foomatic-rip</code> utility. 2377 2377 </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 2378 <a class="indexterm" name="id4 04961"></a>2379 <a class="indexterm" name="id4 04967"></a>2380 <a class="indexterm" name="id4 04974"></a>2378 <a class="indexterm" name="id428506"></a> 2379 <a class="indexterm" name="id428513"></a> 2380 <a class="indexterm" name="id428520"></a> 2381 2381 The former <code class="literal">cupsomatic</code> concept is now being replaced by the new successor, a much more 2382 2382 powerful <code class="literal">foomatic-rip</code>. <code class="literal">cupsomatic</code> is no longer maintained. Here is the 2383 new URL to the <a href="http://www.linuxprinting.org/driver_list.cgi" target="_top">Foomatic-3.0</a>2383 new URL to the <a class="ulink" href="http://www.linuxprinting.org/driver_list.cgi" target="_top">Foomatic-3.0</a> 2384 2384 database. If you upgrade to <code class="literal">foomatic-rip</code>, remember to also upgrade to the new-style PPDs 2385 2385 for your Foomatic-driven printers. foomatic-rip will not work with PPDs generated for the old … … 2387 2387 are also intended to be used by Samba and the cupsaddsmb utility, to provide the driver files for the Windows 2388 2388 clients! 2389 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 05024"></a>foomatic-rip and Foomatic Explained</h3></div></div></div><p>2390 <a class="indexterm" name="id4 05032"></a>2391 <a class="indexterm" name="id4 05039"></a>2392 Nowadays, most Linux distributions rely on the utilities from the <a href="http://www.linuxprinting.org/" target="_top">Linuxprinting.org</a> to create their printing-related software2389 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id428570"></a>foomatic-rip and Foomatic Explained</h3></div></div></div><p> 2390 <a class="indexterm" name="id428577"></a> 2391 <a class="indexterm" name="id428584"></a> 2392 Nowadays, most Linux distributions rely on the utilities from the <a class="ulink" href="http://www.linuxprinting.org/" target="_top">Linuxprinting.org</a> to create their printing-related software 2393 2393 (which, by the way, works on all UNIXes and on Mac OS X and Darwin, too). The utilities from this sire have a 2394 2394 very end-user-friendly interface that allows for an easy update of drivers and PPDs for all supported models, … … 2396 2396 few years. 2397 2397 </p><p> 2398 Recently, Foomatic has achieved the astonishing milestone of <a href="http://www.linuxprinting.org/printer_list.cgi?make=Anyone" target="_top">1,000 listed</a> printer models.2398 Recently, Foomatic has achieved the astonishing milestone of <a class="ulink" href="http://www.linuxprinting.org/printer_list.cgi?make=Anyone" target="_top">1,000 listed</a> printer models. 2399 2399 Linuxprinting.org keeps all the important facts about printer drivers, supported models, and which options are 2400 available for the various driver/printer combinations in its <a href="http://www.linuxprinting.org/foomatic.html" target="_top">Foomatic</a> database. Currently there are <ahref="http://www.linuxprinting.org/driver_list.cgi" target="_top">245 drivers</a> in the database. Many drivers support2400 available for the various driver/printer combinations in its <a class="ulink" href="http://www.linuxprinting.org/foomatic.html" target="_top">Foomatic</a> database. Currently there are <a class="ulink" href="http://www.linuxprinting.org/driver_list.cgi" target="_top">245 drivers</a> in the database. Many drivers support 2401 2401 various models, and many models may be driven by different drivers its your choice! 2402 </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id4 05085"></a>690 “<span class="quote">Perfect</span>” Printers</h4></div></div></div><p>2403 <a class="indexterm" name="id4 05096"></a>2402 </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id428630"></a>690 “<span class="quote">Perfect</span>” Printers</h4></div></div></div><p> 2403 <a class="indexterm" name="id428641"></a> 2404 2404 At present, there are 690 devices dubbed as working perfectly: 181 are <span class="emphasis"><em>mostly</em></span> perfect, 96 2405 2405 are <span class="emphasis"><em>partially</em></span> perfect, and 46 are paperweights. Keeping in mind that most of these are … … 2409 2409 achievement! Three years ago the number was not more than 500, and Linux or UNIX printing at the time wasn't 2410 2410 anywhere near the quality it is today. 2411 </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id4 05121"></a>How the Printing HOWTO Started It All</h4></div></div></div><p>2412 A few years ago <a href="http://www2.picante.com/" target="_top">Grant Taylor</a> started it all. The2413 roots of today's Linuxprinting.org are in the first <a href="http://www.linuxprinting.org/foomatic2.9/howto/" target="_top">Linux Printing HOWTO</a> that he authored. As a2411 </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id428666"></a>How the Printing HOWTO Started It All</h4></div></div></div><p> 2412 A few years ago <a class="ulink" href="http://www2.picante.com/" target="_top">Grant Taylor</a> started it all. The 2413 roots of today's Linuxprinting.org are in the first <a class="ulink" href="http://www.linuxprinting.org/foomatic2.9/howto/" target="_top">Linux Printing HOWTO</a> that he authored. As a 2414 2414 side-project to this document, which served many Linux users and admins to guide their first steps in this 2415 2415 complicated and delicate setup (to a scientist, printing is “<span class="quote">applying a structured deposition of … … 2418 2418 This database became the core component of today's Foomatic collection of tools and data. In the meantime, it 2419 2419 has moved to an XML representation of the data. 2420 </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id4 05151"></a>Foomatic's Strange Name</h4></div></div></div><p>2421 <a class="indexterm" name="id4 05159"></a>2420 </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id428697"></a>Foomatic's Strange Name</h4></div></div></div><p> 2421 <a class="indexterm" name="id428705"></a> 2422 2422 “<span class="quote">Why the funny name?</span>” you ask. When it really took off, around spring 2000, CUPS was far less 2423 2423 popular than today, and most systems used LPD, LPRng, or even PDQ to print. CUPS shipped with a few generic … … 2437 2437 printing was the only one available).</p></li><li><p>It gave all the advanced CUPS options (Web interface, 2438 2438 GUI driver configurations) to users wanting (or needing) to use 2439 Ghostscript filters.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id4 05215"></a>cupsomatic, pdqomatic, lpdomatic, directomatic</h4></div></div></div><p>2440 <a class="indexterm" name="id4 05223"></a>2441 <a class="indexterm" name="id4 05230"></a>2442 <a class="indexterm" name="id4 05237"></a>2443 CUPS worked through a quickly hacked-up filter script named <a href="http://www.linuxprinting.org/download.cgi?filename=cupsomatic&show=0" target="_top">cupsomatic</a>. cupsomatic2439 Ghostscript filters.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id428763"></a>cupsomatic, pdqomatic, lpdomatic, directomatic</h4></div></div></div><p> 2440 <a class="indexterm" name="id428771"></a> 2441 <a class="indexterm" name="id428778"></a> 2442 <a class="indexterm" name="id428785"></a> 2443 CUPS worked through a quickly hacked-up filter script named <a class="ulink" href="http://www.linuxprinting.org/download.cgi?filename=cupsomatic&show=0" target="_top">cupsomatic</a>. cupsomatic 2444 2444 ran the printfile through Ghostscript, constructing automatically the rather complicated command line needed. 2445 2445 It just needed to be copied into the CUPS system to make it work. To configure the way cupsomatic controls the … … 2447 2447 database. For CUPS and the respective printer/filter combo, another Perl script named CUPS-O-Matic did the PPD 2448 2448 generation. After that was working, Taylor implemented within a few days a similar thing for two other 2449 spoolers. Names chosen for the config-generator scripts were <a href="http://www.linuxprinting.org/download.cgi?filename=lpdomatic&show=0" target="_top">PDQ-O-Matic</a> (for PDQ)2450 and <a href="http://www.linuxprinting.org/download.cgi?filename=lpdomatic&show=0" target="_top">LPD-O-Matic</a>2449 spoolers. Names chosen for the config-generator scripts were <a class="ulink" href="http://www.linuxprinting.org/download.cgi?filename=lpdomatic&show=0" target="_top">PDQ-O-Matic</a> (for PDQ) 2450 and <a class="ulink" href="http://www.linuxprinting.org/download.cgi?filename=lpdomatic&show=0" target="_top">LPD-O-Matic</a> 2451 2451 (for you guessed it LPD); the configuration here didn't use PPDs but other 2452 2452 spooler-specific files. 2453 2453 </p><p> 2454 From late summer of that year, <a href="http://www.linuxprinting.org/till/" target="_top">Till Kamppeter</a> started2455 to put work into the database. Kamppeter had been newly employed by <a href="http://www.mandrakesoft.com/" target="_top">Mandrakesoft</a> to convert its printing system over to CUPS, after2456 they had seen his <a href="http://www.fltk.org/" target="_top">FLTK</a>-based <ahref="http://cups.sourceforge.net/xpp/" target="_top">XPP</a> (a GUI front-end to the CUPS lp-command). He added a huge2457 amount of new information and new printers. He also developed the support for other spoolers, like <a href="http://ppr.sourceforge.net/" target="_top">PPR</a> (via ppromatic), <a href="http://sourceforge.net/projects/lpr/" target="_top">GNUlpr</a>, and <a href="http://www.lprng.org/" target="_top">LPRng</a> (both via an extended lpdomatic) and spooler-less printing (<ahref="http://www.linuxprinting.org/download.cgi?filename=directomatic&show=0" target="_top">directomatic</a>).2454 From late summer of that year, <a class="ulink" href="http://www.linuxprinting.org/till/" target="_top">Till Kamppeter</a> started 2455 to put work into the database. Kamppeter had been newly employed by <a class="ulink" href="http://www.mandrakesoft.com/" target="_top">Mandrakesoft</a> to convert its printing system over to CUPS, after 2456 they had seen his <a class="ulink" href="http://www.fltk.org/" target="_top">FLTK</a>-based <a class="ulink" href="http://cups.sourceforge.net/xpp/" target="_top">XPP</a> (a GUI front-end to the CUPS lp-command). He added a huge 2457 amount of new information and new printers. He also developed the support for other spoolers, like <a class="ulink" href="http://ppr.sourceforge.net/" target="_top">PPR</a> (via ppromatic), <a class="ulink" href="http://sourceforge.net/projects/lpr/" target="_top">GNUlpr</a>, and <a class="ulink" href="http://www.lprng.org/" target="_top">LPRng</a> (both via an extended lpdomatic) and spooler-less printing (<a class="ulink" href="http://www.linuxprinting.org/download.cgi?filename=directomatic&show=0" target="_top">directomatic</a>). 2458 2458 </p><p> 2459 2459 So, to answer your question, “<span class="quote">Foomatic</span>” is the general name for all the overlapping code and data … … 2461 2461 structures attached to Linuxprinting.org PPDs for CUPS. It had a different “<span class="quote">*omatic</span>” script for 2462 2462 every spooler, as well as different printer configuration files. 2463 </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id4 05353"></a>The <span class="emphasis"><em>Grand Unification</em></span> Achieved</h4></div></div></div><p>2464 <a class="indexterm" name="id4 05364"></a>2463 </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id428901"></a>The <span class="emphasis"><em>Grand Unification</em></span> Achieved</h4></div></div></div><p> 2464 <a class="indexterm" name="id428913"></a> 2465 2465 This has all changed in Foomatic versions 2.9 (beta) and released as “<span class="quote">stable</span>” 3.0. It has now 2466 achieved the convergence of all *omatic scripts and is called the <a href="http://www.linuxprinting.org/foomatic2.9/download.cgi?filename=foomatic-rip&show=0" target="_top">foomatic-rip</a>.2466 achieved the convergence of all *omatic scripts and is called the <a class="ulink" href="http://www.linuxprinting.org/foomatic2.9/download.cgi?filename=foomatic-rip&show=0" target="_top">foomatic-rip</a>. 2467 2467 This single script is the unification of the previously different spooler-specific *omatic scripts. 2468 2468 foomatic-rip is used by all the different spoolers alike, and because it can read PPDs (both the original … … 2471 2471 there is improved media type and source support paper sizes and trays are easier to configure. 2472 2472 </p><p> 2473 <a class="indexterm" name="id4 05393"></a>2474 <a class="indexterm" name="id4 05400"></a>2475 <a class="indexterm" name="id4 05406"></a>2473 <a class="indexterm" name="id428942"></a> 2474 <a class="indexterm" name="id428948"></a> 2475 <a class="indexterm" name="id428955"></a> 2476 2476 Also, the new generation of Linuxprinting.org PPDs no longer contains Perl data structures. If you are a 2477 2477 distro maintainer and have used the previous version of Foomatic, you may want to give the new one a spin, but 2478 remember to generate a new-version set of PPDs via the new <a href="http://www.linuxprinting.org/download/foomatic/foomatic-db-engine-3.0.0beta1.tar.gz" target="_top">foomatic-db-engine!</a>.2479 Individual users just need to generate a single new PPD specific to their model by <a href="http://www.linuxprinting.org/kpfeifle/LinuxKongress2002/Tutorial/II.Foomatic-User/II.tutorial-handout-foomatic-user.html" target="_top">following2478 remember to generate a new-version set of PPDs via the new <a class="ulink" href="http://www.linuxprinting.org/download/foomatic/foomatic-db-engine-3.0.0beta1.tar.gz" target="_top">foomatic-db-engine!</a>. 2479 Individual users just need to generate a single new PPD specific to their model by <a class="ulink" href="http://www.linuxprinting.org/kpfeifle/LinuxKongress2002/Tutorial/II.Foomatic-User/II.tutorial-handout-foomatic-user.html" target="_top">following 2480 2480 the steps</a> outlined in the Foomatic tutorial or in this chapter. This new development is truly amazing. 2481 2481 </p><p> 2482 <a class="indexterm" name="id4 05433"></a>2483 <a class="indexterm" name="id4 05440"></a>2484 <a class="indexterm" name="id4 05447"></a>2482 <a class="indexterm" name="id428982"></a> 2483 <a class="indexterm" name="id428989"></a> 2484 <a class="indexterm" name="id428995"></a> 2485 2485 foomatic-rip is a very clever wrapper around the need to run Ghostscript with a different syntax, options, 2486 2486 device selections, and/or filters for each different printer or spooler. At the same time, it can read the PPD … … 2490 2490 printing on media drawn from different paper trays within the same job (in both cases, even where there is no 2491 2491 support for this from Windows-based vendor printer drivers). 2492 </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id4 05462"></a>Driver Development Outside</h4></div></div></div><p>2493 <a class="indexterm" name="id4 05470"></a>2492 </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id429010"></a>Driver Development Outside</h4></div></div></div><p> 2493 <a class="indexterm" name="id429018"></a> 2494 2494 Most driver development itself does not happen within Linuxprinting.org. Drivers are written by independent 2495 2495 maintainers. Linuxprinting.org just pools all the information and stores it in its database. In addition, it … … 2499 2499 Speaking of the different driver development groups, most of the work is currently done in three projects: 2500 2500 </p><div class="itemizedlist"><ul type="disc"><li><p> 2501 <a class="indexterm" name="id4 05490"></a>2502 <a href="http://www-124.ibm.com/developerworks/oss/linux/projects/omni/" target="_top">Omni</a>2501 <a class="indexterm" name="id429039"></a> 2502 <a class="ulink" href="http://www-124.ibm.com/developerworks/oss/linux/projects/omni/" target="_top">Omni</a> 2503 2503 a free software project by IBM that tries to convert its printer 2504 2504 driver knowledge from good-ol' OS/2 times into a modern, modular, 2505 2505 universal driver architecture for Linux/UNIX (still beta). This 2506 2506 currently supports 437 models.</p></li><li><p> 2507 <a class="indexterm" name="id4 05513"></a>2508 <a href="http://hpinkjet.sf.net/" target="_top">HPIJS</a>2507 <a class="indexterm" name="id429061"></a> 2508 <a class="ulink" href="http://hpinkjet.sf.net/" target="_top">HPIJS</a> 2509 2509 a free software project by HP to provide the support for its own 2510 2510 range of models (very mature, printing in most cases is perfect and 2511 2511 provides true photo quality). This currently supports 369 2512 2512 models.</p></li><li><p> 2513 <a class="indexterm" name="id4 05534"></a>2514 <a href="http://gimp-print.sf.net/" target="_top">Gimp-Print</a> a free software2513 <a class="indexterm" name="id429082"></a> 2514 <a class="ulink" href="http://gimp-print.sf.net/" target="_top">Gimp-Print</a> a free software 2515 2515 effort, started by Michael Sweet (also lead developer for CUPS), now 2516 2516 directed by Robert Krawitz, which has achieved an amazing level of 2517 2517 photo print quality (many Epson users swear that its quality is 2518 2518 better than the vendor drivers provided by Epson for the Microsoft 2519 platforms). This currently supports 522 models.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id4 05555"></a>Forums, Downloads, Tutorials, Howtos (Also for Mac OS X and Commercial UNIX)</h4></div></div></div><p>2519 platforms). This currently supports 522 models.</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id429104"></a>Forums, Downloads, Tutorials, Howtos (Also for Mac OS X and Commercial UNIX)</h4></div></div></div><p> 2520 2520 Linuxprinting.org today is the one-stop shop to download printer drivers. Look for printer information and 2521 <a href="http://www.linuxprinting.org//kpfeifle/LinuxKongress2002/Tutorial/" target="_top">tutorials</a> or solve2522 printing problems in its popular <a href="http://www.linuxprinting.org/newsportal/" target="_top">forums</a>. This2523 forum is not just for GNU/Linux users, but admins of <a href="http://www.linuxprinting.org/macosx/" target="_top">2521 <a class="ulink" href="http://www.linuxprinting.org//kpfeifle/LinuxKongress2002/Tutorial/" target="_top">tutorials</a> or solve 2522 printing problems in its popular <a class="ulink" href="http://www.linuxprinting.org/newsportal/" target="_top">forums</a>. This 2523 forum is not just for GNU/Linux users, but admins of <a class="ulink" href="http://www.linuxprinting.org/macosx/" target="_top"> 2524 2524 commercial UNIX systems</a> are also going there, and the relatively new 2525 <a href="http://www.linuxprinting.org/newsportal/thread.php3?name=linuxprinting.macosx.general" target="_top">Mac OS X2525 <a class="ulink" href="http://www.linuxprinting.org/newsportal/thread.php3?name=linuxprinting.macosx.general" target="_top">Mac OS X 2526 2526 forum</a> has turned out to be one of the most frequented forums after only a few weeks. 2527 2527 </p><p> 2528 <a class="indexterm" name="id4 05594"></a>2529 <a class="indexterm" name="id4 05601"></a>2530 <a class="indexterm" name="id4 05607"></a>2528 <a class="indexterm" name="id429142"></a> 2529 <a class="indexterm" name="id429149"></a> 2530 <a class="indexterm" name="id429156"></a> 2531 2531 Linuxprinting.org and the Foomatic driver wrappers around Ghostscript are now a standard tool-chain for 2532 2532 printing on all the important distros. Most of them also have CUPS underneath. While in recent years most … … 2537 2537 Till Kamppeter from Mandrakesoft is doing an excellent job in his spare time to maintain Linuxprinting.org and 2538 2538 Foomatic. So if you use it often, please send him a note showing your appreciation. 2539 </p></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id4 05626"></a>Foomatic Database-Generated PPDs</h4></div></div></div><p>2540 <a class="indexterm" name="id4 05634"></a>2541 <a class="indexterm" name="id4 05641"></a>2542 <a class="indexterm" name="id4 05648"></a>2543 <a class="indexterm" name="id4 05655"></a>2544 <a class="indexterm" name="id4 05662"></a>2545 <a class="indexterm" name="id4 05668"></a>2546 <a class="indexterm" name="id4 05675"></a>2547 <a class="indexterm" name="id4 05682"></a>2548 <a class="indexterm" name="id4 05689"></a>2539 </p></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id429175"></a>Foomatic Database-Generated PPDs</h4></div></div></div><p> 2540 <a class="indexterm" name="id429183"></a> 2541 <a class="indexterm" name="id429190"></a> 2542 <a class="indexterm" name="id429196"></a> 2543 <a class="indexterm" name="id429203"></a> 2544 <a class="indexterm" name="id429210"></a> 2545 <a class="indexterm" name="id429217"></a> 2546 <a class="indexterm" name="id429224"></a> 2547 <a class="indexterm" name="id429230"></a> 2548 <a class="indexterm" name="id429237"></a> 2549 2549 The Foomatic database is an amazing piece of ingenuity in itself. Not only does it keep the printer and driver 2550 2550 information, but it is organized in a way that it can generate PPD files on the fly from its internal … … 2559 2559 ask from Ghostscript to convert the PostScript print job into a raster format ready for the target device. 2560 2560 This usage of PPDs to describe the options of non-PostScript printers was the invention of the CUPS 2561 developers. The rest is easy. GUI tools (like KDE's marvelous <a href="http://printing.kde.org/overview/kprinter.phtml" target="_top">kprinter</a> or the GNOME <ahref="http://gtklp.sourceforge.net/" target="_top">gtklp</a> xpp and the CUPS Web interface) read the PPD as well and use2561 developers. The rest is easy. GUI tools (like KDE's marvelous <a class="ulink" href="http://printing.kde.org/overview/kprinter.phtml" target="_top">kprinter</a> or the GNOME <a class="ulink" href="http://gtklp.sourceforge.net/" target="_top">gtklp</a> xpp and the CUPS Web interface) read the PPD as well and use 2562 2562 this information to present the available settings to the user as an intuitive menu selection. 2563 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 05729"></a>foomatic-rip and Foomatic PPD Download and Installation</h3></div></div></div><p>2563 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id429283"></a>foomatic-rip and Foomatic PPD Download and Installation</h3></div></div></div><p> 2564 2564 Here are the steps to install a foomatic-rip-driven LaserJet 4 Plus-compatible 2565 2565 printer in CUPS (note that recent distributions of SuSE, UnitedLinux and … … 2567 2567 <code class="literal">foomatic-rip</code> utility. Going directly to 2568 2568 Linuxprinting.org ensures that you get the latest driver/PPD files). 2569 </p><div class="itemizedlist"><ul type="disc"><li><p>Open your browser at the Linuxprinting.org printer list <a href="http://www.linuxprinting.org/printer_list.cgi" target="_top">page.</a>2569 </p><div class="itemizedlist"><ul type="disc"><li><p>Open your browser at the Linuxprinting.org printer list <a class="ulink" href="http://www.linuxprinting.org/printer_list.cgi" target="_top">page.</a> 2570 2570 </p></li><li><p>Check the complete list of printers in the 2571 <a href="http://www.linuxprinting.org/printer_list.cgi?make=Anyone" target="_top">database.</a>.2571 <a class="ulink" href="http://www.linuxprinting.org/printer_list.cgi?make=Anyone" target="_top">database.</a>. 2572 2572 </p></li><li><p>Select your model and click on the link. 2573 2573 </p></li><li><p>You'll arrive at a page listing all drivers working with this … … 2575 2575 recommended driver. Try this one first). 2576 2576 </p></li><li><p>In our case (HP LaserJet 4 Plus), we'll arrive at the default driver for the 2577 <a href="http://www.linuxprinting.org/show_printer.cgi?recnum=HP-LaserJet_4_Plus" target="_top">HP-LaserJet 4 Plus.</a>2577 <a class="ulink" href="http://www.linuxprinting.org/show_printer.cgi?recnum=HP-LaserJet_4_Plus" target="_top">HP-LaserJet 4 Plus.</a> 2578 2578 </p></li><li><p>The recommended driver is ljet4.</p></li><li><p>Several links are provided here. You should visit them all if you 2579 2579 are not familiar with the Linuxprinting.org database. 2580 2580 </p></li><li><p>There is a link to the database page for the 2581 <a href="http://www.linuxprinting.org/show_driver.cgi?driver=ljet4" target="_top">ljet4</a>.2581 <a class="ulink" href="http://www.linuxprinting.org/show_driver.cgi?driver=ljet4" target="_top">ljet4</a>. 2582 2582 On the driver's page, you'll find important and detailed information 2583 2583 about how to use that driver within the various available 2584 2584 spoolers.</p></li><li><p>Another link may lead you to the home page of the 2585 2585 author of the driver.</p></li><li><p>Important links are the ones that provide hints with 2586 setup instructions for <a href="http://www.linuxprinting.org/cups-doc.html" target="_top">CUPS</a>;2587 <a href="http://www.linuxprinting.org/pdq-doc.html" target="_top">PDQ</a>;2588 <a href="http://www.linuxprinting.org/lpd-doc.html" target="_top">LPD, LPRng, and GNUlpr</a>);2589 as well as <a href="http://www.linuxprinting.org/ppr-doc.html" target="_top">PPR</a>2590 or “<span class="quote">spoolerless</span>” <a href="http://www.linuxprinting.org/direct-doc.html" target="_top">printing</a>.2586 setup instructions for <a class="ulink" href="http://www.linuxprinting.org/cups-doc.html" target="_top">CUPS</a>; 2587 <a class="ulink" href="http://www.linuxprinting.org/pdq-doc.html" target="_top">PDQ</a>; 2588 <a class="ulink" href="http://www.linuxprinting.org/lpd-doc.html" target="_top">LPD, LPRng, and GNUlpr</a>); 2589 as well as <a class="ulink" href="http://www.linuxprinting.org/ppr-doc.html" target="_top">PPR</a> 2590 or “<span class="quote">spoolerless</span>” <a class="ulink" href="http://www.linuxprinting.org/direct-doc.html" target="_top">printing</a>. 2591 2591 </p></li><li><p>You can view the PPD in your browser through this link: 2592 <a href="http://www.linuxprinting.org/ppd-o-matic.cgi?driver=ljet4&printer=HP-LaserJet_4_Plus&show=1" target="_top">http://www.linuxprinting.org/ppd-o-matic.cgi?driver=ljet4&printer=HP-LaserJet_4_Plus&show=1</a>2592 <a class="ulink" href="http://www.linuxprinting.org/ppd-o-matic.cgi?driver=ljet4&printer=HP-LaserJet_4_Plus&show=1" target="_top">http://www.linuxprinting.org/ppd-o-matic.cgi?driver=ljet4&printer=HP-LaserJet_4_Plus&show=1</a> 2593 2593 </p></li><li><p>Most importantly, you can also generate and download 2594 the <a href="http://www.linuxprinting.org/ppd-o-matic.cgi?driver=ljet4&printer=HP-LaserJet_4_Plus&show=0" target="_top">PPD</a>.2594 the <a class="ulink" href="http://www.linuxprinting.org/ppd-o-matic.cgi?driver=ljet4&printer=HP-LaserJet_4_Plus&show=0" target="_top">PPD</a>. 2595 2595 </p></li><li><p>The PPD contains all the information needed to use our 2596 2596 model and the driver; once installed, this works transparently … … 2598 2598 and so on, from the Web-based menu, or from the print dialog GUI, or from 2599 2599 the command line.</p></li><li><p>If you ended up on the drivers 2600 <a href="http://www.linuxprinting.org/show_driver.cgi?driver=ljet4" target="_top">page</a>,2600 <a class="ulink" href="http://www.linuxprinting.org/show_driver.cgi?driver=ljet4" target="_top">page</a>, 2601 2601 you can choose to use the “<span class="quote">PPD-O-Matic</span>” online PPD generator 2602 2602 program.</p></li><li><p>Select the exact model and check either <span class="guilabel">Download</span> or … … 2627 2627 foomatic-rip. 2628 2628 </p></li><li><p>The foomatic-rip Perl script itself also makes some 2629 interesting <a href="http://www.linuxprinting.org/foomatic2.9/download.cgi?filename=foomatic-rip&show=1" target="_top">reading</a>2629 interesting <a class="ulink" href="http://www.linuxprinting.org/foomatic2.9/download.cgi?filename=foomatic-rip&show=1" target="_top">reading</a> 2630 2630 because it is well documented by Kamppeter's in-line comments (even 2631 2631 non-Perl hackers will learn quite a bit about printing by reading … … 2654 2654 the driver/model) contain support for a certain device representing 2655 2655 the selected driver for your model (as shown by <code class="literal">gs -h</code>).</p></li><li><p>foomatic-rip needs a new version of PPDs (PPD versions 2656 produced for cupsomatic do not work with foomatic-rip).</p></li></ul></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 06151"></a>Page Accounting with CUPS</h2></div></div></div><p>2657 <a class="indexterm" name="id4 06159"></a>2656 produced for cupsomatic do not work with foomatic-rip).</p></li></ul></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id429705"></a>Page Accounting with CUPS</h2></div></div></div><p> 2657 <a class="indexterm" name="id429713"></a> 2658 2658 Often there are questions regarding print quotas where Samba users (that is, Windows clients) should not be 2659 2659 able to print beyond a certain number of pages or data volume per day, week, or month. This feature is … … 2663 2663 Of course one could hack things with one's own scripts. But then there is CUPS. CUPS supports quotas that can 2664 2664 be based on the size of jobs or on the number of pages or both, and can span any time period you want. 2665 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 06181"></a>Setting Up Quotas</h3></div></div></div><p>2666 <a class="indexterm" name="id4 06189"></a>2665 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id429735"></a>Setting Up Quotas</h3></div></div></div><p> 2666 <a class="indexterm" name="id429742"></a> 2667 2667 This is an example command of how root would set a print quota in CUPS, assuming an existing printer named 2668 2668 “<span class="quote">quotaprinter</span>”: 2669 <a class="indexterm" name="id4 06203"></a>2669 <a class="indexterm" name="id429756"></a> 2670 2670 </p><pre class="screen"> 2671 2671 <code class="prompt">root# </code><strong class="userinput"><code>lpadmin -p quotaprinter -o job-quota-period=604800 \ … … 2674 2674 This would limit every single user to print no more than 100 pages or 1024 KB of 2675 2675 data (whichever comes first) within the last 604,800 seconds ( = 1 week). 2676 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 06232"></a>Correct and Incorrect Accounting</h3></div></div></div><p>2676 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id429785"></a>Correct and Incorrect Accounting</h3></div></div></div><p> 2677 2677 For CUPS to count correctly, the printfile needs to pass the CUPS pstops filter; otherwise it uses a dummy 2678 2678 count of “<span class="quote">one</span>”. Some print files do not pass it (e.g., image files), but then those are mostly … … 2684 2684 accounting done. If the printer is a non-PostScript model, you need to let CUPS do the job to convert the file 2685 2685 to a print-ready format for the target printer. This is currently working for about a thousand different 2686 printer models. Linuxprinting.org has a driver <a href="http://www.linuxprinting.org/printer_list.cgi" target="_top">list</a>.2687 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 06265"></a>Adobe and CUPS PostScript Drivers for Windows Clients</h3></div></div></div><p>2688 <a class="indexterm" name="id4 06273"></a>2689 <a class="indexterm" name="id4 06279"></a>2690 <a class="indexterm" name="id4 06286"></a>2691 <a class="indexterm" name="id4 06293"></a>2692 <a class="indexterm" name="id4 06300"></a>2686 printer models. Linuxprinting.org has a driver <a class="ulink" href="http://www.linuxprinting.org/printer_list.cgi" target="_top">list</a>. 2687 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id429818"></a>Adobe and CUPS PostScript Drivers for Windows Clients</h3></div></div></div><p> 2688 <a class="indexterm" name="id429826"></a> 2689 <a class="indexterm" name="id429833"></a> 2690 <a class="indexterm" name="id429840"></a> 2691 <a class="indexterm" name="id429846"></a> 2692 <a class="indexterm" name="id429853"></a> 2693 2693 Before CUPS 1.1.16, your only option was to use the Adobe PostScript driver on the Windows clients. The output 2694 2694 of this driver was not always passed through the <code class="literal">pstops</code> filter on the CUPS/Samba side, and … … 2701 2701 <code class="filename">cups-samba-1.1.16.tar.gz</code> package). It does <span class="emphasis"><em>not</em></span> work for Windows 2702 2702 9x/Me clients, but it guarantees: 2703 </p><div class="itemizedlist"><ul type="disc"><li><p> <a class="indexterm" name="id4 06354"></a> To not write a PJL-header.</p></li><li><p>To still read and support all PJL-options named in the2703 </p><div class="itemizedlist"><ul type="disc"><li><p> <a class="indexterm" name="id429908"></a> To not write a PJL-header.</p></li><li><p>To still read and support all PJL-options named in the 2704 2704 driver PPD with its own means.</p></li><li><p>That the file will pass through the <code class="literal">pstops</code> filter 2705 2705 on the CUPS/Samba server.</p></li><li><p>To page-count correctly the print file.</p></li></ul></div><p> 2706 2706 You can read more about the setup of this combination in the man page for <code class="literal">cupsaddsmb</code> (which 2707 2707 is only present with CUPS installed, and only current from CUPS 1.1.16). 2708 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 06396"></a>The page_log File Syntax</h3></div></div></div><p>2709 <a class="indexterm" name="id4 06403"></a>2708 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id429949"></a>The page_log File Syntax</h3></div></div></div><p> 2709 <a class="indexterm" name="id429957"></a> 2710 2710 These are the items CUPS logs in the <code class="filename">page_log</code> for every page of a job: 2711 2711 </p><div class="itemizedlist"><ul type="disc"><li><p>Printer name</p></li><li><p>User name</p></li><li><p>Job ID</p></li><li><p>Time of printing</p></li><li><p>Page number</p></li><li><p>Number of copies</p></li><li><p>A billing information string (optional)</p></li><li><p>The host that sent the job (included since version 1.1.19)</p></li></ul></div><p> … … 2725 2725 from IP address <code class="constant">10.160.51.33</code>, printed from one page 440 copies, and 2726 2726 is set to be billed to <em class="parameter"><code>finance-dep</code></em>. 2727 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 06532"></a>Possible Shortcomings</h3></div></div></div><p>2727 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id430085"></a>Possible Shortcomings</h3></div></div></div><p> 2728 2728 What flaws or shortcomings are there with this quota system? 2729 2729 </p><div class="itemizedlist"><ul type="disc"><li><p>The ones named above (wrongly logged job in case of … … 2739 2739 still be able to send and print a 1,000 sheet job.</p></li><li><p>A user being denied a job because of a filled-up quota 2740 2740 does not get a meaningful error message from CUPS other than 2741 “<span class="quote">client-error-not-possible</span>”.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 06590"></a>Future Developments</h3></div></div></div><p>2741 “<span class="quote">client-error-not-possible</span>”.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id430143"></a>Future Developments</h3></div></div></div><p> 2742 2742 This is the best system currently available, and there are huge 2743 2743 improvements under development for CUPS 1.2: … … 2747 2747 stop in the counting).</p></li><li><p>Quotas will be handled more flexibly.</p></li><li><p>Probably there will be support for users to inquire 2748 2748 about their accounts in advance.</p></li><li><p>Probably there will be support for some other tools 2749 around this topic.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 06625"></a>Other Accounting Tools</h3></div></div></div><p>2749 around this topic.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id430178"></a>Other Accounting Tools</h3></div></div></div><p> 2750 2750 Other accounting tools that can be used includes: PrintAnalyzer, pyKota, printbill, LogReport. 2751 2751 For more information regarding these tools you can try a Google search. 2752 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 06637"></a>Additional Material</h2></div></div></div><p>2752 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id430191"></a>Additional Material</h2></div></div></div><p> 2753 2753 A printer queue with <span class="emphasis"><em>no</em></span> PPD associated to it is a 2754 2754 “<span class="quote">raw</span>” printer, and all files will go directly there as received by the … … 2829 2829 to load the proper paper type before running the 10,000 page job 2830 2830 requested by marketing for the mailing, and so on). 2831 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 06826"></a>Autodeletion or Preservation of CUPS Spool Files</h2></div></div></div><p>2832 <a class="indexterm" name="id4 06834"></a>2833 <a class="indexterm" name="id4 06840"></a>2834 <a class="indexterm" name="id4 06847"></a>2831 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id430379"></a>Autodeletion or Preservation of CUPS Spool Files</h2></div></div></div><p> 2832 <a class="indexterm" name="id430387"></a> 2833 <a class="indexterm" name="id430394"></a> 2834 <a class="indexterm" name="id430401"></a> 2835 2835 Samba print files pass through two spool directories. One is the incoming directory managed by Samba (set in 2836 the <a class=" indexterm" name="id406855"></a>path = /var/spool/sambadirective in the <em class="parameter"><code>[printers]</code></em> section of <code class="filename">smb.conf</code>). The other is the spool directory of your UNIX print subsystem. For2836 the <a class="link" href="smb.conf.5.html#PATH">path = /var/spool/samba</a> directive in the <em class="parameter"><code>[printers]</code></em> section of <code class="filename">smb.conf</code>). The other is the spool directory of your UNIX print subsystem. For 2837 2837 CUPS it is normally <code class="filename">/var/spool/cups/</code>, as set by the <code class="filename">cupsd.conf</code> 2838 2838 directive <code class="filename">RequestRoot /var/spool/cups</code>. 2839 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 06894"></a>CUPS Configuration Settings Explained</h3></div></div></div><p>2839 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id430451"></a>CUPS Configuration Settings Explained</h3></div></div></div><p> 2840 2840 Some important parameter settings in the CUPS configuration file 2841 2841 <code class="filename">cupsd.conf</code> are: … … 2861 2861 (There are also additional settings for <em class="parameter"><code>MaxJobsPerUser</code></em> and 2862 2862 <em class="parameter"><code>MaxJobsPerPrinter</code></em>.) 2863 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 06971"></a>Preconditions</h3></div></div></div><p>2863 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id430528"></a>Preconditions</h3></div></div></div><p> 2864 2864 For everything to work as it should, you need to have three things: 2865 2865 </p><div class="itemizedlist"><ul type="disc"><li><p>A Samba smbd that is compiled against <code class="filename">libcups</code> (check 2866 2866 on Linux by running <strong class="userinput"><code>ldd `which smbd'</code></strong>).</p></li><li><p>A Samba-<code class="filename">smb.conf</code> setting of 2867 <a class=" indexterm" name="id407008"></a>printing = cups.</p></li><li><p>Another Samba <code class="filename">smb.conf</code> setting of2868 <a class=" indexterm" name="id407026"></a>printcap = cups.</p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>2867 <a class="link" href="smb.conf.5.html#PRINTING">printing = cups</a>.</p></li><li><p>Another Samba <code class="filename">smb.conf</code> setting of 2868 <a class="link" href="smb.conf.5.html#PRINTCAP">printcap = cups</a>.</p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 2869 2869 In this case, all other manually set printing-related commands (like 2870 <a class=" indexterm" name="id407039"></a>print command,2871 <a class=" indexterm" name="id407046"></a>lpq command,2872 <a class=" indexterm" name="id407053"></a>lprm command,2873 <a class=" indexterm" name="id407060"></a>lppause command, and2874 <a class=" indexterm" name="id407067"></a>lpresume command) are ignored, and they should normally have no2870 <a class="link" href="smb.conf.5.html#PRINTCOMMAND">print command</a>, 2871 <a class="link" href="smb.conf.5.html#LPQCOMMAND">lpq command</a>, 2872 <a class="link" href="smb.conf.5.html#LPRMCOMMAND">lprm command</a>, 2873 <a class="link" href="smb.conf.5.html#LPPAUSECOMMAND">lppause command</a>, and 2874 <a class="link" href="smb.conf.5.html#LPRESUMECOMMAND">lpresume command</a>) are ignored, and they should normally have no 2875 2875 influence whatsoever on your printing. 2876 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07077"></a>Manual Configuration</h3></div></div></div><p>2877 If you want to do things manually, replace the <a class=" indexterm" name="id407086"></a>printing = cups2878 by <a class=" indexterm" name="id407093"></a>printing = bsd. Then your manually set commands may work2879 (I haven't tested this), and a <a class=" indexterm" name="id407100"></a>print command = lp -d %P %s; rm %s2876 </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id430657"></a>Manual Configuration</h3></div></div></div><p> 2877 If you want to do things manually, replace the <a class="link" href="smb.conf.5.html#PRINTING">printing = cups</a> 2878 by <a class="link" href="smb.conf.5.html#PRINTING">printing = bsd</a>. Then your manually set commands may work 2879 (I haven't tested this), and a <a class="link" href="smb.conf.5.html#PRINTCOMMAND">print command = lp -d %P %s; rm %s</a> 2880 2880 may do what you need. 2881 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 07111"></a>Printing from CUPS to Windows-Attached Printers</h2></div></div></div><p>2882 <a class="indexterm" name="id4 07119"></a>2883 <a class="indexterm" name="id4 07126"></a>2881 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id430701"></a>Printing from CUPS to Windows-Attached Printers</h2></div></div></div><p> 2882 <a class="indexterm" name="id430709"></a> 2883 <a class="indexterm" name="id430715"></a> 2884 2884 From time to time the question arises, how can you print <span class="emphasis"><em>to</em></span> a Windows-attached printer 2885 2885 <span class="emphasis"><em>from</em></span> Samba? Normally the local connection from Windows host to printer would be done by … … 2916 2916 <code class="prompt">root# </code><strong class="userinput"><code>ln -s `which smbspool` /usr/lib/cups/backend/smb</code></strong> 2917 2917 </pre><p> 2918 <a class="indexterm" name="id4 07234"></a>2919 <a class="indexterm" name="id4 07241"></a>2918 <a class="indexterm" name="id430824"></a> 2919 <a class="indexterm" name="id430831"></a> 2920 2920 <code class="literal">smbspool</code> was written by Mike Sweet from the CUPS folks. It is included and ships with 2921 2921 Samba. It may also be used with print subsystems other than CUPS, to spool jobs to Windows printer shares. To … … 2932 2932 -P /path/to/PPD</code></strong> 2933 2933 </pre><p> 2934 <a class="indexterm" name="id4 07294"></a>2935 <a class="indexterm" name="id4 07301"></a>2936 <a class="indexterm" name="id4 07307"></a>2934 <a class="indexterm" name="id430883"></a> 2935 <a class="indexterm" name="id430890"></a> 2936 <a class="indexterm" name="id430897"></a> 2937 2937 The PPD must be able to direct CUPS to generate the print data for the target model. For PostScript printers, 2938 2938 just use the PPD that would be used with the Windows NT PostScript driver. But what can you do if the printer … … 2947 2947 feature of CUPS and you do not necessarily need to have smbd running. 2948 2948 2949 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 07368"></a>More CUPS Filtering Chains</h2></div></div></div><p>2950 The diagrams in <a href="CUPS-printing.html#cups1" title="Figure 22.17. Filtering Chain 1.">Filtering Chain 1</a> and <ahref="CUPS-printing.html#cups2" title="Figure 22.18. Filtering Chain with cupsomatic">Filtering Chain with2949 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id430957"></a>More CUPS Filtering Chains</h2></div></div></div><p> 2950 The diagrams in <a class="link" href="CUPS-printing.html#cups1" title="Figure 22.17. Filtering Chain 1.">Filtering Chain 1</a> and <a class="link" href="CUPS-printing.html#cups2" title="Figure 22.18. Filtering Chain with cupsomatic">Filtering Chain with 2951 2951 cupsomatic</a> show how CUPS handles print jobs. 2952 </p><div class="figure"><a name="cups1"></a><p class="title"><b>Figure 22.17. Filtering Chain 1.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/cups1.png" alt="Filtering Chain 1."></div></div></div><br class="figure-break"><div class="figure"><a name="cups2"></a><p class="title"><b>Figure 22.18. Filtering Chain with cupsomatic</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/cups2.png" width="243" alt="Filtering Chain with cupsomatic"></div></div></div><br class="figure-break"></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 07477"></a>Common Errors</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id407482"></a>Windows 9x/Me Client Can't Install Driver</h3></div></div></div><p>For Windows 9x/Me, clients require the printer names to be eight2952 </p><div class="figure"><a name="cups1"></a><p class="title"><b>Figure 22.17. Filtering Chain 1.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/cups1.png" alt="Filtering Chain 1."></div></div></div><br class="figure-break"><div class="figure"><a name="cups2"></a><p class="title"><b>Figure 22.18. Filtering Chain with cupsomatic</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/cups2.png" width="243" alt="Filtering Chain with cupsomatic"></div></div></div><br class="figure-break"></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id431066"></a>Common Errors</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431072"></a>Windows 9x/Me Client Can't Install Driver</h3></div></div></div><p>For Windows 9x/Me, clients require the printer names to be eight 2953 2953 characters (or “<span class="quote">8 plus 3 chars suffix</span>”) max; otherwise, the driver files 2954 will not get transferred when you want to download them from Samba.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="root-ask-loop"></a>“<span class="quote">cupsaddsmb</span>” Keeps Asking for Root Password in Never-ending Loop</h3></div></div></div><p>Have you set <a class=" indexterm" name="id407512"></a>security = user? Have2954 will not get transferred when you want to download them from Samba.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="root-ask-loop"></a>“<span class="quote">cupsaddsmb</span>” Keeps Asking for Root Password in Never-ending Loop</h3></div></div></div><p>Have you set <a class="link" href="smb.conf.5.html#SECURITY">security = user</a>? Have 2955 2955 you used <code class="literal">smbpasswd</code> to give root a Samba account? 2956 2956 You can do two things: open another terminal and execute … … 2961 2961 If the error is “<span class="quote">Tree connect failed: NT_STATUS_BAD_NETWORK_NAME</span>”, 2962 2962 you may have forgotten to create the <code class="filename">/etc/samba/drivers</code> directory. 2963 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07549"></a>“<span class="quote">cupsaddsmb</span>” or “<span class="quote">rpcclient addriver</span>” Emit Error</h3></div></div></div><p>2963 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431141"></a>“<span class="quote">cupsaddsmb</span>” or “<span class="quote">rpcclient addriver</span>” Emit Error</h3></div></div></div><p> 2964 2964 If <code class="literal">cupsaddsmb</code>, or <code class="literal">rpcclient addriver</code> emit the error message 2965 WERR_BAD_PASSWORD, refer to <a href="CUPS-printing.html#root-ask-loop" title="“cupsaddsmb” Keeps Asking for Root Password in Never-ending Loop">the previous common error</a>.2966 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07585"></a>“<span class="quote">cupsaddsmb</span>” Errors</h3></div></div></div><p>2965 WERR_BAD_PASSWORD, refer to <a class="link" href="CUPS-printing.html#root-ask-loop" title="“cupsaddsmb” Keeps Asking for Root Password in Never-ending Loop">the previous common error</a>. 2966 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431178"></a>“<span class="quote">cupsaddsmb</span>” Errors</h3></div></div></div><p> 2967 2967 The use of “<span class="quote">cupsaddsmb</span>” gives “<span class="quote">No PPD file for printer...</span>” 2968 2968 message while PPD file is present. What might the problem be? … … 2975 2975 </p><p>Is your <em class="parameter"><code>TempDir</code></em> directive in 2976 2976 <code class="filename">cupsd.conf</code> set to a valid value, and is it writable? 2977 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07655"></a>Client Can't Connect to Samba Printer</h3></div></div></div><p>Use <code class="literal">smbstatus</code> to check which user2977 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431248"></a>Client Can't Connect to Samba Printer</h3></div></div></div><p>Use <code class="literal">smbstatus</code> to check which user 2978 2978 you are from Samba's point of view. Do you have the privileges to 2979 2979 write into the <em class="parameter"><code>[print$]</code></em> 2980 share?</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07678"></a>New Account Reconnection from Windows 200x/XP Troubles</h3></div></div></div><p>2980 share?</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431271"></a>New Account Reconnection from Windows 200x/XP Troubles</h3></div></div></div><p> 2981 2981 Once you are connected as the wrong user (for example, as <code class="constant">nobody</code>, which often occurs if 2982 you have <a class=" indexterm" name="id407691"></a>map to guest = bad user), Windows Explorer will not accept an2982 you have <a class="link" href="smb.conf.5.html#MAPTOGUEST">map to guest = bad user</a>), Windows Explorer will not accept an 2983 2983 attempt to connect again as a different user. There will not be any bytes transferred on the wire to Samba, 2984 2984 but still you'll see a stupid error message that makes you think Samba has denied access. Use … … 2993 2993 the <span class="guilabel">Network Neighborhood</span>), right-click on the printer in question, and select 2994 2994 <span class="guibutton">Connect....</span>. 2995 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07756"></a>Avoid Being Connected to the Samba Server as the Wrong User</h3></div></div></div><p>2996 <a class="indexterm" name="id4 07764"></a>2995 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431352"></a>Avoid Being Connected to the Samba Server as the Wrong User</h3></div></div></div><p> 2996 <a class="indexterm" name="id431360"></a> 2997 2997 You see per <code class="literal">smbstatus</code> that you are connected as user nobody, but you want to be root or 2998 printer admin. This is probably due to <a class=" indexterm" name="id407778"></a>map to guest = bad user, which2998 printer admin. This is probably due to <a class="link" href="smb.conf.5.html#MAPTOGUEST">map to guest = bad user</a>, which 2999 2999 silently connected you under the guest account when you gave (maybe by accident) an incorrect username. Remove 3000 <a class=" indexterm" name="id407786"></a>map to guestif you want to prevent this.3001 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07795"></a>Upgrading to CUPS Drivers from Adobe Drivers</h3></div></div></div><p>3000 <a class="link" href="smb.conf.5.html#MAPTOGUEST">map to guest</a> if you want to prevent this. 3001 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431398"></a>Upgrading to CUPS Drivers from Adobe Drivers</h3></div></div></div><p> 3002 3002 This information came from a mailing list posting regarding problems experienced when 3003 3003 upgrading from Adobe drivers to CUPS drivers on Microsoft Windows NT/200x/XP clients. 3004 3004 </p><p>First delete all old Adobe-using printers. Then delete all old Adobe drivers. (On Windows 200x/XP, right-click in 3005 3005 the background of <span class="guilabel">Printers</span> folder, select <span class="guimenuitem">Server Properties...</span>, select 3006 tab <span class="guilabel">Drivers</span>, and delete here).</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07830"></a>Can't Use “<span class="quote">cupsaddsmb</span>” on Samba Server, Which Is a PDC</h3></div></div></div><p>Do you use the “<span class="quote">naked</span>” root user name? Try to do it3006 tab <span class="guilabel">Drivers</span>, and delete here).</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431432"></a>Can't Use “<span class="quote">cupsaddsmb</span>” on Samba Server, Which Is a PDC</h3></div></div></div><p>Do you use the “<span class="quote">naked</span>” root user name? Try to do it 3007 3007 this way: <strong class="userinput"><code>cupsaddsmb -U <em class="replaceable"><code>DOMAINNAME</code></em>\\root -v 3008 3008 <em class="replaceable"><code>printername</code></em></code></strong>> (note the two backslashes: the first one is 3009 required to “<span class="quote">escape</span>” the second one).</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07864"></a>Deleted Windows 200x Printer Driver Is Still Shown</h3></div></div></div><p>Deleting a printer on the client will not delete the3009 required to “<span class="quote">escape</span>” the second one).</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431467"></a>Deleted Windows 200x Printer Driver Is Still Shown</h3></div></div></div><p>Deleting a printer on the client will not delete the 3010 3010 driver too (to verify, right-click on the white background of the 3011 3011 <span class="guilabel">Printers</span> folder, select <span class="guimenuitem">Server Properties</span> and click on the … … 3013 3013 install a printer with the same name. If you want to update to a new 3014 3014 driver, delete the old ones first. Deletion is only possible if no 3015 other printer uses the same driver.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07895"></a>Windows 200x/XP Local Security Policies</h3></div></div></div><a class="indexterm" name="id407901"></a><a class="indexterm" name="id407908"></a><p>Local security policies may not allow the installation of unsigned drivers “<span class="quote">local3016 security policies</span>” may not allow the installation of printer drivers at all.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07926"></a>Administrator Cannot Install Printers for All Local Users</h3></div></div></div><p>3017 <a class="indexterm" name="id4 07934"></a>3018 <a class="indexterm" name="id4 07941"></a>3015 other printer uses the same driver.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431498"></a>Windows 200x/XP Local Security Policies</h3></div></div></div><a class="indexterm" name="id431504"></a><a class="indexterm" name="id431510"></a><p>Local security policies may not allow the installation of unsigned drivers “<span class="quote">local 3016 security policies</span>” may not allow the installation of printer drivers at all.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431529"></a>Administrator Cannot Install Printers for All Local Users</h3></div></div></div><p> 3017 <a class="indexterm" name="id431537"></a> 3018 <a class="indexterm" name="id431544"></a> 3019 3019 Windows XP handles SMB printers on a “<span class="quote">per-user</span>” basis. 3020 3020 This means every user needs to install the printer himself or herself. To have a printer available for … … 3022 3022 path of <em class="parameter"><code>http://cupsserver:631/printers/printername</code></em>. We're still looking into this one. 3023 3023 Maybe a logon script could automatically install printers for all users. 3024 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07963"></a>Print Change, Notify Functions on NT Clients</h3></div></div></div><p>For print change, notify functions on NT++ clients. These need to run the <code class="literal">Server</code>3025 service first (renamed to <code class="literal">File & Print Sharing for MS Networks</code> in XP).</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 07987"></a>Win XP-SP1</h3></div></div></div><p>Win XP-SP1 introduced a Point and Print Restriction Policy (this restriction does not apply to3024 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431566"></a>Print Change, Notify Functions on NT Clients</h3></div></div></div><p>For print change, notify functions on NT++ clients. These need to run the <code class="literal">Server</code> 3025 service first (renamed to <code class="literal">File & Print Sharing for MS Networks</code> in XP).</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431589"></a>Win XP-SP1</h3></div></div></div><p>Win XP-SP1 introduced a Point and Print Restriction Policy (this restriction does not apply to 3026 3026 “<span class="quote">Administrator</span>” or “<span class="quote">Power User</span>” groups of users). In Group Policy Object Editor, go 3027 3027 to <span class="guimenu">User Configuration -> Administrative Templates -> Control Panel -> Printers</span>. The policy … … 3030 3030 <code class="constant">Users can only Point and Print to these servers</code> to make driver downloads from Samba 3031 3031 possible. 3032 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 08028"></a>Print Options for All Users Can't Be Set on Windows 200x/XP</h3></div></div></div><p>How are you doing it? I bet the wrong way (it is not easy to find out, though). There are three3032 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431631"></a>Print Options for All Users Can't Be Set on Windows 200x/XP</h3></div></div></div><p>How are you doing it? I bet the wrong way (it is not easy to find out, though). There are three 3033 3033 different ways to bring you to a dialog that <span class="emphasis"><em>seems</em></span> to set everything. All three dialogs 3034 3034 <span class="emphasis"><em>look</em></span> the same, yet only one of them does what you intend. You need to be Administrator or … … 3060 3060 “<span class="quote">C.1. to C.6.</span>”, will save any settings permanently and be the defaults for new users. If you want 3061 3061 all clients to get the same defaults, you need to conduct these steps <span class="emphasis"><em>as Administrator</em></span> 3062 (<a class=" indexterm" name="id408262"></a>printer adminin <code class="filename">smb.conf</code>) <span class="emphasis"><em>before</em></span> a client downloads the3062 (<a class="link" href="smb.conf.5.html#PRINTERADMIN">printer admin</a> in <code class="filename">smb.conf</code>) <span class="emphasis"><em>before</em></span> a client downloads the 3063 3063 driver (the clients can later set their own <span class="emphasis"><em>per-user defaults</em></span> by following the procedures 3064 3064 <span class="emphasis"><em>A</em></span> or <span class="emphasis"><em>B</em></span>). 3065 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 08292"></a>Most Common Blunders in Driver Settings on Windows Clients</h3></div></div></div><p>3065 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431898"></a>Most Common Blunders in Driver Settings on Windows Clients</h3></div></div></div><p> 3066 3066 Don't use <em class="parameter"><code>Optimize for Speed</code></em>, but use <em class="parameter"><code>Optimize for Portability</code></em> 3067 3067 instead (Adobe PS Driver). Don't use <em class="parameter"><code>Page Independence: No</code></em>. Always settle with … … 3070 3070 Driver). For <span class="guilabel">TrueType Download Options</span> choose <code class="constant">Outline</code>. Use 3071 3071 PostScript Level 2 if you are having trouble with a non-PS printer and if there is a choice. 3072 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 08345"></a><code class="literal">cupsaddsmb</code> Does Not Work with Newly Installed Printer</h3></div></div></div><p>3072 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431951"></a><code class="literal">cupsaddsmb</code> Does Not Work with Newly Installed Printer</h3></div></div></div><p> 3073 3073 Symptom: The last command of <code class="literal">cupsaddsmb</code> does not complete successfully. If the <code class="literal">cmd 3074 3074 = setdriver printername printername</code> result was NT_STATUS_UNSUCCESSFUL, then possibly the printer was … … 3076 3076 hostname -c `enumprinters'</code>? Restart smbd (or send a <code class="literal">kill -HUP</code> to all processes 3077 3077 listed by <code class="literal">smbstatus</code>, and try again. 3078 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 08391"></a>Permissions on <code class="filename">/var/spool/samba/</code> Get Reset After Each Reboot</h3></div></div></div><p>3078 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id431997"></a>Permissions on <code class="filename">/var/spool/samba/</code> Get Reset After Each Reboot</h3></div></div></div><p> 3079 3079 Have you ever by accident set the CUPS spool directory to the same location (<em class="parameter"><code>RequestRoot 3080 3080 /var/spool/samba/</code></em> in <code class="filename">cupsd.conf</code> or the other way round: 3081 <code class="filename">/var/spool/cups/</code> is set as <a class=" indexterm" name="id408424"></a>path> in the <em class="parameter"><code>[printers]</code></em> section)? These <em class="parameter"><code>must</code></em> be different. Set <em class="parameter"><code>RequestRoot3082 /var/spool/cups/</code></em> in <code class="filename">cupsd.conf</code> and <a class=" indexterm" name="id408455"></a>path =3083 /var/spool/samba in the <em class="parameter"><code>[printers]</code></em> section of <code class="filename">smb.conf</code>. Otherwise,3081 <code class="filename">/var/spool/cups/</code> is set as <a class="link" href="smb.conf.5.html#PATH">path</a>> in the <em class="parameter"><code>[printers]</code></em> section)? These <em class="parameter"><code>must</code></em> be different. Set <em class="parameter"><code>RequestRoot 3082 /var/spool/cups/</code></em> in <code class="filename">cupsd.conf</code> and <a class="link" href="smb.conf.5.html#PATH">path = 3083 /var/spool/samba</a> in the <em class="parameter"><code>[printers]</code></em> section of <code class="filename">smb.conf</code>. Otherwise, 3084 3084 cupsd will sanitize permissions to its spool directory with each restart and printing will not work reliably. 3085 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 08477"></a>Print Queue Called “<span class="quote">lp</span>” Mishandles Print Jobs</h3></div></div></div><p>3085 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id432090"></a>Print Queue Called “<span class="quote">lp</span>” Mishandles Print Jobs</h3></div></div></div><p> 3086 3086 In this case a print queue called “<span class="quote">lp</span>” intermittently swallows jobs and 3087 3087 spits out completely different ones from what was sent. 3088 3088 </p><p> 3089 <a class="indexterm" name="id4 08496"></a>3090 <a class="indexterm" name="id4 08503"></a>3091 <a class="indexterm" name="id4 08510"></a>3089 <a class="indexterm" name="id432109"></a> 3090 <a class="indexterm" name="id432115"></a> 3091 <a class="indexterm" name="id432122"></a> 3092 3092 It is a bad idea to name any printer “<span class="quote">lp</span>”. This is the traditional UNIX name for the default 3093 3093 printer. CUPS may be set up to do an automatic creation of Implicit Classes. This means, to group all printers … … 3098 3098 <em class="replaceable"><code>printername@cupshost</code></em>, which gives you better control over what may happen in a 3099 3099 large networked environment. 3100 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id4 08540"></a>Location of Adobe PostScript Driver Files for “<span class="quote">cupsaddsmb</span>”</h3></div></div></div><p>3100 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id432153"></a>Location of Adobe PostScript Driver Files for “<span class="quote">cupsaddsmb</span>”</h3></div></div></div><p> 3101 3101 Use <code class="literal">smbclient</code> to connect to any Windows box with a shared PostScript printer: 3102 3102 <code class="literal">smbclient //windowsbox/print\$ -U guest</code>. You can navigate to the … … 3104 3104 <code class="filename">WIN40/0</code> to do the same. Another option is to download the <code class="filename">*.exe</code> 3105 3105 packaged files from the Adobe Web site. 3106 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4 08591"></a>Overview of the CUPS Printing Processes</h2></div></div></div><p>3107 A complete overview of the CUPS printing processes can be found in <a href="CUPS-printing.html#a_small" title="Figure 22.19. CUPS Printing Overview.">the CUPS3106 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id432204"></a>Overview of the CUPS Printing Processes</h2></div></div></div><p> 3107 A complete overview of the CUPS printing processes can be found in <a class="link" href="CUPS-printing.html#a_small" title="Figure 22.19. CUPS Printing Overview.">the CUPS 3108 3108 Printing Overview diagram</a>. 3109 </p><div class="figure"><a name="a_small"></a><p class="title"><b>Figure 22.19. CUPS Printing Overview.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/a_small.png" width="243" alt="CUPS Printing Overview."></div></div></div><br class="figure-break"></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id 398861" href="#id398861">6</a>] </sup>See also <ahref="http://www.cups.org/cups-help.html" target="_top">http://www.cups.org/cups-help.html</a></p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="classicalprinting.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="optional.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="VFS.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 21. Classical Printing Support </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 23. Stackable VFS modules</td></tr></table></div></body></html>3109 </p><div class="figure"><a name="a_small"></a><p class="title"><b>Figure 22.19. CUPS Printing Overview.</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/a_small.png" width="243" alt="CUPS Printing Overview."></div></div></div><br class="figure-break"></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id422411" href="#id422411" class="para">6</a>] </sup>See also <a class="ulink" href="http://www.cups.org/cups-help.html" target="_top">http://www.cups.org/cups-help.html</a></p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="classicalprinting.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="optional.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="VFS.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 21. Classical Printing Support </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 23. Stackable VFS modules</td></tr></table></div></body></html>
Note:
See TracChangeset
for help on using the changeset viewer.