Since most consumer printers are now USB, you would have to have a USB driver first. (smile)
There are two types of printers, those that have a main processor and those that don't.
Have you ever wondered why you can buy a HP inkjet printer for 20 USD? Other than the cost of the ink, which is outrageous, there is no money to be made. However, the printer has no main processor. All of the image processing is done by the host before it is sent to the printer. These are called Host-Based printers. This slows down your computer and could degrade the actual image printed. In fact, the manufacture will even put on the labeling, "not intended for .pfd files".
A good printer, which costs more the 20 USD, has a main processor and does all of the image processing on board. These printers may use the PCL protocol.
Fortunately, the USB specifications gives a class that will allow you to find out what type of printer you have and how to communicate with it.
My USB book, other than explaining how to build a USB stack (smile), shows how to communicate with a USB printer, and takes you step by step on printing an actual image to the printer.
Other printers, including non-consumer printers, are networked based and you will need a network driver along with the protocol to send images to that type of printer.
On a different note, and to bring back the day, remember the dot matrix printers? You sent a command and a bitmap to the printer, which would then push out specified pins to create the image. You could print just about anything, in black ink of course, by only sending bitmaps of pins to fire.
Scanners are a different form of communication, which also use USB (smile). Scanners usually use the TWAIN style interface.
Anyway, to print to a printer, you need to make sure you know what type of printer it is and what protocol it uses. Not to discourage anyone from making a wiki page about it, there are many different aspects one would need to know. My book only discusses USB type printers, using the PCL and IEEE 1284 protocols for uni- and bi-directional transports.
If you wish to start, research the PCL and IEEE 1284 protocols.
Ben
http://www.fysnet.net/the_universal_serial_bus.htm