Printing is not complicated:
So in general all that is needed apart from a queueing system is a way for PDF or PostScript to be rendered or left alone, and then for a way to send the data to the printer.
The rest of this document is mostly about the spooler CUPS and related tools, because it is by far the most complicated, and underdocumented (and most common unfortunately), but it also covers more general issues.
is designed to be
user friendly (actually
developer job security friendly) so all this is done in as
complicated and fragile a way as possible by using a creepy web
frontend that actually edits files under /etc/:
filterto use to convert it to another format, usually another page language or a printer language, for example raster or PDF or PostScript.
filter. The lpinfo -m command lists drivers and the printers they support.
Future releases of CUPS will only support IPP
Everywhere printers, which must
support as page languages JPEG, PWG raster and PDF
and therefore CUPS will become
CUPS printer drivers and backends are deprecated and will no longer be supported in a future feature release of CUPS. Printers that do not support IPP can be supported using applications such as ippeveprinter(1).
The critical details are:
backendfor the printer, in the example usb and the identification is passwd to the backend so it can send the printer language data
driverto use to convert the page language to the printer language and the expected type of the page language. For example these describe printer drivers that can directly accept PDF or PostScript:
*cupsFilter: "application/vnd.cups-pdf 0 foomatic-rip" *cupsFilter: "application/vnd.cups-postscript 100 foomatic-rip"
*cupsFilter: "application/vnd.cups-raster 0 /usr/lib/cups/filter/epson-escpr-wrapper" *cupsFilter: "application/vnd.cups-raster 0 hpcups"
PCL comes in several different levels and dialects for HP printers, and many other printer manufacturers offer PCL compatibility. The most common PCL level are PCL5 and PCL6.
This is the first printer language for IBM PC-compatible printers, as the first printer for that was an EPSON printer with this command language. It also comes in several variants and levels, of which the most common is ESC/P-R.
This is the printer language for Kyocera printers and it is somewhat similar in concept to PostScript. The most common level seems to be version 3.
This section is about document processors in their role of converters from some document language to some page language rather than in general.
Renders can be divided in high-level renderers, that translate a page language into a similarly high-level printer language, and low-level renderers also called rasterizers that translate a page language into a bit or pixel raster, for those printers that do not have a built-in rasterizer, or their rasterizer is too limited in speed or memory.