Why does my printer cuss me out (#$%&@#%&*@#$) sometimes?

it’s an HP Deskjet 3820. whenever something fails to print due to lack of ink or paper or something, the next time i turn the printer on, it starts frantically printing symbols and spitting out blank pages. a friend of mine has the same type printer; and it does the same thing too.

I have an HP 932c and it will do this, too. I’m thinking that, when you turn it back on after a failed print, it’s clearing its memory.

This is close. but not quite. If you turn the printer off (as opposed to just taking it offline) the printer’s memory is completely cleared.

However, even though the printer’s memory has been cleared by turning off the power, your computer probably still remembers that you were in the middle of printing something, and so it try’s to continue printing when the printer comes back on. This is done by a process called “Print Spooling”. All modern operating systems that I’m aware of (this includes Windows) use print spooling by default.

If you have print spooling active and you turn off the printer to clear a jam, Windows sees that the computer goes offline, and just waits for it to come back. When the printer comes back online, Windows sends the rest of the waiting spool file to the printer, continuing from the point where the printer went offline.

So the question is why is it garbage when it resumes printing and not just the last part of the correct print.

Warning: Long and geeky explanation ahead.

The answer lies in exactly what is being sent to printer to make it print.

In the old days a computer sent a string of numbers to the printer, and each number stood for a single printable character, or a command that the printer understood. Assuming you use one byte for each character, that gave you 256 different single characters or commands you could send. Any single number from 0 to 255 was always interpreted the same way by the printer. The standard ASCII code was one (and probably the most common) way to designate which number stood for which character or code. (Yes, yes, I know this simplified greatly, but it shows the basic premise.)

Now comes more modern printers, and operating systems that understand them, such as Windows. Data is no longer sent to the computer one printable character at a time. Printers use graphics, downloaded fonts, bitmapped fonts, and all kinds of things that essentially mean that in many (if not most) cases, you’re not printing single characters, you’re printing a picture on the page that happens to look like the text you want to print.

Printing graphics or pictures is much more complex than printing text. There are a ton of different ways do it, but most boil down to the fact the we have to figure out some way to tell the printer how to print the picture using a string of 1 byte characters, just like we were printing text. But in this case each number we send doesn’t stand for a specific character, it is a part of the encoded picture.

In order for the printer to correctly interpret the picture, a bunch of “header” information is sent at the beginning of each picture. The printer reads the header stuff, and then knows how to print the stuff that follows.

So you turn the printer off and (as was previously mentioned) the printers memory is cleared. Now you turn the printer back on and Windows starts sending the spool file containing the picture from the point it left off. But wait! What about the header information that tells the printer how to interpret the picture? It’s gone, flushed out of the printers memory.

So the printer falls back to the old fashioned method of trying to interpret the data as a stream of characters, not as a picture. Since the data wasn’t meant to represent characters, odd stuff prints out. Typically this is a fairly random spread of the 256 standard characters and control codes, giving you output that looks like Sarge swearing at Beatle Baily, K%^F#_kk&^$)%&^**lsO.

And this is why your printer swears at you.

okay, so is there something i could do to prevent my printer from wasting valuable ink and paper on wingdings?

Yes.

Simple answer: Turn the printer off, and before turning it back on make sure there are no partially printed spool files waiting to resume printing.

Detailed answer: In Windows there are a couple of ways to do this, and they may differ slightly depending on the printer driver. But here is the general method for Windows 98 and XP.

In Windows 98, Click on Start|Settings|Printers. In Windows XP, click on Start|Printers and Faxes. This will open the printers folder.

In the Printers folder, double the icon for the printer in question. This will open the documents list for that printer.

What you’re looking for on the list is partially printed documents. A partially printed document will show as xxx of xxx in the “Progress” column in Windows 98 or the “Pages” column of Windows XP. Typically a partially printed document will be the top one on the list, but not always.

Click the partially printed document to highlight it, then click on Document|Cancel. This will (not surprisingly) cancel the document so it won’t print. It sometimes takes Windows a minute or two to before the document will disappear from the list, but it should eventually go away. NOTE: Make sure it’s a document you can reprint, when you cancel it it’s gone and will need to be regenerated by the program that printed it.

Once any partially printed documents are gone, or if the document list is empty when you open it, you’re done. Close the document list and printers folder, turn the printer back on and proceed normally. Nothing should start printing when the printer comes back online.

Kudos to RJKUgly for distilling Windows printing down to a few paragraphs. I don’t think I could have done that.

gypsy, you don’t mention your operating system, but I generally give this sequence of steps out to my users having the same problems.

  1. Turn off the printer. (saves paper and ink)

  2. Open up the print spooler for that printer in Windows under Control Panel…Printers and delete all documents printing and queued to print.

  3. Cold boot your computer, meaning shut down Windows normally and power the computer off, then back on.

  4. Turn on your printer after Windows is back up. Reply No or Cancel to any prompt to continue the last print job.

If your printer continues to swear, try repeating the process once more for good measure. If that fails, just recycle the same 3 or four pages through the sheet feeder until the swearing has run its course.

Nice explanation, RJKUgly!

As Horseflesh says, switching off the printer and deleting at least the partially-printed document will usually clear things up. Most times you won’t have to restart, but it wouldn’t hurt.

One thing that wasn’t mentioned here is network printing. (I know it’s probably not relevant to the OP.) If your printer is physically connected to a server and shared from there, the job may be queued on the server instead of on the PC the job came from. Depending on the network setup, you may need to use special software to purge that partial job.

Rebooting the computer is an easy way to stop and start the spooler service in Windows, and the only way in Windows9x. It’s simply the easiest thing to tell a novice user to do.

On of the problems arising from only canceling the currently printing document is that sometimes this will cause the paper to not eject on an inkjet printer, and sometimes cycling the power to the printer is the only way to properly extract it from the feed rollers. Unfortunately, cycling the printer’s power can cause the next document to start swearing at you, again because of the lost header information that RJKUgly mentioned previously.

And what rjk said about network printers. If the print queue resides on a server, that’s where you need to attack the offending document. Laser printers in particular can have large print buffers that won’t necessarily purge on a power cycle. I’ve had to unplug one from the wall before it would stop “swearing”.