Puppy now has support for a lot of printers, and many printers work with a driver intended for a similar printer, e.g. I have an HP PSC1610, and I can print with the driver for a PSC1600. Once I also got it printing with another HP driver for a printer that wasn't even a PSC, so it is worth trying a few things if you have a printer you would like to get working.
For information about your printer and Linux, a good place to start is http://www.linux-foundation.org/en/OpenPrinting.
HPLIP (see Billwho?'s third post) is a big package for (mostly) HP printers, that works with CUPS, and as well as providing drivers and utilities for monitoring ink levels and stuff, enables scanning. This is great news for all of us with HP PSCs. Apparently it should work in Puppy from at least version 2.14 (try earlier versions too, and post your experience).
HPIJS HP Printer Drivers This package only contains printer drivers allowing printers to only print.
"I don't know if CUPS is configured to see Windows printers or no?
If this is a standalone networked printer, it depends on what protocol it is using to advertise itself. If it is connected to a desktop machine and declared as a Windows shared printer, CUPS does not automatically detect it. You have to install it manually using the smb: protocol."
Printing to a printer on another computer on your network
If you want to print to a linux compatible printer (i.e. you have a driver, so you can install it if you connect it to your Puppy machine), shared from a Windows computer, go to http://localhost:631 the CUPS configuration page to add a new printer. Under device, specify "windows printer via SAMBA", and for the URI: smb://exact-name-or-IP-address-of-computer-attached-to-the-printer/exact-name-of-printer using the names as shown in LinNeighborhood. Choose the printer make and model, and you should be away. Prior to Puppy 3, you might (I'm not sure) need to download and extract smbspool to /usr/bin. To ensure Puppy automatically sees the printer, you probably need to add the URI as a line at the end of /etc/rc.d/rc.local. If you have a version of Puppy older than 2.17, and do not want to install CUPS, see here.
To print to a printer that is connected to another computer running Puppy, either read the 3rd post here, or if you've installed the full version of Samba on the "server", you can share the printer through Samba, and then connect to it the same way as to a Windows printer:
Sharing the printer connected to your Puppy computer, so that other computers (Windows or Linux) can print to it
To use SAMBA and CUPS, to share a printer just like Windows does: http://murga-linux.com/puppy/viewtopic.php?t=22363
If you do not have CUPS, I think it is still supposed to be trivial, but I don't know how :)
I believe you can also share a printer with other Linux (and maybe Windows) computers without having SAMBA :)
Printing to a printer other than default
Many programs like Seamonkey allow you to choose a printer when you print. For those that don't, like Leafpad, you print to the default printer with the lpr command, but you can print to another printer with a custom command. For example, I have two printers, called hp and CUPS-PDF. I can specify a printer with the command lpr -P hp or lpr -P CUPS-PDF.
Other printing options
Printing some pages of a document:
lpr -o page-ranges=1-4,7,9-12
lpr -o page-set=odd
lpr -o page-set=even
Printing pages in reverse order:
lpr -o outputorder=reverse
Printing more than one page to a sheet:
lpr -o number-up=1
lpr -o number-up=2
lpr -o number-up=4
lpr -o number-up=16
There are all sorts of other options (see the CUPS manual mentioned below - if you have CUPS). You would combine options like this:
lpr -P hp -o page-ranges=1,3-9 outputorder=reverse number-up=2
CUPS Printing (default in Puppies from version 2.17)
From version 2.17, PDQ has been replaced by CUPS printing (Barry is talking about having both as some people say CUPS won't work for them). If you want CUPS in an older Puppy, Pakt created a CUPS dotpup. It is large (19MB), and cannot be uninstalled. It works even with very old Puppies (at least back to 1.04).
CUPS is an industrial strength application, so is has lots more functionality than most people need. You should be able to get to the software users manual from the web interface, but if Barry has taken the docs out of Puppy send me (disciple) a message on the forum and I'll post the important stuff here or on the forum. Most of what you want starts here - mostly sections 2 and 3.
CUPS administration is usually done in a web browser at http://localhost:631/admin, but there is a small GTK gui called GTKLP. This seems much more convenient, but cannot be used to add printers. It also includes GTKLPQ for managing printer queues. I don't know if Barry will add GTKLP to Puppy.
Printing to pdf
PDF is a file format that almost everyone with a computer can read, and that looks virtually identical regardless of the software and OS that you read it in. Because of this, it is good for distributing files for other people to see, but very few people can edit it, as it is essentially a read-only format. Some people that don't have a printer in Puppy print to pdf and then print the pdfs to paper from a Windows computer.
From Puppy 2.16 onwards, Puppy has included the ability to print to PDF files, and jcoder's PDF printersfor both PDQ and CUPS (thanks jcoder!) can be installed in even very old Puppies (at least Grafpup 104, but read the thread for Puppy 1.x, as you need to edit the file slightly). This works like any printer - you choose to print to the PDF printer, and it asks you what to save the file as. If you have problems, (e.g. when you click cancel, the print job stays queued and the printer is stopped, so you have to go into CUPS and turn it back on) check that you have the latest version, as there were issues with early versions. There have been some great feature improvements as well. Note that when printing to pdf you should not check any boxes labelled "print to file". This is a feature provided by many programs that bypasses whatever printer is selected, and prints the file as a postscript file (similar to jcoder's PDF printers, but converting to ps rather than pdf).
Q - When I print from xxx program (eg Seamonkey, Firefox) and select a paper size, it does not work!
A - at least sometimes (with CUPS anyway) you have to set the correct page size in CUPS, otherwise what you print will either just come out at the size set in CUPS, or will be scaled down to the size you specify, but be put on the paper size specified in CUPS. This is noticeable when printing to PDF. The solution is to set the right page size for the printer in CUPS.
The following information is quite old, and may no longer be relevant
::'Q: Printing problem'
I ran the Printer Wizard and I can now print from Firefox, Xpaint and Abiword, but I can't print a plain text file, nor Postscript or PDF files.
'A:' Printing support in Puppy is a work-in-progress. For now, the PDQ print manager handles Postscript files only, to any kind of printer, Postscript or otherwise. Firefox, Xpaint and Abiword convert to Postscript before sending to the PDQ print manager (note, the program lpr is a link to program pdq).
You also need to check to see if your printer is supported in linux by checking linuxprinting.org
Sylpheed, the email client, can also print its plain text emails, as it has been configured to call a little program, /usr/bin/lprshell, which is invoked like this:
# lprshell myfile.txt
lprshell uses Abiword in commandline mode to convert plain text or RTF files to Postscript then print via PDQ. You can also use this script directly to print any plain text or RTF file (printout has the same page layout and font that Abiword is setup for).
If you have a Postscript file, you can open the Xpdq manager and choose the file, then print it (see Utilities menu).
If you have a Postscript or PDF file, open Gsview (also known as Ghostview) from the Utilities menu (or just click on the file in Rox), choose File/Print, choose a generic Postscript printer such as "psmono", check the "Postscript printer" checkbox, the number of pages to print, then print.
Note that the print-dialog box in Gsview brings up a large list of printers, however these are not used in Puppy. These are printers supported by the Ghostscript package, however Puppy is configured to use the GIMP-Print IJS drivers and you will have already chosen a printer IJS driver when you ran the Printer Wizard (and PDQ would have been setup to use this printer as default). So, just choosing a generic Postscript printer in GSview will pass the Postscript file onto PDQ which will print to whatever is your default printer.
If XPDQ doesn't cut it for you there are now dotpups available for installing CUPS, the Common Unix Printing System which brings support for many more printers. (Edit - I don't think it does generally if you have a recent Puppy)
If you have a printer that is not linux friendly you should still be able to print to it if it is connected to a windows computer on your network, by following the instructions at GenericSharedPostscriptPrinterOnWindows.