# Printing

ACLs

  Abbreviation for &emstart;A&emend;ccess &emstart;C&emend;ontrol &emstart;L&emend;ists; ACLs are used to check for the access by a given (authenticated) user. A first rough support for ACLs for printing is available from &CUPS;; this will be refined in future versions.

  Authentication
AppSocket Protocol

  AppSocket is a protocol for the transfer of print data, also frequently called "Direct TCP/IP Printing". &Hewlett-Packard; have taken AppSocket, added a few minor extensions around it and been very successful in renaming and marketing it under the brand "&HP; JetDirect"...

  &HP; JetDirect Protocol
  Direct TCP/IP Printing
Authentication

  Proving the identity of a certain person (maybe via username/password or by means of a certificate) is often called authentication. Once you are authenticated, you may or may not get access to a requested resource, possibly based on ACLs.

  ACLs
Bi-directional communication

  In the context of printing, a server or a host may receive additional information sent back from the printer (status messages &etc;), either upon a query or unrequested. AppSocket ( = &HP; JetDirect), &CUPS; and IPP support bi-directional communication, LPR/LPD and BSD-style printing do not...

  AppSocket Protocol
  &CUPS;
  Direct TCP/IP Printing
  &HP; JetDirect
  IPP
  LPR/LPD
BSD-style Printing

  Generic term for different variants of the traditional &UNIX; printing method. Its first version appeared in the early 70s on BSD &UNIX; and was formally described in &linkstart;"https://www.ietf.org/rfc/rfc1179.txt"&linkmid;RFC 1179&linkend; only as late as 1990.&newpara; At the time when BSD "remote" printing was first designed, printers were serially or otherwise directly connected devices to a host (with the Internet hardly consisting of more than 100 nodes!); printers used hole-punched, continuous paper, fed through by a tractor mechanism, with simple rows of ASCII text mechanically hammered on to the medium, drawn from a cardboard box beneath the table. It came out like a zig-zag folded paper "snake". Remote printing consisted of a neighboring host in the next room sending a file asking for printout.&newpara; How technology has changed! Printers generally use cut-sheet media, they have built-in intelligence to compute the raster images of pages after pages that are sent to them using one of the powerful page description languages (PDL). Many are network nodes in their own right, with CPU, RAM, a hard disk and their own Operation System, and are hooked to a net with potentially millions of users...&newpara; It is a vast proof of the flexible &UNIX; concept for doing things, that it made "Line Printing" reliably work even under these modern conditions. But time has finally come now to go for something new -- the IPP.

  IPP
  &CUPS;
  LPR/LPD printing
&CUPS;

  Abbreviation for &emstart;C&emend;ommon &emstart;U&emend;NIX &emstart;P&emend;rinting &emstart;S&emend;ystem; &CUPS; is the most modern &UNIX; and Linux printing system, also providing cross-platform print services to &Microsoft; &Windows; and Apple &macOS; clients. Based on IPP, it does away with all the pitfalls of old-style BSD printing, providing authentication, encryption and ACLs, plus many more features. At the same time it is backward-compatible enough to serve all legacy clients that are not yet up to IPP, via LPR/LPD (BSD-style).&newpara; &CUPS; is able to control any &PostScript; printer by utilizing the vendor-supplied PPD (PostScript Printer Description file), targeted originally for &Microsoft; Windows NT printing only. &kde; Printing is most powerful if based on &CUPS;.&newpara; More info:&newpara; &linkstart;"https://www.cups.org"&linkmid;&CUPS; Homepage&linkend;

  ACLs
  Authentication
  BSD-style printing
  IPP
  LPR/LPD
  PPD
&CUPS;-FAQ

  &linkstart;"https://www.cups.org/faq.html"&linkmid;&CUPS;-FAQ&linkend; is a valuable resource to answer many questions that anyone new to &CUPS; printing might have at first.

