[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
slackbook:printing [2012/09/09 01:45 (UTC)] – created with section headings mfillpotslackbook:printing [2012/12/29 21:58 (UTC)] (current) – [Getting the driver] escaflown
Line 3: Line 3:
  
 ===== Choosing A Printer ===== ===== Choosing A Printer =====
 +
 +Linux hasn't always had a great history with printers. For many years,
 +printing was a black art to many Linux users, and very few printers
 +worked reliably. Today, most printers will work well with Linux, but
 +some still do not. If you're purchasing a new printer, be aware that
 +many of the cheap inkjet models aren't as well supported in Linux as
 +more expensive laser printers. If you're unsure about a printer, you
 +can check online to see if others have had success with it.
 +
 +
 +All these warnings are perhaps a bit overkill though, as the large
 +majority of printers work with Linux after only a brief and simple
 +setup. The progress in this direction is largely due to the efforts of
 +the Common UNIX Printing System, (CUPS). CUPS is a printing system used
 +by Slackware and most other Linux distributions today. It primarily uses
 +a graphical setup procedure accessed via a web browser. In order to
 +setup a printer with CUPS, you'll need to open a web browser such as
 +firefox, konqueror, or links and go to 
 +[[ http://localhost:631|http://localhost:631]].
 +
 +
 +{{ :slackbook:cups-01.png?850 |Choosing a Printer}}
 +
 +You might find that a quick click-through of CUPS configures your
 +printer nearly automatically. Or, you may find that further
 +configuration is required. To learn more about how printing works or
 +how to get a stubborn printer configured, read on.
 ===== Getting the driver ===== ===== Getting the driver =====
 +
 +There are, essentially, three types of printer drivers:
 +
 +
 +  - Postscript printers use the universal-ish language of Postscript to communicate with computers.  A driver for postscript printers is usually not needed, since a postscript-compatible subsystem called **//Ghostscript//** is already installed.
 +  - Gutenprint are drivers engineered by GNU Linux developers. It provides support for roughly 700 printers.
 +  - Manufacturers may provide Linux drivers for their printers. Find out by going to the manufacturer's driver and support website and searching for your model.
 +
 +
 +Since **//gutenprint//** is already installed on Slackware, from this set of three categories, we have two methods of installing drivers:
 +
 +
 +  - For the manufacturer's drivers, installation is usually the same as any other software on your system; use **//installpkg//** or **//rpm2tgz//** to install the driver package. Be sure to read the documentation bundled with the drivers.
 +  - For Postscript printers, there is no "installation" as such; simply download the appropriate ''PPD'' file and keep it in a sensible location on your hard drive.
 +
 +
 +Once you've located and installed or downloaded the necessary components, you're ready to run **//CUPS//**.
 ===== Setting Up a Printer in CUPS ===== ===== Setting Up a Printer in CUPS =====
 +
 +From this point onward, setting up a printer is just a series of
 +following the step-by-step instructions with CUPS, but understanding
 +how the printing configuration actually works might help clarify
 +what CUPS does is doing.
 +
 +
 +The file ''/etc/cups/printers.conf''
 +consists of definitions which detail the printing devices your
 +computer will be able to access, with one marked as the default
 +device.  If you wish to edit this file manually (and you probably
 +don't), you must stop the **//cupsd//**
 +**//CUPS//** daemon.
 +
 +
 +A typical entry would look something like this:
 +
 +
 +<file>
 +
 +<Printer r1060>
 +Info Ricoh 1060
 +Location Downstairs
 +MakeModel Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.6
 +DeviceURI lpd://192.168.4.8
 +State Idle
 +StateTime 1316011347
 +Type 12308
 +Filter application/vnd.cups-raw 0 -
 +Filter application/vnd.cups-raster 100 rastertogutenprint.5.2
 +# standard-ish stuff below here
 +Accepting Yes
 +Shared No
 +JobSheets none none
 +QuotaPeriod 0
 +PageLimit 0
 +KLimit 0
 +OpPolicy default
 +ErrorPolicy stop-printer
 +</Printer>
 +</file>
 +
 +
 +In this example, we have given the printer the name
 +r1060, a human-readable identifier
 +Ricoh 1060.
 +
 +
 +The MakeModel attribute is gained from
 +**//lpinfo//**, which lists all available
 +printer drivers on your system.  So, if you know that you have a
 +Ricoh 1060 that you want to print to, then you would issue this
 +command as root:
 +
 +    
 +<code>
 +
 +darkstar:~# lpinfo -m | grep 1060
 +</code>
 +
 +
 +This lists the drivers that you have installed, grepping for the
 +string 1060:
 +
 +
 +<file>
 +
 +gutenprint.5.2://brother-hl-1060/expert Brother HL-1060 - CUPS+Gutenprint v5.2.6
 +gutenprint.5.2://ricoh-afc_1060/expert Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.6
 +</file>
 +
 +
 +The MakeModel is the last half of the
 +appropriate result; in this case Ricoh Aficio 1060 -
 +CUPS+Gutenprint v5.2.6
 +
 +
 +The final vital entry is the device URI, or where on the network
 +(or physical location, such as the USB port), the printer
 +can be found.  In this example, we use DeviceURI
 +lpd: <nowiki>// </nowiki>192.168.4.8 because we are using the
 +**//lpd//** (line printer daemon)
 +protocol to send data to the printer.
 +
 +
 +Now you understand what is being configured, and you can use the
 +more common (and easier) method of doing this from the
 +configuration tool that runs inside of a web browser.
 +
 +
 +In the CUPS interface, choose the **Administration**
 +tab, and choose to **Add Printer**.  You should
 +be asked to enter administrative authorization here; enter
 +root as the admin and your root
 +password.
 +
 +
 +You will be presented with a list of printer interfaces and
 +protocols that you can use for a printer.  In many cases, you will
 +want to add the printer via the
 +**//LPD/LPR//** protocol (unless you've
 +managed to find a printer that requires some other protocol).
 +
 +
 +Note that if the printer is plugged directly into your computer, and
 +is on, you should see it listed as a Local Printer.
 +
 +
 +Assuming the printer is networked, the next screen will ask for the
 +location of the printer.  Using lpd: <nowiki>// </nowiki> as the protocol,
 +enter the IP address of the printer.  To find the IP address of the
 +printer, you will probably need to look at the printer&#39;s
 +settings, or you may be able to determine it from your router.
 +
 +
 +Whether your printer is connected via USB or network, the following
 +screen will ask for human-readable details about the printer; this
 +is for your reference only, so enter a name for the printer that
 +makes sense to you and your users (the model number
 +usually), a description (something that is distinctive about
 +the printer if you have more than one of the same printers), and
 +the location (describing where it is in the building).
 +
 +
 +On the next screen, point CUPS to the printer driver.  If the
 +printer is a postscript printer (as most laserprinters are)
 +then you may need only the ''PPD'' for that
 +printer. If your printer is not postscript or has special features
 +that require additional drivers, then define the make
 +(manufacturer) and you will then be presented with a list of
 +available drivers.  Select the appropriate driver.
 +
 +
 +The printer is now installed and will be the default printer for all
 +of your applications.
 ===== Printing from the Command Line ===== ===== Printing from the Command Line =====
 +
 +Now that you have successfully installed and configured your
 +printer, you may also use **//lpr//** to print
 +from the command line.
 +
 +
 +**//lpr//** sends documents to a printer but
 +before using it, you might want to define a default printer by
 +using **//lpadmin//** as root:
 +
 +
 +<code>
 +# lpadmin -d r1060
 +</code>
 +
 +  
 +In this example, r1060 is the human
 +readable name given to the printer in either
 +''/etc/cups/printers.conf'' or in
 +the **//CUPS//** configuration.
 +
 +
 +<note>
 +If you do not have root privileges on the workstation you are
 +using, you can also set the PRINTER
 +environment variable:
 +
 +    $ PRINTER=r1060
 +    $ export PRINTER
 +</note>
 +
 +Once the printer has been set, then you may print:
 +
 +
 +<code>
 +$ lpr foo.txt
 +</code>
 ==== Formatting for Print ==== ==== Formatting for Print ====
  
 +**//lpr//**, like so many other UNIX
 +applications, does one thig: sends files to a printer. It
 +doesn't much care if the file looks good or even fits on a
 +page. When printing large text files that have not been
 +formatted for print, use **//pr//**(1).
 +
 +
 +**//pr//** is a simple text formatter that
 +takes any text document and makes sure that it contains line
 +breaks and page breaks, with an optional header and footer, page
 +numbering, and much more. It has many options, but the defaults
 +are usually good enough. **//pr//** outputs
 +the results of the formatting to standard out, meaning it simply
 +takes the text document, formats it, and displays the results in
 +the terminal.  This, of course, means that it can be redirected
 +to **//lpr//**:
 +
 +
 +<code>
 +darkstar:~$ pr foo.txt | lpr
 +</code>
 +
 +  
 +This will format ''foo.txt'' and send the
 +formatted output to the default printer.
 +
 +
 +As usual, see the **//pr//** man page for a
 +list of the customizations you can make to the default formatting.
 ====== Chapter Navigation ====== ====== Chapter Navigation ======
  
Line 17: Line 262:
 ====== Sources ====== ====== Sources ======
 <!-- If you copy information from another source, then specify that source --> <!-- If you copy information from another source, then specify that source -->
- * Original source: [[http://www.slackbook.org/beta]] \\+  * Original source: [[http://www.slackbook.org/beta]] \\
 <!-- Authors are allowed to give credit to themselves! --> <!-- Authors are allowed to give credit to themselves! -->
- * Originally written by Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson+  * Originally written by Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson
 <!-- * Contrbutions by [[wiki:user:yyy | User Y]] --> <!-- * Contrbutions by [[wiki:user:yyy | User Y]] -->
  
 slackbook:printing ()