Printing on Linux

printing itself requires software that converts information from application you are using to a language your printer can understand.

The Linux standard for printing software is the Common UNIX Printing System (CUPS)

Modern Linux desktop systems make installing and administering printers simple and intuitive.
Nevertheless, it is instructive to understand the underpinnings of how it is done in Linux.

CUPS Overview

CUPS interprets page descriptions produced by your application (put a paragraph here, draw a line there, and so forth) and then sends the information to the printer. it acts as a print server for both local and network printers.

Printers manufactured by different companies may use thire own particular print lnagues and formats. CUPS uses a modular printing system that accommodates a wide variety printers and also processes various data formats.

Configuration Files

cupsd.conf and printers.conf

all other CUPS-related configuration files are stored under the /etc/cups

cupsd.conf is where most system-wide settings are located. it does not contain any printer-specific details.
most of the settings available in this file relate to network security

printers.conf is where you will find the printer-specific settings.

Job Files

/var/spool/cups commonly known as print queues

Log Files

/var/log/cups/ directory contains logfile that is used by scheduler to record activities that have taken place.

Filters, Printer Drivers, and Backends

CUPS uses filters to convert job file formats to printable formats. Printer drivers contain descriptions for currently connected / configured printers,
and are usually store under /etc/cups/ppd/.

The print data is then sent to the printer through a filter, and via backend that helps to locate devices connected to the system.