Daemon

  Abbreviation for &emstart;D&emend;isk &emstart;a&emend;nd &emstart;e&emend;xecution &emstart;mon&emend;itor; Daemons are present on all &UNIX; systems to perform tasks independent of user intervention. Readers more familiar with &Microsoft; &Windows; might want to compare daemons and the tasks they are responsible with "services".&newpara; One example of a daemon present on most legacy &UNIX; systems is the LPD (Line Printer Daemon); &CUPS; is widely seen as the successor to LPD in the &UNIX; world and it also operates through a daemon.

  SPOOLing
Database, Linuxprinting.org

  Already years ago, when Linux printing was still really difficult (only command line printing was known to most Linux users, no device specific print options were available for doing the jobs), Grant Taylor, author of the "Linux Printing HOWTO", collected most of the available information about printers, drivers and filters in his database.&newpara; With the emerging &CUPS; concept, extending the use of PPDs even to non-PostScript printers, he realized the potential of this database: if one puts the different datablobs (with content that could be described along the lines "Which device prints with which Ghostscript or other filter?", "How well?", and "What command line switches are available?") into PPD-compatible files, he could have all the power of &CUPS; on top of the traditional printer "drivers".&newpara; This has now developed into a broader concept, known as "Foomatic". Foomatic extends the capabilities of spoolers other than &CUPS; (LPR/LPD, LPRng, PDQ, PPR) to a certain degree ("stealing" some concepts from &CUPS;). The Linuxprinting Database is not a Linux-only stop -- people running other &UNIX; based OSes (like *BSD or &macOS;) will also find valuable information and software there.

  Foomatic
  Linuxprinting database
Direct TCP/IP Printing

  This is a method that often uses TCP/IP port 9100 to connect to the printer. It works with many modern network printers and has a few advantages over LPR/LPD, as it is faster and provides some "backchannel feedback data" from the printer to the host sending the job.

  AppSocket Protocol
  &HP; JetDirect Protocol
Drivers, Printer Drivers

  The term "printer drivers", used in the same sense as on the &Microsoft; &Windows; platform, is not entirely applicable to a Linux or &UNIX; platform. A "driver" functionality is supplied on &UNIX; by different modular components working together. At the core of the printer drivers are "filters". Filters convert print files from a given input format to another format that is acceptable to the target printer. In many cases filters may be connected to a whole filter "chain", where only the result of the last conversion is sent to the printer. The actual transfer of the print data to the device is performed by a "backend".

  Filter
  PPDs
Encryption

  Encryption of confidential data is an all-important issue if you transfer it over the Internet or even within intranets.&newpara; Printing via traditional protocols is not encrypted at all -- it is very easy to tap and eavesdrop &eg; into &PostScript; or PCL data transferred over the wire.&newpara; Therefore, in the design of IPP, provision was made for the easy plugin of encryption mechanisms (which can be provided by the same means as the encryption standards for HTTP traffic: SSL and TLS).

  Authentication
  &CUPS;
  IPP
  SSL
  TLS
Epson

  Epson inkjets are among the best supported models by Free software drivers, as the company was not necessarily as secretive about their devices and handed technical specification documents to developers. The excellent print quality achieved by Gimp-Print on the Stylus series of printers can be attributed to this openness.

Escape Sequences

  The first ever printers printed ASCII data only. To initiate a new line, or eject a page, they included special command sequences, often carrying a leading [ESC]-character. &HP; evolved this concept through its series of PCL language editions until today, having now developed a full-blown Page Description Language (PDL) from these humble beginnings.

  PCL
  PDL
ESC/P

  Abbreviation for &emstart;E&emend;pson &emstart;S&emend;tandard &emstart;C&emend;odes for &emstart;P&emend;rinters. Besides &PostScript; and PCL, Epson's ESC/P printer language is one of the best known.

  PCL
  &PostScript;
  hpgl
Filter

  Filters, in general, are programs that take some input data, work on it and pass it on as their output data. Filters may or may not change the data.&newpara; Filters in the context of printing, are programs that convert a given file (destined for printing, but not suitable in the format it is presently) into a printable format. Sometimes whole "filter chains" have to be constructed to achieve the goal, piping the output of one filter as the input to the next.

  Ghostscript
  RIP
