Postscript (PS) and PCL (Printer Command Language) are printer languages known as Page Description Languages (PDLs) supported by the majority of printers for interpreting and printing jobs. These two PDLs are alternate models developed by Adobe and HP respectively. ASCII is a printer language which PCL is an extension of. PJL is another type of printer language for controlling features. Win(dos) or GDI printers are generally incompatible with BSD's or Linux. Printers that let the software from the computer run them completely are referred to as dumb printers.
Many programs simply output data as Postscript. A filter is often needed for different types of output formats (separate from the printer language), even when the printer understands the same printer language as a program's output (such as Postscript). Output formats that need to be converted to a printer language include: dvi, Fortran and Raster.
LPD (Printer Daemon) also known as LPR is the default with FreeBSD. LPRng and CUPS are successors to this legacy protocol, which have their own implementations of LPD included. These three programs use and can alter printcap(5). LPR and LPRng are both described by RFC 1179 (not as a standard). LPD and CUPS daemons can be enabled through rc.conf.
CUPS and Ghostscript are separate methods that make PCL printers usable from Postscript output. Ghostscript can be used with LPR (LPD) or LPRng.
Devices
For printer devices: ulpt and unlpt are for USB, sio and cuau are for serial, cuaU is for serial connected by USB, and ppc and lpt are for parallel ports. These can be viewed with
IPP
IPP (Internet Printing Protocol) defined by RFC 2910 and RFC 2911 uses port 631. This protocol has more advanced features than LPD. IPPS is the secure form for connections through SSL. IPP is open for future compatibility with 3D printers, fax and scanner use.
LPD (LPR)
LPR requires manual set up through custom shell scripts of filters to convert plain text or other types of data, even between Postscript outputs to Postscript able printers. print/a2ps can simplify this task of converting ASCII to Postscript output. print/apsfilter is a tool to simplify printcap configuration for LPR.
LPRng
LPRng (LPR Next Generation) is an advanced replacement for LPR, and is an alternative to CUPS. It is under the GPL and Artistic licenses. IFHP determines the format and does conversions, including by use of Ghostscript. LPRng takes care of format conversions through its filters, and of Postscript output through Ghostscript. LPRng was designed to be more secure than LPR.
CUPS
CUPS provides uniform printer drivers for BSD's, Mac OSX and Linux. PPD (Postscript Printer Description) are drivers available in CUPS that convert Postscript to a format that specific models of non-Postscript printers can read. This framework supports more printers than LPR. PCL printers are supported under CUPS. CUPS is under the Apache license.
IPP is the default protocol that CUPS uses. In addition to IPP, CUPS also has protocol support for: LPD, SMB (Server Message Block) and HP Direct Jet. CUPS through IPP can be accessed by http:// 127.0.0.1:631. This framework shouldn't be addressed remotely through CUPS as buffer overflows can expose root. Passwords are also transferred unencrypted.
print/cups-fxlinuxprint is a CUPS driver for Fuji/Xerox printers. print/cups-splix is a CUPS driver for printers that use the Samsung Printer Language (SPL), including some Xerox models. Other CUPS drivers or PPD's for specific printers: print/min12xxw, print/dymo-cups-drivers and print/okc321.
Ghostscript
Ghostscript (under AGPL) can convert Postscript outputs to printer languages which specific non-Postscript printers can interpret. In addition to PCL, Ghostscript makes ESC printers functional. LPR can be set up to make use of Ghostscript. LPRng includes Ghostscript for printer language conversion too.
GhostViewer (print/gv) is a program for viewing Postscript output on the screen.
Alternate printing methods
LibreOffice and Apache Open Office likely provide their own drivers, so printing from here likely has to be set up independently, from an already working LPR or CUPS set up. OpenOffice which is now succeeded by these two programs worked this way. It's worth looking into if default printer options can be changed in LibreOffice.
Gimp uses Gutenprint (formerly Gimp-Print) for its plugin and drivers. Gutenprint is made for use with CUPS and Ghostscript. There's the possibility that additional setting up is required from an already working set up that prints from other programs.
Epson uses ESC as its printer language: print/epson-inkjet-printer-escpr. For Brother laser printers that don't support PCL or Postscript there's print/brlaser. print/foo2zjs is for Minolta (and XQX) printers that use Raster. I'm unsure of the functioning status of these drivers in ports.
HPLIP drivers haven't been mentioned so far. Samba is an advanced topic that also hasn't been addressed here.
References:
* FreeBSD 6 Unleashed (out of date, but still has relevance)
* Network Administration with FreeBSD 7
* linuxjournal.com/article/6729
* etutorials.org/Linux+systems/red+hat+linux+bible+fedora+enterprise+edition/Part+IV+Red+Hat+Linux+Network+and+Server+Setup/Chapter+17+Setting+Up+a+Print+Server/Choosing+CUPS+or+LPRng+Print+Services/
* cups.org
* lprng.com
* pw.org/ipp
* other documentation
Further reading
http://www.wonkity.com/~wblock/docs/html/lpdprinting.html
Many programs simply output data as Postscript. A filter is often needed for different types of output formats (separate from the printer language), even when the printer understands the same printer language as a program's output (such as Postscript). Output formats that need to be converted to a printer language include: dvi, Fortran and Raster.
LPD (Printer Daemon) also known as LPR is the default with FreeBSD. LPRng and CUPS are successors to this legacy protocol, which have their own implementations of LPD included. These three programs use and can alter printcap(5). LPR and LPRng are both described by RFC 1179 (not as a standard). LPD and CUPS daemons can be enabled through rc.conf.
CUPS and Ghostscript are separate methods that make PCL printers usable from Postscript output. Ghostscript can be used with LPR (LPD) or LPRng.
Devices
For printer devices: ulpt and unlpt are for USB, sio and cuau are for serial, cuaU is for serial connected by USB, and ppc and lpt are for parallel ports. These can be viewed with
dmesg
.IPP
IPP (Internet Printing Protocol) defined by RFC 2910 and RFC 2911 uses port 631. This protocol has more advanced features than LPD. IPPS is the secure form for connections through SSL. IPP is open for future compatibility with 3D printers, fax and scanner use.
LPD (LPR)
LPR requires manual set up through custom shell scripts of filters to convert plain text or other types of data, even between Postscript outputs to Postscript able printers. print/a2ps can simplify this task of converting ASCII to Postscript output. print/apsfilter is a tool to simplify printcap configuration for LPR.
LPRng
LPRng (LPR Next Generation) is an advanced replacement for LPR, and is an alternative to CUPS. It is under the GPL and Artistic licenses. IFHP determines the format and does conversions, including by use of Ghostscript. LPRng takes care of format conversions through its filters, and of Postscript output through Ghostscript. LPRng was designed to be more secure than LPR.
CUPS
CUPS provides uniform printer drivers for BSD's, Mac OSX and Linux. PPD (Postscript Printer Description) are drivers available in CUPS that convert Postscript to a format that specific models of non-Postscript printers can read. This framework supports more printers than LPR. PCL printers are supported under CUPS. CUPS is under the Apache license.
IPP is the default protocol that CUPS uses. In addition to IPP, CUPS also has protocol support for: LPD, SMB (Server Message Block) and HP Direct Jet. CUPS through IPP can be accessed by http:// 127.0.0.1:631. This framework shouldn't be addressed remotely through CUPS as buffer overflows can expose root. Passwords are also transferred unencrypted.
print/cups-fxlinuxprint is a CUPS driver for Fuji/Xerox printers. print/cups-splix is a CUPS driver for printers that use the Samsung Printer Language (SPL), including some Xerox models. Other CUPS drivers or PPD's for specific printers: print/min12xxw, print/dymo-cups-drivers and print/okc321.
Ghostscript
Ghostscript (under AGPL) can convert Postscript outputs to printer languages which specific non-Postscript printers can interpret. In addition to PCL, Ghostscript makes ESC printers functional. LPR can be set up to make use of Ghostscript. LPRng includes Ghostscript for printer language conversion too.
GhostViewer (print/gv) is a program for viewing Postscript output on the screen.
Alternate printing methods
LibreOffice and Apache Open Office likely provide their own drivers, so printing from here likely has to be set up independently, from an already working LPR or CUPS set up. OpenOffice which is now succeeded by these two programs worked this way. It's worth looking into if default printer options can be changed in LibreOffice.
Gimp uses Gutenprint (formerly Gimp-Print) for its plugin and drivers. Gutenprint is made for use with CUPS and Ghostscript. There's the possibility that additional setting up is required from an already working set up that prints from other programs.
Epson uses ESC as its printer language: print/epson-inkjet-printer-escpr. For Brother laser printers that don't support PCL or Postscript there's print/brlaser. print/foo2zjs is for Minolta (and XQX) printers that use Raster. I'm unsure of the functioning status of these drivers in ports.
HPLIP drivers haven't been mentioned so far. Samba is an advanced topic that also hasn't been addressed here.
References:
* FreeBSD 6 Unleashed (out of date, but still has relevance)
* Network Administration with FreeBSD 7
* linuxjournal.com/article/6729
* etutorials.org/Linux+systems/red+hat+linux+bible+fedora+enterprise+edition/Part+IV+Red+Hat+Linux+Network+and+Server+Setup/Chapter+17+Setting+Up+a+Print+Server/Choosing+CUPS+or+LPRng+Print+Services/
* cups.org
* lprng.com
* pw.org/ipp
* other documentation
Further reading
http://www.wonkity.com/~wblock/docs/html/lpdprinting.html