| Introduction | 1 |
| Pt. I | Using CUPS | |
| 1 | Introduction to CUPS | 9 |
| 2 | Building and Installing CUPS | 23 |
| 3 | Setting Up Printers and Classes | 37 |
| 4 | Printing with CUPS | 69 |
| 5 | Server Configuration | 91 |
| 6 | Client Configuration | 109 |
| Pt. II | The Internet Printing Protocol | |
| 7 | Introduction to the Internet Printing Protocol | 121 |
| 8 | Anatomy of an IPP Request | 127 |
| 9 | Printer Objects | 141 |
| 10 | Job Objects | 167 |
| 11 | IPP Subscription Objects | 189 |
| 12 | CUPS Extensions to IPP | 205 |
| Pt. III | Programming with CUPS | |
| 13 | Overview of CUPS Programming | 219 |
| 14 | Using CUPS API Functions | 231 |
| 15 | Sending IPP Requests Using CUPS | 267 |
| 16 | Writing File Filters for CUPS | 303 |
| 17 | Writing Printer Drivers for CUPS | 333 |
| 18 | Writing Backends for CUPS | 363 |
| 19 | Writing Notifiers for CUPS | 373 |
| App. A | Configuration File Directives | 383 |
| App. B | IPP Reference | 427 |
| App. C | CUPS Constants | 435 |
| App. D | CUPS Structures | 453 |
| App. E | CUPS Functions | 463 |
| App. F | Common UNIX Printing System License Agreement | 575 |
| Index | 591 |