Foomatic

  Foomatic started out as the wrapper name for a set of different tools available from &linkstart;"https://wiki.linuxfoundation.org/openprinting/database/foomatic"&linkmid;Linuxprinting.org&linkend; These tools aimed to make the usage of traditional Ghostscript and other print filters easier for users and extend the filters' capabilities by adding more command line switches or explain the driver's execution data.&newpara; More recently, Foomatic gravitated towards becoming a "meta-spooling" system, that allows configuration of the underlying print subsystem through a unified set of commands (however, this is much more complicated than &kde; printing &GUI; interface, which performs a similar task with regards to different print subsystems).

Ghostscript

  Ghostscript is a an interpreter for the &PostScript; language and for PDF or Raster Image Processor (RIP) in software, originally developed by L. Peter Deutsch. There is always a GPL version of Ghostscript available for free usage and distribution. Ghostscript is widely used inside the Linux and &UNIX; world for transforming &PostScript; into raster data suitable for sending to non-&PostScript; devices. More info: &linkstart;"https://www.ghostscript.com/"&linkmid;Ghostscript Homepage&linkend;

  &PostScript;
  RIP
Gimp-Print

  Contrary to its name, Gimp-Print is no longer just the plugin to be used for printing from the popular Gimp program -- its codebase can also serve to be compiled into...&newpara; ...a set of PPDs and associated filters that integrate seamlessly into &CUPS;, supporting around 130 different printer models, providing photographic output quality in many cases;&newpara; ...a Ghostscript filter that can be used with any other program that needs a software-RIP;&newpara; ...a library that can be used by other software applications in need of rasterization functions.

  Lexmark Drivers
  RIP
  Ghostscript
&HP;

  Abbreviation for &emstart;H&emend;ewlett-&emstart;Packard&emend;; one of the first companies to distribute their own Linux printer drivers. -- More recently, the Company has released their "HPIJS" package of drivers, including source code and a Free license. This is the first printer manufacturer to do so. HPIJS supports most current models of HP Ink- and DeskJets.

&HP;/GL

  Abbreviation for &emstart;&HP;&emend; &emstart;G&emend;raphical &emstart;L&emend;anguage; a &HP; printer language mainly used for plotters; many CAD (Computer Aided Design) software programs output &HP;/GL files for printing.

  ESC/P
  PCL
  &PostScript;
&HP; JetDirect Protocol

  A term branded by &HP; to describe their implementation of print data transfer to the printer via an otherwise "AppSocket" or "Direct TCP/IP Printing" named protocol.

  AppSocket Protocol
  Direct TCP/IP Printing
IETF

  Abbreviation for &emstart;I&emend;nternet &emstart;E&emend;ngineering &emstart;T&emend;ask &emstart;F&emend;orce; an assembly of Internet, software and hardware experts that discuss new networking technologies and very often arrive at conclusions that are regarded by many as standards. "TCP/IP" is the most famous example.&newpara; IETF standards, as well as drafts, discussions, ideas and useful tutorials, are put in writing in the famous series of "RFCs", which are available to the public and included in most Linux and BSD distributions.

  IPP
  PWG
  RFC
IPP

  Abbreviation for &emstart;I&emend;nternet &emstart;P&emend;rinting &emstart;P&emend;rotocol; defined in a series of RFCs accepted by the IETF with status "proposed standard"; was designed by the PWG. -- IPP is a completely new design for network printing, but it utilizes a very well-known and proven method for the actual data transfer: HTTP 1.1! By not "re-inventing the wheel", and basing itself on an existing and robust Internet standard, IPP is able to relatively easily bolt other HTTP-compatible standard mechanisms into its framework:&newpara;

  Basic, Digest or Certificate authentication mechanisms&newpara; SSL or TLS for encryption of transferred data&newpara; LDAP for directory services (to publish data on printers, device-options, drivers, costs to the network; or to check for passwords while conducting authentication)

  &CUPS;
  PWG
  IETF
  RFC
  TLS
Lexmark

  was one of the first companies to distribute their own Linux printer drivers for some of their models. However, those drivers are binary only (no source code available), and therefore cannot be used to integrate into other Free printing software projects.

Linuxprinting.org

  Linuxprinting.org = not just for Linux; all &UNIX;-like OS-es, like *BSD and commercial Unices may find useful printing information on this site. This web site is the home for the interesting Foomatic project, that strives to develop the "Meta Print Spool and Driver Configuration Toolset" (being able to configure, through one common interface, different print subsystems and their required drivers) with the ability to transfer all queues, printers and configuration files seamlessly to another spooler without new configuration effort. -- Also, they maintain the Printing Database; a collection of driver and device information that enables everybody to find the most current information about printer models, and also generate online the configuration files for any spooler/driver/device combo known to work with one of the common Linux or &UNIX; print subsystems.

  Linuxprinting database
Linuxprinting.org Database

  &linkstart;"https://www.openprinting.org/printers"&linkmid;Database&linkend; containing printers and drivers that are suitable for them. More info: &linkstart;"https://wiki.linuxfoundation.org/openprinting/database/indexfaq"&linkmid;Linuxprinting.org FAQ&linkend;

  Foomatic
LPR/LPD printing

  LPR == some people translate &emstart;L&emend;ine &emstart;P&emend;rinting &emstart;R&emend;equest, others: &emstart;L&emend;ine &emstart;P&emend;rinter &emstart;R&emend;emote.

  BSD-style printing
&MIME;-Types

  Abbreviation for &emstart;M&emend;ultipurpose (or Multimedia) &emstart;I&emend;nternet &emstart;M&emend;ail &emstart;E&emend;xtensions; &MIME;-Types were first used to allow the transport of binary data (like mail attachments containing graphics) over mail connections that were normally only transmitting ASCII characters: the data had to be encoded into an ASCII representation.&newpara; Later this concept was extended to describe a data format in a platform independent, but at the same time non-ambiguous, way. From &Windows; everybody knows the .doc extensions for &Microsoft; Word files. This is handled ambiguously on the &Windows; platform: .doc extensions are also used for simple text files or for Adobe Framemaker files. And if a real Word file is renamed with a different extension, it can no longer be opened by the program.&newpara; &MIME; typed files carry a recognition string with them, describing their file format based on &emstart;main_category/sub_category&emend;. Inside IPP, print files are also described using the &MIME; type scheme. &MIME; types are registered with the IANA (Internet Assigning Numbers &emstart;Association&emend;) to keep them unambiguous.&newpara; &CUPS; has some &MIME; types of its own registered, like &emstart;application/vnd.cups-raster&emend; (for the &CUPS;-internal raster image format).

  &CUPS;
  Gimp-Print
PCL

  Abbreviation for &emstart;P&emend;rinter &emstart;C&emend;ontrol &emstart;L&emend;anguage; developed by &HP;. PCL started off in version 1 as a simple command set for ASCII printing; now, in its versions PCL6 and PCL-X, it is capable of printing graphics and color -- but outside the &Microsoft; &Windows; realm and &HP-UX; (&HP;'s own brand of &UNIX;), it is not commonly used...

  ESC/P
  &HP;/GL
  PDL
  &PostScript;
PDL

  Abbreviation for &emstart;P&emend;age &emstart;D&emend;escription &emstart;L&emend;anguage; PDLs describe, in an abstract way, the graphical representation of a page. - Before it is actually transferred into toner or ink laid down on to paper, a PDL needs to be "interpreted" first. In &UNIX;, the most important PDL is &PostScript;.

  ESC/P
  &HP;/GL
  PCL
  &PostScript;
Pixel

  Abbreviation for &emstart;Pic&emend;ture &emstart;El&emend;ement; this term describes the smallest part of a raster picture (either as printed on paper or as displayed on a monitor by cathode rays or LCD elements). As any graphical or image representation on those types of output devices is composed of pixels, the values of "ppi" (pixel per inch) and &dpi; (dots per inch) are one important parameter for the overall quality and resolution of an image.

  Filter
  Ghostscript
  &PostScript;
  Raster
PJL

  Abbreviation for &emstart;P&emend;rint &emstart;J&emend;ob &emstart;L&emend;anguage; developed by &HP; to control and influence default and per-job settings of a printer. It may not only be used for &HP;'s own (PCL-)printers; also many &PostScript; and other printers understand PJL commands sent to them inside a print job, or in a separate signal.

  PCL
&PostScript;

  &PostScript; (often shortened to "PS") is the de-facto standard in the &UNIX; world for printing files. It was developed by Adobe and licensed to printer manufacturers and software companies.&newpara; As the &PostScript; specifications were published by Adobe, there are also "Third Party" implementations of &PostScript; generating and &PostScript; interpreting software available (one of the best-known in the Free software world being Ghostscript, a powerful PS-interpreter).

  ESC/P
  &HP;/GL
  PCL
  PPD
PPD

  Abbreviation for &emstart;P&emend;ostScript &emstart;P&emend;rinter &emstart;D&emend;escription; PPDs are ASCII files storing all information about the special capabilities of a printer, plus definitions of the (PostScript- or PJL-) commands to call on a certain capability (like print duplexing).&newpara; As the explanation of the acronym reveals, PPDs were originally only used for &PostScript; printers. &CUPS; has extended the PPD concept to all types of printers.&newpara; PPDs for &PostScript; printers are provided by the printer vendors. They can be used with &CUPS; and &kde; printing subsystem to have access to the full features of any &PostScript; printer. The &kde; Team recommends using a PPD originally intended for use with &Microsoft; Windows NT.&newpara; PPDs for non-PostScript printers &emstart;need&emend; a companion "filter" to process the &PostScript; print files into a format digestible for the non-PostScript target device. Those PPD/filter combos are not (yet) available from the vendors. After the initiative by the &CUPS; developers to utilize PPDs, the Free Software community was creative enough to quickly come up with support for most of the currently used printer models, through PPDs and classical Ghostscript filters. But note: the printout quality varies from "hi-quality photographic output" (using Gimp-Print with most Epson inkjets) to "hardly readable" (using Foomatic-enabled Ghostscript filters for models rated as "paperweight" in the Linuxprinting.org database).

  &CUPS;
  Linuxprinting.org
  &PostScript;
printcap

  In BSD-style print systems, the "printcap" file holds the configuration information; the printing daemon reads this file to determine which printers are available, what filters are to be user for each, where the spooling folder is located, if there are banner pages to be used, and so on... Some applications also depend on read access to the printcap file, to obtain the names of available printers.

  BSD-style printing
Printer-MIB

  Abbreviation for &emstart;Printer&emend;-&emstart;M&emend;anagement &emstart;I&emend;nformation &emstart;B&emend;ase; the Printer-MIB defines a set of parameters that are to be stored inside the printer for access through the network. This is useful if many (in some cases, literally thousands) network printers are managed centrally with the help of SNMP (Simple Network Management Protocol).

  PWG
  SNMP
PWG

  Abbreviation for &emstart;P&emend;rinter &emstart;W&emend;orking &emstart;G&emend;roup; the PWG is a loose grouping of representatives of the printer industry that has, in the past years, developed different standards in relation to network printing. These were later accepted by the IETF as RFC standards, like the "Printer-MIB" and the IPP.

  &PostScript;
  IPP
  Printer-MIB
  SNMP
Printer Database

  Good database of printer drivers can be found at &linkstart;"https://www.openprinting.org/printers"&linkmid;https://www.openprinting.org/printers&linkend;.

  Linuxprinting Database
Raster Image

  Every picture on a physical medium is composed of a pattern of discrete dots in different colors and (maybe) sizes. This is called a "raster image".&newpara; This is as opposed to a "vector image" where the graphic is described in terms of continuous curves, shades, forms and filled areas, represented by mathematical formula. Vector images normally have a smaller file size and may be scaled in size without any loss of information and quality --- but they cannot be output directly, but always have to be "rendered" or "rasterized" first to the given resolution that the output device is capable of...&newpara; The rasterization is done by a Raster Image Processor (RIP, often the Ghostscript software) or some other filtering instance.

  Pixel
  Ghostscript
  &PostScript;
  Filter
  RIP
RIP

  Abbreviation for &emstart;R&emend;aster &emstart;I&emend;mage &emstart;P&emend;rocess(or); if used in the context of printing, "RIP" means a hardware or software instance that converts &PostScript; (or other print formats that are represented in one of the non-Raster PDLs) into a raster image format in such a way that it is acceptable for the "marking engine" of the printer.&newpara; &PostScript; printers contain their own PostScript-RIPs. A RIP may or may not be located inside a printer.&newpara; For many &UNIX; systems, Ghostscript is the package that provides a "RIP in software", running on the host computer, and pre-digesting the &PostScript; or other data to become ready to be sent to the printing device (hence you may perceive a "grain of truth" in the slogan "Ghostscript turns your printer into a &PostScript; machine", which of course is not correct in the true sense of the meaning).

  Filter
  Ghostscript
  &PostScript;
  PDL
  Raster
RLPR (Remote LPR)

  Abbreviation for &emstart;R&emend;emote &emstart;L&emend;ine &emstart;P&emend;rinting &emstart;R&emend;equest; this is a BSD-style printing system, that needs no root privileges to be installed, and no "printcap" to work: all parameters may be specified on the command line.&newpara; RLPR comes in handy for many laptop users who are working in frequently changing environments. This is because it may be installed concurrently with every other printing sub system, and allows a very flexible and quick way to install a printer for direct access via LPR/LPD.

  printcap
SNMP

  Abbreviation for &emstart;S&emend;imple &emstart;N&emend;etwork &emstart;M&emend;anagement &emstart;P&emend;rotocol; SNMP is widely used to control all types of network node (Hosts, Routers, Switches, Gateways, Printers...) remotely.

  PWG
  Printer-MIB
SSL(3) encryption

  Abbreviation for &emstart;S&emend;ecure &emstart;S&emend;ocket &emstart;L&emend;ayer; SSL is a proprietary encryption method for data transfer over HTTP that was developed by Netscape. It is now being replaced by an IETF standard named TLS.

  TLS
SPOOLing

  Abbreviation for &emstart;S&emend;ynchronous &emstart;P&emend;eripheral &emstart;O&emend;perations &emstart;O&emend;n&emstart;L&emend;ine; SPOOLing enables printing applications (and users) to continue their work as the job is being taken care of by a system daemon, which stores the file at a temporary location until the printer is ready to print.

  Daemon
TLS encryption

  Abbreviation for &emstart;T&emend;ransport &emstart;L&emend;ayer &emstart;S&emend;ecurity; TLS is an encryption standard for data transferred over HTTP 1.1; it is defined in RFC 2246; although based on the former SSL development (from Netscape) it is not fully compatible with it.

  SSL(3)
System V-style printing

  This is the second flavor of traditional &UNIX; printing (as opposed to BSD-style printing). It uses a different command set (lp, lpadmin,...) to BSD, but is not fundamentally different from it. However, the gap between the two is big enough to make the two incompatible, so that a BSD-client cannot simply print to a System V style print server without additional tweaking... IPP is supposed to resolve this weakness and more.

  BSD-style printing
  IPP
TurboPrint

  Shareware software providing photo quality printing for many inkjet printers. It is useful if you are unable to find a driver for your printer and may be hooked into either a traditional Ghostscript system or a modern &CUPS; system.

  Gimp-Print
XPP

  Abbreviation for &emstart;X&emend; &emstart;P&emend;rinting &emstart;P&emend;anel; XPP was the first Free graphical print command for &CUPS;, written by Till Kamppeter, and in some ways a model for the "kprinter" utility in &kde; 3.